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] Problème de mois avec un calendrier


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Points : 15
    Points
    15
    Par défaut [Dates] Problème de mois avec un calendrier
    bonjour,j'avais fait un calendrier en php lors d'un stage avec la possibilité de consulter les mois suivant et précédents du mois en cours.Il marchait et si je l'utilise chez moi les clic premettant de voir le mois suivant e précédents ne marchent pas on voit toujours le mois acutel.

    Voici le 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
    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
    <?php
      global $month, $year;
     
      include ('connexion.php');
     
      // traduction du mois et du jour.
      //-------------------------------------------------------------------
      $date_month 	= array('1' => 'janvier', '2' => 'fevrier', '3' => 'mars', '4' => 'avril', '5' => 'mai', '6' => 'juin',
    				'7' => 'juillet', '8' => 'aout', '9' => 'septembre', '10' => 'octobre', '11' => 'novembre', '12' => 'decembre');
     
      $date_day		= array('Monday' => 'lundi', 'Tuesday' => 'mardi', 'Wednesday' => 'mercredi', 'Thursday' => 'jeudi',
    				'Friday' => 'vendredi', 'Saturday' => 'samedi', 'Sunday' => 'dimanche');
     
      // On defini les parametres de la date actuelle.
      //-------------------------------------------------------------------
      $current_day 	  = date('d', time());
      $current_month 	= date('n', time());
      $current_year 	= date('Y', time());
      $today_date     = date("Y-m-d");
     
      // gestion des mois suivant et precedent.
      //-------------------------------------------------------------------
      if($month == null || $year == null) {
          $month = $current_month;
          $year  = $current_year;
      }
      if ($month==0) {
          $year='0'.$year-1;
          $month = 12;
        }
      elseif ($month==13) {
        $year='0'.$year+1;
        $month = 1;
      }
      elseif ($year==-1) {
        $year = 99;
        $month = 12;
      }
      elseif ($year==100) {
        $year = 00;
        $month = 1;
      }
     
     
      // On convertie en format timestamp pour la reconnaisance du nombre de jour.
      //-----------------------------------------------------------------------------------
      $timestamp		= mktime(0, 0, 0, $month, 1, $year);
      $total_day		= date('t', $timestamp);    // Nombre de jours dans le mois
      $numb_fisrt 	= date('w', $timestamp);   // Jour de la semaine au format numérique; 0 (pour dimanche) à 6 (pour samedi)
      $numb_fisrt 	-= 1;                       // On decremente car $numb_fisrt est incrementé ds la ligne precedente
     
     
      if ($numb_fisrt == -1)
        $numb_fisrt += 7;
     
      // On cree ici le tableau avec toutes les jours du mois suivant les jours de semaine.
      //-----------------------------------------------------------------------------------
      for ($i = 0, $fill = 0; $i < 6; $i++)
      {
    	 for ($j = 0; $j < 7; $j++, $fill++)
    	 {
    		if ($i == 0 AND $j < $numb_fisrt)
    			$var[$i][$j] = '';
    		elseif ($fill <= $total_day + $numb_fisrt - 1)
    			$var[$i][$j] = $fill - $numb_fisrt + 1;
    		else
    			$var[$i][$j] = '';
    	 }
      }
     
     
       $i=0;
     
     
        // Creation du tableau d'affichage 
        //-----------------------------------------------------------------------------------
       echo "<table border='0' width='80%' align=center>";
        echo "<tr align=center><td><font color=#0066cc>Lundi</font></td><td><font color=#0066cc>Mardi</font></td><td><font color=#0066cc>Mercredi</font></td><td><font color=#0066cc>Jeudi</font></td><td><font color=#0066cc>Vendredi</font></td><td><font color=#0066cc>Samedi</font></td><td><font color=#0066cc>Dimanche</td></tr>";
        echo "<tr height='90'>";
     
        foreach ($var as $v1) {       // Affichage des données 
          foreach ($v1 as $date) {    // du tableau var 
     
            $sql = "Select Conge_Id,Conge_DateDeb,Conge_DateFin,Conge_NbJour,Conge_Type,Conge_Salarie_Email from conge where Conge_Etat='valide'"; // On récupere tout les congés
    	      $req = mysql_query($sql) or die('Error SQL !<br>'.$sql.'<br>'.mysql_error());
     
            $color = ($date==date('d', time()) && $month == $current_month && $year == $current_year)?'darkred':'lightblue'; // On detecte si on visualise le mois actuel. si oui alors on coloris la case de l& date en rouge sinon on laisse en blue claire
            if($i>=7) {
              echo "</tr><tr height='110' valign='top'>"; // gestion des saut de ligne dans le tableau
              $i=0;
            }
            echo "<td width='110' valign='top' bgcolor='$color'>";
            echo "<table border='0' width='100%'>";
            echo "<tr height='18'><td align='left' width='100%'>$date</td></tr>";
            while($data = mysql_fetch_array($req)) {            // pour chaque congé
              $deb_date = explode("-",$data['Conge_DateDeb']);  // extrait la date du debut
              $fin_date = explode("-",$data['Conge_DateFin']);  // extrait la date du fin
              $date2 = $month;
    		  $date3 = $year;
              if($deb_date[2]<=$date and $fin_date[2]>=$date and $deb_date[1]<=$date2 and $fin_date[1]>=$date2 and $deb_date[0]<=$date3 and $fin_date[0]>=$date3){  // si la date correspond au bon interval on l'affiche
                $sql2 = "Select Salarie_Email,Salarie_Nom from salarie where Salarie_Email='$data[Conge_Salarie_Email]'"; // on récupere le nom du salarié
    	          $req2 = mysql_query($sql2) or die('Error SQL !<br>'.$sql2.'<br>'.mysql_error());
    	          $affiche = mysql_fetch_array($req2);
    	          echo "<tr height='18'><td align='left' width='100%'> - <font color='black' size='1' face='arial'>$affiche[Salarie_Nom] ($data[Conge_Type])</font></td></tr>";
              }
            }
            echo "</table>";
            echo "</td>"; 
            $i++;
          }
        }
        echo '</tr></table >';
     
    	// Gestion des lien precedent/suivant.
        //-----------------------------------------------------------------------------------
     
    	echo '<p align=center><a href="?month='.($month-1).'&year='.$year.'" alt="" >precedent</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    	 echo "$date_month[$month] $year &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    	  echo '<a href="?month='.($month+1).'&year='.$year.'" alt="" >Suivant</a></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
     
     
        mysql_close();
     
     
    ?>

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu as surement register_globals à off chez toi, ce qui est très bien, mais ce qui empeche de faire tourner ton script normalement.
    Avec register_globals à off, tu dois récupérer les variable qui viennent de ta requête par $_GET.
    Ainsi tu dois remplacer cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($month == null || $year == null) {
    par ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $month = isset($_GET['month']) ? $_GET['month'] : null;
    $year  = isset($_GET['year']) ? $_GET['year'] : null;
    if($month == null || $year == null) {

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Points : 15
    Points
    15
    Par défaut
    merci de ta réponse claire et rapide
    Ta solution marche

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

Discussions similaires

  1. Problème de milliseconde avec le calendrier grégorien
    Par Toky31 dans le forum Général Java
    Réponses: 2
    Dernier message: 24/06/2014, 09h28
  2. [Dates] problème validité nombre avec is_numeric
    Par cortex024 dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2007, 15h46
  3. [Date] Retrouver le mois avec le num de la semaine
    Par romano dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 08/02/2006, 20h31
  4. [Dates] Problème avec la fonction header
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 16h33
  5. Problème de reqûete sur la date, année et mois en cours
    Par Jean-Marc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/02/2004, 16h36

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