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 :

[Dates] Ajouter le numéro de la semaine


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut [Non résolu] Ajouter le numéro de la semaine
    Bonjour,

    J'utilise un calendrier que j'ai adapté a mes besoins. (trouvé Ici.

    Je souhaite ajouter une colonne avec les numéros des semaines, mais comme se dernier est fait sous forme de liste, je ne c'est pas comment le faire.

    Voici un bout de code
    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
    		  // Affichage du mois et de l'année
     
              $leCalendrier .= "<div style=\"float:left\"><img src=\"images/calendrier.png\" alt=\"calendrier\" width=\"71px\" height=\"62px\" /></div><h2>&raquo; " . monthNumToName(getMonth($periode)) . " " . getYear($periode) . "</h2><br /><br />";
     
     
              // Affichage des entêtes
              $leCalendrier .= "
    		   <ul id=\"libelle\">
                   \t<li>Lundi</li>
                   \t<li>Mardi</li>
                   \t<li>Mercredi</li>
                   \t<li>Jeudi</li>
                   \t<li>Vendredi</li>
                   \t<li>Samedi</li>
                   \t<li>Dimanche</li>
              </ul>";
              // Tant que l'on n'a pas affecté tous les jours du mois traité
              while ($pas < $nb_jour) {
                   if ($indexe == 1) $leCalendrier .= "\n\t<ul class=\"ligne\">";
                   // Si le jour calendrier == jour de la semaine en cours
                   if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
                        // Si jour calendrier == aujourd'hui
                        $afficheJour =  '  
    							  <a class="date_jour" href="#" onclick="javascript:ahah(\'modules/agenda/agenda.php?date='.Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))).'-'.getMonth($periode).'-'.getYear($periode).'\',\'bloc_right\');">'.Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))).'</a>'  ;
                        if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
                             $class = " class=\"itemCurrentItem\"";
                        }
                        else {
                             // 1 est toujours vrai => on affiche un lien à chaque fois
                             // Affichage des jours avec les liens vers le bloc agenda
                             if (1) {
                                  $class = " class=\"itemExistingItem\"";
                                  $afficheJour =  '  
    							  <a  href="#" onclick="javascript:ahah(\'modules/agenda/agenda.php?date='.Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))).'-'.getMonth($periode).'-'.getYear($periode).'\',\'bloc_right\');">'.Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))).'</a>'  ;
                             }
                             else {
                                  $class = "";
                             }
                        }
     
     
     
    					// Ajout de la case avec la date
                        $leCalendrier .= "\n\t\t<li$class>$afficheJour </li>";
                        $pas++;
                   }
                   //
                   else {
                        // Ajout d'une case vide
                        $leCalendrier .= "\n\t\t<li>&nbsp;</li>";
                   }
                   if ($indexe == 7 && $pas < $nb_jour) { $leCalendrier .= "\n\t</ul>"; $indexe = 1;} else {$indexe++;}
              }
              // Ajustement du tableau
              for ($i = $indexe; $i <= 7; $i++) {
                   $leCalendrier .= "\n\t\t<li>&nbsp;</li>";
              }
              $leCalendrier .= "\n\t</ul><br /><br /><br /><br />\n";
    Merci d'avance :s

  2. #2
    Membre du Club Avatar de StAfX
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Il manque la moitié du code, il faudrait avoir toutes les fonctions pour essayer de déchiffrer tout ça

  3. #3
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Biensur, le voila :

    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
    <?php
     
              // Fonction pour afficher le calendrier
         function showCalendar($periode) {
              $leCalendrier = "";
              // Tableau des valeurs possibles pour un numéro de jour dans la semaine
              $tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
              $nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode), 1, getYear($periode)));
              $pas = 0;
              $indexe = 1;
     
     
    		  // Affichage du mois et de l'année
     
              $leCalendrier .= "<div style=\"float:left\"><img src=\"images/calendrier.png\" alt=\"calendrier\" width=\"71px\" height=\"62px\" /></div><h2>&raquo; " . monthNumToName(getMonth($periode)) . " " . getYear($periode) . "</h2><br /><br />";
     
     
              // Affichage des entêtes
              $leCalendrier .= "<div style=\"background-image: url(images/calendrier_font.png); background-repeat:no-repeat;  height : 160px\" > 
    		   <ul id=\"libelle\">
                   \t<li>Lundi</li>
                   \t<li>Mardi</li>
                   \t<li>Mercredi</li>
                   \t<li>Jeudi</li>
                   \t<li>Vendredi</li>
                   \t<li>Samedi</li>
                   \t<li>Dimanche</li>
              </ul>";
              // Tant que l'on n'a pas affecté tous les jours du mois traité
              while ($pas < $nb_jour) {
                   if ($indexe == 1) $leCalendrier .= "\n\t<ul class=\"ligne\">";
                   // Si le jour calendrier == jour de la semaine en cours
                   if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
                        // Si jour calendrier == aujourd'hui
                        $afficheJour =  '  
    							  <a class="date_jour" href="#" onclick="javascript:ahah(\'modules/agenda/agenda.php?date='.Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))).'-'.getMonth($periode).'-'.getYear($periode).'\',\'bloc_right\');">'.Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))).'</a>'  ;
                        if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
                             $class = " class=\"itemCurrentItem\"";
                        }
                        else {
                             // 1 est toujours vrai => on affiche un lien à chaque fois
                             // Affichage des jours avec les liens vers le bloc agenda
                             if (1) {
                                  $class = " class=\"itemExistingItem\"";
                                  $afficheJour =  '  
    							  <a  href="#" onclick="javascript:ahah(\'modules/agenda/agenda.php?date='.Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))).'-'.getMonth($periode).'-'.getYear($periode).'\',\'bloc_right\');">'.Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))).'</a>'  ;
                             }
                             else {
                                  $class = "";
                             }
                        }
     
     
     
    					// Ajout de la case avec la date
                        $leCalendrier .= "\n\t\t<li$class>$afficheJour </li>";
                        $pas++;
                   }
                   //
                   else {
                        // Ajout d'une case vide
                        $leCalendrier .= "\n\t\t<li>&nbsp;</li>";
                   }
                   if ($indexe == 7 && $pas < $nb_jour) { $leCalendrier .= "\n\t</ul>"; $indexe = 1;} else {$indexe++;}
              }
              // Ajustement du tableau
              for ($i = $indexe; $i <= 7; $i++) {
                   $leCalendrier .= "\n\t\t<li>&nbsp;</li>";
              }
              $leCalendrier .= "\n\t</ul><br /><br /><br /><br /></div>\n";
     
              // Retour de la chaine contenant le Calendrier
              return $leCalendrier;
         }
     
     
     
    ?>

  4. #4
    Membre du Club Avatar de StAfX
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    bonsoir,

    je te parlais des autres fonctions genre getYear... etc, mais je les ai trouvé sur ton lien donc no pb

    Pour ajouter le numéro de la semaine il faut le calculer en calculant d'abord le nombre de semaines écoulées dans l'année... je t'ai fais ça vite fais, j'ai mis le numéro de la semaine (en vrac), à toi de voir comment tu veux le faire apparaitre, mais il suffit de le mettre dans des balises html et le css correspondant... je te laisse faire mais demande si t'as besoin...

    (j'ai indiqué les parties ajoutées par //--> )

    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
    	   // Fonction pour afficher le calendrier
         function showCalendar($periode) {
    			$leCalendrier = "";
              // Tableau des valeurs possibles pour un numéro de jour dans la semaine
    			$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
    			$nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode), 1, getYear($periode)));
    			$pas = 0;
    			$indexe = 1;
     
    //-->			// calcule la première semaine du mois courant
    			$nb_jour_annee = 0;
    			$num_mois = getMonth($periode);
    			for ($i = 1; $i < $num_mois; $i++)	{
    				$nb_jour_annee += Date("t", mktime(0, 0, 0, $i , 1, getYear($periode)));
    			}
    			$semaine = $nb_jour_annee/7;
     
    			$semaine = (int)$semaine;
    			$semaine++;
    				//
     
              // Affichage du mois et de l'année
              $leCalendrier .= "\n\t<h2>&raquo; " . monthNumToName(getMonth($periode)) . " " . getYear($periode) . "</h2>";
              // Affichage des entêtes
              $leCalendrier .= "
              <ul id=\"libelle\">
    				\t<li>L</li>
    				\t<li>M</li>
    				\t<li>M</li>
    				\t<li>J</li>
    				\t<li>V</li>
    				\t<li>S</li>
    				\t<li>D</li>
              </ul>";
     
     
     
              // Tant que l'on n'a pas affecté tous les jours du mois traité
              while ($pas < $nb_jour) {
     
                   if ($indexe == 1) {	$leCalendrier .= "\n\t<ul class=\"ligne\">"
    //-->				// ajoute le numéro de la semaine...
    					$leCalendrier .= "semaine ".$semaine;
    		}
                   // Si le jour calendrier == jour de la semaine en cours
                   if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
                        // Si jour calendrier == aujourd'hui
                        $afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
                        if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
                             $class = " class=\"itemCurrentItem\"";
                        }
                        else {
                             // 1 est toujours vrai => on affiche un lien à chaque fois
                             // A vous de faire les tests nécessaire si vous gérer un agenda par exemple
                             if (1) {
                                  $class = " class=\"itemExistingItem\"";
                                  $afficheJour = "<a href=\"\">" . Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) . "</a>";
                             }
                             else {
                                  $class = "";
                             }
                        }
                        // Ajout de la case avec la date
                        $leCalendrier .= "\n\t\t<li$class>$afficheJour</li>";
                        $pas++;
                   }
                   //
                   else {
                        // Ajout d'une case vide
                        $leCalendrier .= "\n\t\t<li>&nbsp;</li>";
                   }
                   if ($indexe == 7 && $pas < $nb_jour) { 
    					$leCalendrier .= "\n\t</ul>"; $indexe = 1;
    //-->			// incrémente le numéro de la semaine
    					$semaine++; 
    	       } else {$indexe++;}
              }
              // Ajustement du tableau
              for ($i = $indexe; $i <= 7; $i++) {
                   $leCalendrier .= "\n\t\t<li>&nbsp;</li>";
              }
              $leCalendrier .= "\n\t</ul>\n";
     
              // Retour de la chaine contenant le Calendrier
              return $leCalendrier;
         }
    a+

  5. #5
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Merci beaucoup C'est exactement ce que je cherchai à faire !

    Maintenant le petit soucis c'est que le css ne s'applique pas au numéro de semaine.
    Par exemple, je conditionne les numéros dans des div en position absolu (pour essayer) en ajoutant un clin d'oeil du style ajouter un "coucou" dans le div.

    Le résultat est que les "coucou" sont bien en position absolu, mais les numéro de semaine reste avec les numéro des jours de semaine.

    Saurais-tu comment dois-je procéder ?

  6. #6
    Membre du Club Avatar de StAfX
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Excuse moi mais je n'ai pas trop compris l'histoire du "coucou"...

    tu peux remplacer ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $leCalendrier .= "semaine ".$semaine
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $leCalendrier .= '<div id="semaine"> '.$semaine.'</div>';
    (je suppose que c'est ce que tu as fais)... mais quel est le problème exactement??

    est-ce que tu peux me montrer le code de ce que tu as essayé...

    merci.

  7. #7
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Salut ! Désolé pour le temps de réponse

    oubli l'histoire de "coucou" j'avais mis mon div au mauvais endroit.

    Voici maintenant ce que j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //-->// ajoute le numéro de la semaine...
    $leCalendrier .= '<div style="float:right; "> semaine :'.$semaine.'</div>';
    Les semaines se mettent bien a droite mais toujours au dessus des date et non pas a la suite.




    C'est possible de faire en sorte que dans toutes le 8eme cases s'affiche le numéro de la semaine ?

  8. #8
    Membre du Club Avatar de StAfX
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Salut,

    dsl à mon tour pour le retard

    peux tu me donner ton code css également, je regarderai alors si je peux t'aider au plus vite

    A+

  9. #9
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Biensur! merci

    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
    /* + -----------------------------------------------------
    	Styles appliqués au Calendrier
    + ----------------------------------------------------- */
    form
    {
    margin:0px;
     
    }
    .form_calendrier
    {
    float:left;
     
    padding-left :20px;
     
    }
    h2
    {
    font-size:12px;
    }
    #calendrier li{
    	list-style: none;
    	list-style-type: none;
     
    }
     
    #libelle {
    	width: 500px;
    	margin: 0 auto;
    	padding: 0;
     
    }
    .ligne {
    	width: 500px;
    	margin: 0 auto;
    	padding: 0;
     
     
    } 
    /* Cadre des nom des jours */
    #libelle li {
    	text-align:center;
    	float : left;
    	width : 70px;
    	padding-top: 2px;
    	padding-bottom: 2px;
    	margin-bottom: 2px;
    	font-size:10px;
    	list-style-type: none;
    	/* background-color:#B6CFDE;*/
    }
    /* Cadre des numeros des jours */
    .ligne li {
        text-align:center;
    	color: #000;
    	float : left; 
    	width : 69px;/* 70px par defaut sans bordure */
        padding-top: 1px;
    	margin-top:1px;
    	list-style-type: none;
    	/* background-color:#E1E9F1;*/
    	border-right : 1px #ffffff solid;
    }
    /* DIV des numeros des jours*/
    .div_cadre1
    {
    height:18px;
    padding-top:1px;
    }
    .ligne li a
    {
    font-size:10px;
     
    }

  10. #10
    Membre du Club Avatar de StAfX
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Salut,

    Pourquoi dans la feuille de style tu as mis en commentaire les couleurs de fond ?

  11. #11
    Membre du Club Avatar de StAfX
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Voilà, je suis arrivé à quelque chose de présentable,

    il y a quelques explications en commentaires, et je t'ai signalé comme précédemment les modifs dans le php.

    N'hésite pas à me demander les pourquoi du comment, d'ailleurs je te conseille de comprendre l'utilité de chaque attribut, car sinon la moindre modif va s'avérer un vrai calvaire!

    Code php : 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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    <?php
     
    	echo('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    
    	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    	<meta http-equiv="Content-Language" content="fr" />
    	
    
      
    			<title></title>
    
    		<link rel="stylesheet" href="style.css" type="text/css" media="all" />
    		
    </head>
    
    <body>
    ');
     
     
     
     
    	echo (showCalendar('2009-02'));
    	    // fonctions utiles, $valeur représente une date au format AAAA-MM-JJ
         function getSecond($valeur) {
              return substr($valeur, 17, 2);
         }
     
         function getMinute($valeur) {
              return substr($valeur, 14, 2);
         }
     
         function getHour($valeur) {
              return substr($valeur, 11, 2);
         }
     
         function getDay($valeur)     {
              return substr($valeur, 8, 2);
         }
     
         function getMonth($valeur)     {
              return substr($valeur, 5, 2);
         }
     
         function getYear($valeur) {
              return substr($valeur, 0, 4);
         }
     
         function monthNumToName($mois) {
              $tableau = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aôut", "Septembre", "Octobre", "Novembre", "Décembre");
              return (intval($mois) > 0 && intval($mois) < 13) ? $tableau[intval($mois)] : "Indéfini";
         }
     
     
     
     
    	   // Fonction pour afficher le calendrier
         function showCalendar($periode) {
    			$leCalendrier = "";
              // Tableau des valeurs possibles pour un numéro de jour dans la semaine
    			$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
    			$nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode), 1, getYear($periode)));
    			$pas = 0;
    			$indexe = 1;
     
    			// calcule la première semaine du mois courant
    			$nb_jour_annee = 0;
    			$num_mois = getMonth($periode);
    			for ($i = 1; $i < $num_mois; $i++)	{
    				$nb_jour_annee += Date("t", mktime(0, 0, 0, $i , 1, getYear($periode)));
    			}
    			$semaine = $nb_jour_annee/7;
     
    			$semaine = (int)$semaine;
    			$semaine++;
    				//
     
              // Affichage du mois et de l'année
              $leCalendrier .= "\n\t<h2>&raquo; " . monthNumToName(getMonth($periode)) . " " . getYear($periode) . "</h2>";
    //-->		     // Affichage des entêtes
              $leCalendrier .= "
              <ul id=\"libelle\">
    				\t<li class=\"titre_jour\">L</li>
    				\t<li class=\"titre_jour\">M</li>
    				\t<li class=\"titre_jour\">M</li>
    				\t<li class=\"titre_jour\">J</li>
    				\t<li class=\"titre_jour\">V</li>
    				\t<li class=\"titre_jour\">S</li>
    				\t<li class=\"titre_jour\">D</li>
    				\t<li id=\"titre_semaine\"><div id=\"t_semaine\">sem.</div></li>
    		  </ul>";
     
     
     
     
              // Tant que l'on n'a pas affecté tous les jours du mois traité
              while ($pas < $nb_jour) {
     
                   if ($indexe == 1) {	$leCalendrier .= "\n\t<ul class=\"ligne\">";
    //-->				// ajoute le numéro de la semaine...
    					$leCalendrier .= '<div class="numSemaine">'.$semaine.'</div>';			}
                   // Si le jour calendrier == jour de la semaine en cours
                   if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
                        // Si jour calendrier == aujourd'hui
                        $afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
                        if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
                             $class = " class=\"itemCurrentItem\"";
                        }
                        else {
                             // 1 est toujours vrai => on affiche un lien à chaque fois
                             // A vous de faire les tests nécessaire si vous gérer un agenda par exemple
                             if (1) {
                                  $class = " class=\"itemExistingItem\"";
                                  $afficheJour = "<a href=\"\">" . Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) . "</a>";
                             }
                             else {
                                  $class = "";
                             }
                        }
                        // Ajout de la case avec la date
                        $leCalendrier .= "\n\t\t<li$class>$afficheJour</li>";
                        $pas++;
                   }
                   //
                   else {
                        // Ajout d'une case vide
                        $leCalendrier .= "\n\t\t<li>&nbsp;</li>";
                   }
                   if ($indexe == 7 && $pas < $nb_jour) { 
    					$leCalendrier .= "\n\t</ul>"; $indexe = 1;
    			// incrémente le numéro de la semaine
    					$semaine++; 
    				} else {$indexe++;}
              }
              // Ajustement du tableau
              for ($i = $indexe; $i <= 7; $i++) {
                   $leCalendrier .= "\n\t\t<li>&nbsp;</li>";
              }
              $leCalendrier .= "\n\t</ul>\n";
     
              // Retour de la chaine contenant le Calendrier
              return $leCalendrier;
         }
     
    	echo('</body></html>');
     
    ?>

    Code css : 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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    /* + -----------------------------------------------------
    	Styles appliqués au Calendrier
    + ----------------------------------------------------- */
    form
    {
    margin:0px;
     
    }
    .form_calendrier
    {
    float:left;
     
    padding-left :20px;
     
    }
    h2
    {
    font-size:12px;
    }
    #calendrier li{
    	list-style: none;
    	list-style-type: none;
     
    }
     
    #libelle {
    	width: 560px; /* largeur supp. afin de mettre une 8ème colonne */ 
    	margin: 0 auto;
    	padding: 0;
    }
    .ligne {
    	width: 560px; /* largeur supp. afin de mettre une 8ème colonne */
    	margin: 0 auto;
    	padding: 0;
     
     
    } 
    /* Cadre des nom des jours */
    #libelle .titre_jour { /* utilisation de la class au lieu du tag li afin de pouvoir creer qqch d'independant pour titre_semaine */
    	text-align:center;
    	float : left;
    	width : 70px;
    	height: 16px; 	/* mise en place d'une hauteur fixe */
    	padding-top: 2px;
    	padding-bottom: 2px;
    	margin-bottom: 2px;
    	font-size:10px;
    	list-style-type: none;
    	background-color:#B6CFDE;
    }
    /* cadre de semaine */
    #titre_semaine{
    	text-align:center;
    	float : left;
    	width : 50px;
    	height: 16px;
    	padding-top: 0px;
    	padding-bottom: 4px;
    	margin-bottom: 2px;
     
    	font-size:13px;
    	color: white;
    	font-weight: bold;
    	list-style-type: none;
     
    	border-left: solid white 4px; /* pour faire une separation (bordure blanche) */
    	border-right: solid white 4px;
    	background-color:#cde;
    }
    #t_semaine{ /* pour pouvoir faire les bordures bleu */
    	height: 16px;
    	margin-bottom: 2px;
    	padding-bottom: 4px;
    	margin-left: -2px;
    	margin-right: -2px;
    	border-left: solid #89d 3px;
    	border-right: solid #89d 3px;
    }
     
     
    /* Cadre des numeros des jours */
    .ligne li {
        text-align:center;
    	color: #000;
    	float : left; 
    	width : 69px;/* 70px par defaut sans bordure */
        height: 20px; 	/* mise en place d'une hauteur fixe */
    	padding-top: 1px;
    	margin-top:1px;
    	list-style-type: none;
    	background-color:#E1E9F1;
    	border-right : 1px #ffffff solid;
    }
    /* DIV des numeros des jours*/
    .div_cadre1
    {
    height:18px;
    padding-top:1px;
    }
    .ligne li a
    {
    font-size:10px;
     
    }
     
    /* cadres des nums de semaine */
    .numSemaine 
    {
    	float: right;
    	clear: left; /* afin de se positionner correctement */
    	width: 48px;
    	height: 20px;
    	padding-top: 1px;
    	margin-top:1px;
    	margin-right: 14px;
     
    	color: white;
    	font-weight: bold;
    	text-align: center;
     
    	background-color:#cde;
    	border-left: solid #89d 3px;
    	border-right: solid #89d 3px;
    }

    A+

    Stef.

  12. #12
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Rapide ! Merci pour ton grand coup de main !

  13. #13
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Bonjour !

    Je me permet de réouvrir le sujet car il y a une petite erreur a l'affichage du numéro de semaine.

    Les numéros ne sont plus valide pour les mois d'avril, juin, juillet, septembre et décembre.. :s

  14. #14
    Membre averti Avatar de johweb
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Points : 367
    Points
    367
    Par défaut
    Je me permets d'interrompre votre dialogue...
    Moi, pour le numéro de semaine, j'utilise Si cela peut vous rendre service ...

  15. #15
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Oui mais il n'est pas applicable sur ce calendrier malheureusement.
    Je ne trouve toujours pas de solutions mais j'ai trouvé la cause.

    Le code de StafX di qu'il y a 52 semaines or il y en a 53.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // calcule la première semaine du mois courant
     
    			$nb_jour_annee = 0;
    			$num_mois = getMonth($periode);
    			for ($i = 1; $i < $num_mois; $i++)	{
    			$nb_jour_annee += Date("t", mktime(0, 0, 0, $i , 1, getYear($periode)));
    			}
    			$semaine = $nb_jour_annee/7;
     
    		$semaine = (int)$semaine;
     
    			$semaine++;

  16. #16
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Le code de StafX di qu'il y a 52 semaines or il y en a 53.
    Il y a 53 semaine selon quoi ?

    Il existe de multiples facon de compter les semaines, mysql en propose 8 différentes par exemple.
    PHP lui respecte la norme ISO-8601.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    J'ai dit une bêtise ce n'est pas la raison du problème en faite.
    je suis completement perdu

Discussions similaires

  1. [XL-2010] Affichage automatique des dates selon le numéro de la semaine
    Par Nessie37 dans le forum Conception
    Réponses: 3
    Dernier message: 14/06/2011, 15h07
  2. Recherche d'une date à partir du numéro de la semaine
    Par FMDCC dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/01/2010, 17h22
  3. [VB.NET] Obtenir le numéro de la semaine d'une date
    Par alain&&thomas dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/09/2009, 17h54
  4. [Dates] Obtenir le numéro de la semaine courante
    Par aromot dans le forum Langage
    Réponses: 4
    Dernier message: 30/12/2008, 14h48
  5. [Dates] Compter le numéro de la semaine
    Par etudianti4 dans le forum Langage
    Réponses: 1
    Dernier message: 09/10/2008, 20h44

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