Comparaison dates [Résolu]

Signaler
Messages postés
18
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
12 avril 2010
-
Messages postés
18
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
12 avril 2010
-
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));

$djour = explode("-", $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)){

$datefin=$tab['dateE'];

$dfin = explode("-", $datefin);

if ($djour < $dfin){

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.

merci d'avance pour votre aide



Configuration: Windows XP
Firefox 3.0.7

5 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Non, je ne peux pas te donner d'autres solutions qui soient meilleures que celle ci.
Relis bien le lien que je t'ai conseillé !!
Tu devrais également revoir la doc de explode et les opérateurs de comparaison.
En faisant ça :
if ($djour < $dfin){
... tu "compares" 2 tableaux, pas 2 dates.

Sauf si j'ai loupé qqchose tu veux sortir tous les enregistrements de ta base qui ont une date inférieure à 7 jours :

SELECT * FROM taTable WHERE STR_TO_DATE(leChampDeTaDate, '%d-%m-%Y') > DATE_SUB(NOW(), INTERVAL 7 DAY)

... juste en lisant le lien

Cordialement,

Kohntark -
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Tu te compliques bien les choses, tu devrais faire ce calcul dans la requête SQL.
Regarde les fonctions de date de mysql et plus particulièrement DATE_SUB : http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html

Cordialement,

Kohntark -
Messages postés
18
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
12 avril 2010

Merci boucoup pour votre réponse.
Le problème c'est que la date dans ma base de données n'est pas de la forme date c'est une VARCHAR car je l'utilise dans un autre program java et il m'a causer des problèmes. Donc est ce que vous pouvez me donner une autre solution svp
merci bcp
Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
1
Bonjour,

Une autre solution existe également, au moins via PHP 5.2 et >. la classe disponible Classe Datetime étendue peut se charger des calculs, puisqu'au niveau de ta base de données tu as cru bon d'utiliser du varchar pour gérer tes dates au lieu des standard DATE et DATETIME...
Messages postés
18
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
12 avril 2010

Merci beaucoup pour vos réponse j'ai utilisé ta requête kohntark et ça marche bien
merciiiiiiiiiiiiiiiiiiiiiiiiiiiii bcp