Comparaison dates php

Fermé
angel_tn Messages postés 10 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 11 mars 2010 - 9 juil. 2009 à 20:01
angel_tn Messages postés 10 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 11 mars 2010 - 10 juil. 2009 à 18:31
Bonjour,

j'ai un problème dans mon code php
je veux comparer 2 dates dont la première récupéré à partir d'une base de donnée mysql mais sous la forme d'un string et non pas une date dd-mm--yyyy, et lautre la date courante moins 7 jours
alors j'ai fais ce code :

<?
$date=date("d-m-Y",time()-7*24*60*60);
echo $date;

$connexion=mysql_connect("localhost","root","");
mysql_select_db("planning")or die("connection impossible");
$id_base= mysql_select_db("planning",$connexion);
if($id_base)
{
$req="select * from bon ";
$res=mysql_query($req);
}

while($tab=mysql_fetch_array($res)){


echo "<br/>".strtotime($date);
echo " ".strtotime("02-07-2009");
echo "<br/>".strtotime($tab['dateE']);
echo "<br/>".$tab['dateE']."<br/><br/>";


if (strtotime($date)< strtotime($tab['dateE'])){

echo $tab['dateE'];
}

}
?>


le probleme cé que ce code affiche tout les dates qu se trouves dans ma base et non seulement qui sont supérieur à la date courante moins 7 jours.


Bah j'ai essayé de mettre des echo pour chaque étape, et j'ai trouvé que le problème due à la conversion de la date en seconde

$date=date("d-m-Y",time()-(7*24*60*60));
echo $date; --->02-07-2009

echo $tab['dateE']; ---->28-06-2009

echo "<br/>".strtotime($date); ------->1198969200

echo "<br/>".strtotime($tab['dateE']); ------->2016918000

Alors on remarque que 02-07-2009 >28-06-2007
mais 1198969200<2016918000

j'ai pas trouvé ou est le problème

merci d'avance pour votre aide
A voir également:

4 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
9 juil. 2009 à 20:44
si tes dates dans la BDD sont au format yyyy-mm-dd

pourquoi ne pas essayer:

$delta=7;

$req="SELECT * FROM bon WHERE dateE > (NOW()-$delta)";
0
angel_tn Messages postés 10 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 11 mars 2010
9 juil. 2009 à 21:01
merci pour la réponse mais les dates qui sont dans ma base sont de vatype rchar et non pas date puisque j'utilise la même base pour un code java dont le type Date m'a causé des problèmes.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
9 juil. 2009 à 21:19
alors fais ta requette comme avant mais transforme la date BDD en timestamp en faisant d'abord un explode

ensuite tu fait ta comparaison entre ce timestamp et le timestamp du jour moins 7*24*3600

pour le timestamp va voir sur G..

tu mets 0 pour les h minutes secondes
0
angel_tn Messages postés 10 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 11 mars 2010
10 juil. 2009 à 18:31
merci bcp pour votre réponse mais j'ai trouvé une autre solution en modifiant ma requête bd:

$req="SELECT * FROM bon WHERE STR_TO_DATE(dateE, '%d-%m-%Y') > DATE_SUB(NOW(), INTERVAL 1 DAY) ";

bon journée
0