Comparaison de dates sous Mysql depuis PHP

Comparaison de dates sous Mysql depuis PHP - SQL/NoSQL - Programmation

Marsh Posté le 19-05-2005 à 14:12:03    

Voila dans une table j'ai tout un tas de créneau correspondant a un planning. Dans cette table il y a un champs nommé "AAAA-MM-JJ" qui correspond a la date de ce créneau. Dans une autre table appelée jour il y a aussi un champ "AAAA-MM-JJ" et un champs avec le numéro de planning. Lorsque je supprime un planning cela doit aussi supprimer les créneaux en rapport avec ce planning. Sauf que dans la table créneau il n'y a pas de champs avec le numéro de planning, je dois donc passer par la table jour. Voila la manipulation que je fais pour tenter de tout effacer ce qui concerne a un planning. Je rappelle que je fais dans une page php.
 

Code :
  1. $sql_cren = "SELECT * FROM jour WHERE NumeroPlanning =".$Num;
  2.         $result_cren = mysql_query($sql_cren) or die("Query failed : " . mysql_error());
  3.         while($enr_cren = mysql_fetch_assoc($result_cren))
  4.         {
  5.             echo ' <br>Jour : '.$enr_cren['AAAA-MM-JJ'];
  6.             $sql = "SELECT * FROM creneau WHERE 'AAAA-MM-JJ'=".$enr_cren['AAAA-MM-JJ'];
  7.            
  8.             //$sql = "DELETE FROM creneau WHERE `AAAA-MM-JJ` = ".$enr_cren['AAAA-MM-JJ']."";
  9.             $rSql = mysql_query($sql) or die("Query failed : " . mysql_error());
  10.             $enrBis = mysql_fetch_assoc($rSql);
  11.             echo ' <br>Creneau : '.$enrBis['AAAA-MM-JJ'];
  12.            
  13.            
  14.         }


 le premier echo m'affiche par exemple " Jour : 2005-06-17" et je suis sur que dans la table creneau il y a au moins une ligne dont le champ "AAAA-MM-JJ" a exactement la meme valeur (j'ai vérifié depuis phpMyAdmin). Et pourtant le second echo ne m'affiche que " Creneau : " j'en déduis donc qu'il n'a pas trouvé de date dans la table creneau égale a la date de la table jour.(je précise que les deux champs sont de type date) :pt1cable:  
 
Et je ne comprends pas Pourquoi !!!
 
Si qqn pouvait m'aider a m'enlever cette épine qui n'a pas l'air bien grosse mais qui fait bien mal ce serait vraiment cool  
 
Merci d'avance  
 
Hed


Message édité par pops1 le 19-05-2005 à 14:15:40
Reply

Marsh Posté le 19-05-2005 à 14:12:03   

Reply

Marsh Posté le 19-05-2005 à 14:17:46    

Citation :

Voila dans une table j'ai tout un tas de créneau correspondant a un planning. Dans cette table il y a un champs nommé "AAAA-MM-JJ" qui correspond a la date de ce créneau.


 
[:totoz]

Reply

Marsh Posté le 19-05-2005 à 14:18:49    

[:ktulu]
Un champ de type date c'était trop facile?[:moule_bite]


Message édité par skeye le 19-05-2005 à 14:19:03

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 19-05-2005 à 14:19:40    

Code :
  1. $sql = "SELECT * FROM jour j, creneau c WHERE j.AAAA-MM-JJ = c.AAAA-MM-JJ AND j.NumeroPlanning = '".$Num."'" ;


Reply

Marsh Posté le 19-05-2005 à 14:20:08    

ouais je sais que le nom de champs est mal choisi, mais j'ai pris la base comme ca et ca m'ennui de changer le nom de ce champs car il intervient a pleins d'endroits dans différentes pages. Donc si je pouvais eviter de tous les renommer dans chaque page ca m'arrangerais assez.  
 
Mais tu fais bien de le noter

Reply

Marsh Posté le 19-05-2005 à 14:25:27    

ben merci bien gaspard ca l'air de fonctionner  

Reply

Marsh Posté le 19-05-2005 à 14:50:13    

encore une petite question, si maintenant je veux faire un DELETE a la place de mon SELECT.  
Ca ne marche évidemment pas car apparemment il n'aime pas trop faire des DELETE sur 2 table différentes dans la meme requete. Alors j'ai pensé me servir de USING mais ca marche pas non plus. ca me une erreur :
 
voila ma requete transformée :

Code :
  1. $sql = "DELETE FROM creneau c USING jour j WHERE jour.`AAAA-MM-JJ` = creneau.`AAAA-MM-JJ` AND jour.NumeroPlanning = ".$Num." " ;


 
et voila l'erreur qui en découle : "Query failed : You have an error in your SQL syntax near 'c USING jour j WHERE jour.`AAAA-MM-JJ` = creneau.`AAAA-MM-JJ` AND jour.NumeroPla' at line 1"
 
désolé pour tous ces problèmes que je pose.

Reply

Marsh Posté le 19-05-2005 à 14:53:21    

en fait je crois que j'ai trouvé, dans la version "néandertalienne" de Mysql que j'utilise je ne suis pas sur que je puisse utiliser plusieurs tables avec un DELETE donc mon erreur doit venir de la  

Reply

Marsh Posté le 19-05-2005 à 14:57:31    

donc en fait la solution que tu me proposais gaspard va tres bien pour le SELECT mais pour le DELETE il faut que je trouve autre chose.

Reply

Marsh Posté le 19-05-2005 à 15:09:55    

toujours pas d'idées pour mon DELETE ??

Reply

Marsh Posté le 19-05-2005 à 15:09:55   

Reply

Marsh Posté le 19-05-2005 à 15:15:46    

Tu poses d'abord ton SELECT pour récupérer l'ensemble des jours à supprimer.
Puis tu lances deux DELETE, un pour chaque table !
 
-: Toujours penser à faire simple ! :-

Reply

Marsh Posté le 19-05-2005 à 15:23:15    

ouais je suis d'accord ca revient a faire exécuter le code qui est dans mon premier message. Mais le problème c'est qu'une fois que j'ai récupéré la date lors de mon premier select quand je l'affiche elle est correcte mais quand je la compare a une date identique d'une autre table et bien ca fait comme si elles étaient différentes. Et je ne comprends absolument pas pourquoi !!

Reply

Marsh Posté le 19-05-2005 à 15:44:09    

Dans mes scripts, tout fonctionne (comparaison, égalité, etc ...)
Il faut vérifier le format de tes dates dans le code php et dans ta bdd
 
Format perso Php : YYYY-MM-DD HH:MM:SS
Format perso Bdd : timestamp

Reply

Marsh Posté le 19-05-2005 à 15:57:26    

ben moi en ce qui concerne la base de données c'est du type DATE. Si je sotck la valeur de mon champs avec PHP est ce que ca va changer le type de la données.  
J'entends par la que si dans ma bdd mon champs est de type DATE, lorsque je formule ma requête depuis PHP et que je stocke la valeur de cette donnée, est-ce que son type va changer ? Pourtant quand j'affiche cette donnée a l'écran avec un echo elle conserve le meme format que dans ma BDD  
 
Donc je ne vois vraiment pas de quoi cela peut venir

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed