Problème de comparaison de date !

Résolu
punkybreizh Messages postés 20 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 12 novembre 2007 - 1 sept. 2005 à 02:04
punkybreizh Messages postés 20 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 12 novembre 2007 - 1 sept. 2005 à 16:11
Bonjour à tous,



Depuis quelques jours je bloque sur une de mes pages de mon site qui
permet en fait de comparer une date se trouvant dans une base de donnée
avec la date actuel. Si la date rentrée dans la base est plus ancienne
que celle d'actuel, je supprime l'élément correspondant dans la base.
Le problème c'est qu'elle ne supprime pas la date. J'ai eu beau
chercher un peu partout sur le net des infos mais en vain. Je sais pas
si je
suis clair mais voilà le code :



<?

//paramètre du serveur

include("../pfinfosql.php");



//connexion au serveur

$db = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);

mysql_select_db($sql_bdd,$db);



//requète -> vérification des données

$today = date('d/m/Y');



$query = "SELECT date FROM sorties";

$result = mysql_query($query) or die('Erreur SQL : '.mysql_error());



//requète -> suppression des données

while ($val = mysql_fetch_array($result)) {

if($today > $val['date']){

$old = $val['date'];

$query = "DELETE FROM sorties WHERE date=$old";

$result = mysql_query($query) or die('Erreur SQL : '.mysql_error());

}

}



?>



Merci d'avance.

4 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 sept. 2005 à 14:59
la format de date normal de sql est aaaa/mm/jj et il est très pratique.
il faut utiliser pour ça un champ de type date, change les tienne
pour s'y conformer si tu peux. sinon c'est pas compliqué, tu fais $today = date('Y/m/d');

Tu n'arriveras à rien en comparant le format d/m/Y comme tu le fais.
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 sept. 2005 à 02:29
Bonsoir,

déjà le pb vient de ce que ton date( ) et ta date SQL ne sont pas de même format :

jj/mm/aaaa (en gros) pour php et aaaa/mm/jj pour SQL.



mais de tte façon ce n'est pas la peine de réinventer la roue comme on dit, mysql fait tout très bien tout seul :





DELETE FROM sorties WHERE TO_DAYS(NOW()) - TO_DAYS(date) >= 10



là ça te supprimera tout ce qui a une date remontant à plus de 10 jours.

J'espère que ça te va?
0
punkybreizh Messages postés 20 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 12 novembre 2007
1 sept. 2005 à 13:52
Le problème avec :



DELETE FROM sorties WHERE TO_DAYS(NOW()) - TO_DAYS(date) >= 10



c'est que now() renvoie bien une date de format (aaaa/mm/jj)
alors la variable date est de la forme (jj/mm/aaaa) et donc la
comparaison est impossible
0
punkybreizh Messages postés 20 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 12 novembre 2007
1 sept. 2005 à 16:11
C'est bon, merci beaucoup Evangun
0
Rejoignez-nous