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 :

Comparaison de date


Sujet :

Langage PHP

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut Comparaison de date
    Bonjour

    je voudrai afficher une periode dans un tableau html représentant les quinzaine de chaque mois de juin à septembre. Je tire mes dates d'une serie de fichiers xml.
    j'utilise la fonction mktime pour construire des "timestamp".

    je veut colorer la case dans mon tableau si la quinzaine figure dans l'intervalle entre mes dates de début et dates de fin.

    mais ca ne marche pas du tout comme je veut. le seul code qui semble marcher est le suivant.



    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
     
    foreach ($data as $value) {
     
    		   $debut = mktime(0, 0, 0,$value['MOIS_DEBUT'], $value['JOUR_DEBUT'], $value['ANNEE']);
     
    		   $fin = mktime(0, 0, 0,$value['MOIS_FIN'], $value['JOUR_FIN'], $value['ANNEE']);
     
    		   $g[$i]['periode'] = 'du ' . $value['JOUR_DEBUT']. '/'. $value['MOIS_DEBUT'].'/2009 au '. $value['JOUR_FIN']. '/'. $value['MOIS_FIN'].'/2009';
                        echo "debut: " . $debut . "fin: " . $fin. '     ';
     
    		   for ($j = 6; $j <=10; $j++) {
                            //debut quinzaine
    		        $debut_courant = mktime(0, 0, 0, $j, 1, 2009);
                            //fin quinzaine
    			$fin_courant = mktime(0, 0, 0,$j, 15, 2009);
     
    			if(($debut_courant >= $debut) &&  ($fin_courant <= $fin)) {
     
    				$g[$i][$j.'15'] = "<td class='un'>1</td>";
     
    			}
     
    			else {
     
    				$g[$i][$j.'15'] = "<td class='zero'>0</td>";
     
    			}
                            //debut quinzaine
    			$debut_courant = mktime(0, 0, 0, $j, 16, 2009);
                            //fin quinzaine
    			$fin_courant = mktime(0, 0, 0, $j, $mois[$j],2009);
     
    			if(($debut_courant >= $debut) &&  ($fin_courant <= $fin)) {
     
    				$g[$i][$j.'30'] = "<td class='un'>1</td>";
     
    			}
     
    			else {
     
    				$g[$i][$j.'30'] = "<td class='zero'>0</td>";
     
    			}
     
    		    }
     
    		    $i++;
     
     
     
    		}
    mais il ne marche que si la date tombe sur le debut ou fin de quinzaine. Si la date se trouve entre la quinzaine (exemple 26/06/2009) rien n'est affiché.
    si j'inverse mes comparaisons (ce qui samblerai plus logique)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if(($debut_courant <= $debut) &&  ($fin_courant <= $fin)) {
     
    				$g[$i][$j.'30'] = "<td class='un'>1</td>";
     
    			}
     
    			else {
     
    				$g[$i][$j.'30'] = "<td class='zero'>0</td>";
     
    			}
    l'affichage ne correspond a rien.
    j'ai beau retourner le code dans tous les sens je suis perdu.

    pouvez vous m'aider
    Merci
    Claude

  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
    Une plage recouvre une autre si elle commence avant sa fin et qu'elle termine apres son début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($debut <= $fin_courant && $fin >= $debut_courant)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut [RESOLU] comparaison de date: j'y perd mon latin
    Bonjour
    merci beaucoup!! ça marche
    juste modifié en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($debut < $fin_courant && $fin >= $debut_courant)
    car les periodes commençant la deuxième quinzaine d'un mois étaient marquées comme commençant la première

    cordialement
    Claude

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

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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