Mysql supprimer donnes anterieure à une date

Mysql supprimer donnes anterieure à une date - PHP - Programmation

Marsh Posté le 22-08-2008 à 09:02:10    

Bonjour,
 
J'aimerai supprimer de ma table tous les données antérieure à une date que je saisi à partir d'un formulaire  
 
le souci est mes dates dans la table sont de format : "Y-m-d h:m:s".  
 
J'ai essayté sa mais sa n'a pas marché. Veuillez me dire svp ce qui ne va pas, merci.  
 
$submit = $_POST['submit'];  
 
if ($submit)  
{  
$ok = false;  
 
 
$date = $_POST['date'];  
 
if ($date)  
{  
 
$db_query = "DELETE * FROM cdr WHERE calldate < '$date'";  
$db_result = mysql_query($db_query);  
$db_query = "UPDATE cdr";  
if (mysql_affected_rows())  
{  
$ok = true;  
}  
 
}

Reply

Marsh Posté le 22-08-2008 à 09:02:10   

Reply

Marsh Posté le 22-08-2008 à 09:05:23    

Faut utiliser la fonction DATEDIFF, genre :

Code :
  1. DELETE * FROM cdr WHERE DATEDIFF(calldate, $date) < 0


Oublie pas aussi un mysql_real_escape_string sur $date

Reply

Marsh Posté le 22-08-2008 à 09:52:46    

Merci FlorentG mais sa n'a pas marché, j'ai essayé date avec '$date' et comme sa $date,  je comprends pas prk il met cette erreur
 
Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM cdr WHERE DATEDIFF(calldate, 2008-12-19) < 0' at line 1  

Reply

Marsh Posté le 22-08-2008 à 09:54:13    

T'as oublié les quotes c'est pour ça [:sadnoir] Essaye de comprendre ce que tu fait :D Et de lire les messages d'erreurs ;)

 

Aller je vais tout donner :

Code :
  1. $db_query = 'DELETE FROM cdr WHERE DATEDIFF(calldate, \'' . mysql_real_escape_string($date) . '\') < 0';


Message édité par FlorentG le 22-08-2008 à 10:03:09
Reply

Marsh Posté le 22-08-2008 à 10:02:20    

sans l'étoile sinon ça risque pas de marcher [:cupra]

Code :
  1. DELETE FROM...


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 22-08-2008 à 10:03:16    

Hein ? [:dawak]

Reply

Marsh Posté le 22-08-2008 à 10:16:48    

Désolée de t'embêter mais je suis vraiment débutante en mysql et j'ai copié ta ligne mais ça marche tjs pas :( il e fait la même erreur  
 
Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM cdr WHERE DATEDIFF(calldate, \'' . mysql_real_escape_string(2007-12-24) .' at line 1  
 
Merci  bcp pour votre aide

Reply

Marsh Posté le 22-08-2008 à 10:23:21    

Y'a des quotes en trop, regarde il n'a pas exécuté la fonction, mais il l'a mise comme ça dedans... Attention aux quotes et double-quotes (' ou " )

Reply

Marsh Posté le 22-08-2008 à 10:28:01    

j'ai mis de quotes en trop  
voila ce que j'ai mis
 
$db_query= "DELETE * FROM cdr WHERE DATEDIFF(calldate, \'' . mysql_real_escape_string($date) . '\') < 0";
comme sa aussi sa n'a pas marché
 
$db_query= 'DELETE * FROM cdr WHERE DATEDIFF(calldate, \'' . mysql_real_escape_string($date) . '\') < 0';

Reply

Marsh Posté le 22-08-2008 à 10:28:13    

Je te conseille cette façon d'écrire une requête pour plus te mélanger les pinceaux:

Code :
  1. $query = sprintf("delete from WHERE DATEDIFF(calldate, '%s') < 0",


AMA, c'est la meilleure méthode quand on dispose pas de bind params.


Message édité par anapajari le 22-08-2008 à 10:28:54

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 22-08-2008 à 10:28:13   

Reply

Marsh Posté le 22-08-2008 à 10:30:01    

Ok c'étaitle * qu'il voulait pas, mnt ça marche  
merci bcp

Reply

Marsh Posté le 22-08-2008 à 13:48:07    

Cette commande a l'air aussi sympa qu'elle n'est pas dispo chez 1and1 :D


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Sujets relatifs:

Leave a Replay

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