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
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
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...