SOS sur comparaison de dates

Résolu
cs_didine6 Messages postés 81 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 7 août 2009 - 23 mai 2008 à 14:08
cs_didine6 Messages postés 81 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 7 août 2009 - 23 mai 2008 à 15:14
Bonjour
Voici un code avec comparaison de date.
Cela fonctionne parfaitement sauf quand $datedeb et $datfin est à cheval sur 2 mois (cf exemples ci dessous).
J'ai du mal utiliser la fonction date ou strtotime ou mktime, mais je ne vois pas où.
Si quelqu'un a le courage de regarder et l'envie de m'aider...ce serait super cool ?

$test=mysql_query("SELECT * FROM congesperiode WHERE numper='$id'");
while($enr=mysql_fetch_array($test)) {                     $datdeb=date("d-m-Y",strtotime($enr['anneedebut']."-".$enr['moisdebut']."-".$enr['jourdebut']));  
$datfin=date("d-m-Y",strtotime($enr['anneefin']."-".$enr['moisfin']."-".$enr['jourfin']));
$i=1;           $jourplusun=date("d-m-Y",mktime(0,0,0,date($enr['moisdebut']),date($enr['jourdebut']+$i),date($enr['anneedebut'])));
// C'est ici que viens le problème, dans le while, si $jourplusun=28-04-2008
// et $datfin=02-05-2008, ben ça ne va pas dans le while ! Pkoi ?
while($jourplusun<=$datfin) {               $jourplusun=date("d-m-Y",mktime(0,0,0,date($enr['moisdebut']),date($enr['jourdebut']+$i),date($enr['anneedebut'])));
if(((datefr2($datedebut))==$datdeb) || ((datefr2($datefin))==$datdeb) || ((datefr2($datedebut))==$jourplusun) || ((datefr2($datefin))==$jourplusun)) {
                    echo "Cette date a déjà été prise";
                    echo "Retour au menu ici";
                    exit;
                }
                else {
                    //echo "ok";
                    $i++;
                }
            }
        }

Didine

3 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
23 mai 2008 à 14:21
Salut,

En gros, ta question revient à celle-ci :
Pourquoi est-ce que 02052008 est plus petit que 28042008 ? C'est quand même une base des maths, non ?

La solution consiste à utiliser le format américain : 2008-05-02 > 2008-04-28

Une autre solution serait d'utiliser des timestamp unix.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
3
cs_didine6 Messages postés 81 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 7 août 2009
23 mai 2008 à 14:24
Euh non, ma question n'équivaut pas du tout à ce que tu dis, ou laors j'ai mal compris.
Effectivement, ma comparaison de date ne fonctionne pas, et c'est là que je bloque.
J'ai lu un tas de choses sur les timestamp unix, les mktime et autre...mais j'y pige pas grand chose.

Didine
0
cs_didine6 Messages postés 81 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 7 août 2009
23 mai 2008 à 15:14
Ok, finalement en passant en date US, cela fonctionne.
Merci.

Didine
0
Rejoignez-nous