IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher un calendrier sur une ligne


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Par défaut Afficher un calendrier sur une ligne
    Bonsoir,

    Je cherche à afficher les 30 jours du mois sur une ligne genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Janvier 2013
    L M M J V S D L M MJVSDLMMJVSDLMMJVSDLMMJVSDLMMJVSD
    ---1---2---3---4---5---6 ---7---8---9---10---11---12---13 ---14---15---16---1718---19---20 ---21---22---23---24---25---26---27 ---28---29---30---31 ----------------------------------------------------------------
    et je suis partis de ce code que j'ai trouvé sur le net, à l'origine ont générait un tableau mais je l'ai supprimé pour mes besoins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Document sans titre</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    /* les cases avec un lien */
    .cal td a { background:#fff; display:block; text-decoration:none; font-weight:bold; }
    /* un premier style */
    .cal .st1 { font-weight:bold; background:Turquoise; }
    /* un second style */
    .cal .st2 { font-weight:bold; color:Purple; }
    </style>
    </head>
     
    <body>
     <?php 
         $links=array();
         //$links[0] = '-------------- Titre --------------';
         $links[1] = '<a href="fichier1.html">1</a>';
         $links[5] = '<a href="fichier5.html" class="st1">5</a>';
         $links[12] = '<span class="st2">12</span>';
         Calendrier(1, 2013, $links);
     
     
     
     
    function Calendrier($month,$year,$links) {
      $MonthNames = array(1 => "Janvier","Fevrier","Mars","Avril","Mai","Juin",
                   "Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
     
      $monthname = $MonthNames[$month+0];
     
      // on ouvre la table
      echo '';
     
      // Première ligne = mois et année ou link[0]
      $title = array_key_exists(0, $links) ? $links[0] : $monthname.' '.$year;
      echo ''.$title.''."<br>
    ";
     
      // Seconde lignes = initiales des jours de la semaine
      $DayNames = array(" L "," M "," M "," J "," V "," S "," D "," L "," M ","M","J","V","S","D","L","M","M","J","V","S","D","L","M","M","J","V","S","D","L","M","M","J","V","S","D","L","M","M","J","V","S","D");
     foreach ($DayNames as $d) echo $d; echo "<br>";
     
      // On regarde si aujourd'hui est dans ce mois pour mettre un style particulier
      if ($year == date('Y') && $month == date('m'))
        $today = date('d');
      else
        $today = 0;
     
      $time = mktime(0,0,0,$month,1,$year); // timestamp du 1er du mois demandé
      $days_in_month = date('t',$time);     // nombre de jours dans le mois
      $firstday = date('w',$time);          // jour de la semaine du 1er du mois
      if ($firstday == 0) $firstday = 7;    // attention, en php, dimanche = 0
     
      $daycode = 1; // ($daycode % 7) va nous indiquer le jour de la semaine.
                    // on commence par le lundi, c'est-à-dire 1.
     
      // on ouvre une première ligne pour le calendrier proprement dit :
      echo '';
     
      // on met des cases blanches jusqu'à la veille du 1er du mois :
      for ( ; $daycode<$firstday; $daycode++) echo '';
     
      // boucle sur tous les jours du mois :
      for ($numday = 1; $numday <= $days_in_month; $numday++, $daycode++) {
        // si on en est au lundi (sauf le 1er), 
        // on ferme la ligne précédente et on en ouvre une nouvelle 
        if ($daycode%7 == 1 && $numday != 1) echo " ";
        // on ouvre la case (avec un style particulier s'il s'agit d'aujourd'hui)
        echo ($numday == $today ? '' : '---');
        // on affiche le numéro du jour ou le contenu donné par l'utilisateur
        echo (array_key_exists($numday, $links) ? $links[$numday] : $numday);
        // on ferme la case
        echo '';
        }
     
      // on met des cases blanches pour completer la dernière semaine si besoin :
      for ( ; $daycode%7 != 1; $daycode++) echo ' ';
     
      // on ferme la dernière ligne, et la table.
      echo ''; echo "";
      }
    ?>
    Le probleme est que je ne trouve pas comment l'adapter pour tout afficher sur une ligne...

    Merci d'avance pour vos conseils ou vos aides.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $tblJour = array(1=>'Lundi', 2=>'Mardi', 3=>'Mercredi', 4=>'Jeudi', 5=>'Vendredi', 6=>'Samedi', 7=>'Dimanche');
    $mois = 1;
    $annee = 2013;
    $date = new DateTime('2013-' . $mois . '-01');
    $inc = new DateInterval('P1D');
     
    for ($date = new DateTime('2013-01-01'); $date->format('m') == $mois; $date = $date->add($inc)) {
         $ligne_jour[] = substr($tblJour[$date->format('N')],0,1);
         $ligne_date[] = $date->format('d');
     
    }
    echo '<p>' . implode(" ", $ligne_jour) . '</p>';
    echo '<p>' . implode(" ", $ligne_date) . '</p>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Par défaut
    Bonjour,

    Merci pour le bout de code mais ce n'est pas ce que je recherche, ça fonctionne que pour le mois de janvier et les jours s'arretes au 22. Il faut que ça affiche n'importe quel mois, c'est pour ça que j'etais partis depuis un calendrier.

    Je vais essayer de m'en inspirer, merci encore je continue mes recherches.

    Cordialement.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ca fonctionne pour tous les mois et ça ne s'arrête pas au 22.

    octobre 2013 :
    V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S

    01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    Amélioration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ($date; $date->format('m') == $mois; $date = $date->add($inc)) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    juste pour chipoter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
     
    $jours    = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
    $mois     = 1;
    $annee    = 2013;
    $date     = new DateTime("{$annee}-{$mois}-01");
    $calendar = array();
     
    while($date->format('m') == $mois) {
        $calendar[$date->format('d')] = $jours[$date->format('w')][0];
        $date->modify('+1 day');
    }
     
    echo '<p>' . implode(" ", $calendar) . '</p>';
    echo '<p>' . implode(" ", array_keys($calendar)) . '</p>';

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est plus clair, j'aime
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher le code sur une ligne
    Par MartinezGarcia dans le forum Visual Studio
    Réponses: 3
    Dernier message: 06/10/2011, 15h26
  2. Réponses: 3
    Dernier message: 20/05/2007, 23h41
  3. Afficher un datatable sur une ligne
    Par Sebeee dans le forum JSF
    Réponses: 2
    Dernier message: 19/09/2006, 11h07
  4. Afficher les données d'un champ sur une ligne
    Par white-angel dans le forum Access
    Réponses: 6
    Dernier message: 30/08/2006, 11h09
  5. Afficher un calendrier sur une page php
    Par griese dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/06/2006, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo