[mysql] Vider une table en fonction d'une date

Résolu
cdrik75016 Messages postés 12 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 20 février 2017 - 23 mai 2006 à 14:41
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 23 mai 2006 à 17:17
Bonjour tous le monde, je voudrais vider chaque table de ma base (a part client et serveur) en fonction d'une date récupéré dans un XML. Alors j'ai fais ceci :

//On récupère le nom de toutes les tables
$query = "SHOW TABLES FROM nombdd";$result mysql_query($query) or die('>> Erreur SQL :'.$query.'
'.mysql_error());
//On parcours chaque table
while ($row = mysql_fetch_row($result))

 //Si la table n'est pas client ou serveur
 if( ($row[0]!= 'client') && ($row[0]!= 'serveur') )
 {
  //On vide les enregistrements de la table supérieur à 15jours
  $query2 = "DELETE FROM ".$row[0]." WHERE SUBDATE('".$dateModif."', INTERVAL 15 DAY)";
  //$query2 = "DELETE FROM ".$row[0]." WHERE (TO_DAYS(NOW()) - TO_DAYS('".$dateModif."')) > 15";  $result2 mysql_query($query2) or die('>> Erreur SQL :'.$query2.'
'.mysql_error());
  echo "=> $row[0] vidée...
";
 }
}

Comme vous voyez, j'ai essayé deux méthodes . Les deux me vide bien mes tables mais quel que soit la date...On est le 2006-05-23, et ça ma viré un enregistrement ayant dans le champ Date 2006-05-18, pourtant ça daté bien de moins de 15jours.
Si vous avez une réponse a mon probleme, faites moi signe !!!!

PS : je précise que les champs des tables que je veux vidé sont bien de type date et la date récupéré dans le xml est bien sous la forme AAAA-MM-JJ

Merciiiiiiiii ^^

5 réponses

cdrik75016 Messages postés 12 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 20 février 2017
23 mai 2006 à 15:34
OK je suis trop laid, j'ai trouvé tous seul, un truc con j'avais oublié de mettre le champ date :

$query2 = "DELETE FROM ".$row[0]." WHERE `Date` < SUBDATE('".$dateModif."', INTERVAL 15 DAY)";

Je suis trop bidon ^^
3
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
23 mai 2006 à 15:57
salut

je ne vois pas ou tu compare ta date avec ton champs date.

en fait je ne vois pas ou tu appelle ton champs date. si j'ai bien compris ton code, ton $dateModif est ta date de référence, et donc dans ta requete tu compare la date du jour (NOW) a ta date de reference. donc le resultat est toujours vrai, et il supprime tous les enregistrements.


Je pense qu'il faut donc que tu rajoute 15 jour a ta date de reference, et que tu supprimer tous les enregistremenents dont la date est inferieure






 
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
23 mai 2006 à 16:08
mouarfff, j'etais en trian de te repondre justement

:)
0
cdrik75016 Messages postés 12 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 20 février 2017
23 mai 2006 à 16:10
lol j'allais répondre, j'comprenais pas ton message par rapport a ma derniere réponse ^^ ça va trop vite internet de nos jours :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
23 mai 2006 à 17:17
bah ouais, plus vite que moi en tout cas :)

nan en fait j'ai commencé a repondre, puis j'ai du faire autre chose, et j'ai repris plus tard, mais comme j'ai pas rafraichit ma fenetre, je n'ai pas vu ta reponse...

au moins comme ca on est bien sur :)
0
Rejoignez-nous