supprimer automatiquement des entrées dans un table sql

supprimer automatiquement des entrées dans un table sql - PHP - Programmation

Marsh Posté le 13-06-2005 à 14:42:48    

salut,
 
je voudrais faire un truc un peu parculier en php mais je n'ai aucune idée comment faire.
 
j'ai une table sql alimentée tous les jours par les internautes.
Ce que je voudrais faire c'est supprimer de manière automatique toutes les entrées qui datent de plus de 3 jours.
 
Est-ce possible en php ?

Reply

Marsh Posté le 13-06-2005 à 14:42:48   

Reply

Marsh Posté le 13-06-2005 à 14:47:58    

Tout dépend de ce que tu entends par "automatique"...
Un script et un "cron job" feraient l'affaire.

Reply

Marsh Posté le 13-06-2005 à 14:53:18    

sachant que tu peux qd même coder ton script en php, et qu'il ne te reste plus qu'à mettre une tâche automatique qui appelle ton script périodiquement ...

Reply

Marsh Posté le 13-06-2005 à 15:21:44    

d'accord merci.
 
mais je ne vois pas comment faire en sorte que les enregistrements de plus de x jours soient supprimés.
 
$requete = "DELETE FROM matable WHERE ???";
 
vous avez une idée ?

Reply

Marsh Posté le 13-06-2005 à 15:24:41    

Pourquoi ne pas mettre un champs date tout simplement, et lorsqu'un internaute insère une donnée, tu attribut la date du jour, et en même temps tu supprimer tout ce qui date de plus de trois jours.? non..? c'est pi etre complexe je sais pas moi ça me semble plus simple ^^

Reply

Marsh Posté le 13-06-2005 à 18:12:37    

je suis ok la dessus mais ce que je ne sais pas c'est comment supprimer des données de plus de 3 jours en php.
 
on peut faire un truc comme ça ?
 
DELETE FROM matable WHERE date < (datedujour-3)
 
 

Reply

Marsh Posté le 13-06-2005 à 23:15:39    

a condition d'avoir un champ "submitdate" de type datetime alimenté par un NOW() a chaque enregistrement (ce qui t'a été suggéré et me semble d'ailleurs inévitable):
 
DELETE * FROM matable WHERE submitdate < (DATE_ADD(CURDATE(),INTERVAL -3 DAY))
 
si tu souhaites faire l'inverse (par exemple extraire uniquement les données comprises entre J-3 jours et aujourd'hui, ce serait du style:
 
SELECT * FROM matable WHERE (submitdate BETWEEN (DATE_ADD(CURDATE(),INTERVAL -3 DAY)) AND CURDATE())
 
par exemple. :)
 
Quant à l'aspect "automatique" de la chose, il te faudra plutôt appeller ce script au choix une fois par jour en passant par une table intermédiaire qui enregistre la surveillance (ce pruning a-t-il été déjà effectué aujourd'hui ?) ou carrément l'appeller à chaque visite, avec une variable de session afin d'éviter son appel systématique à chaque rechargement de la page par exemple. Bien sur si tu est en hébergement de type serveur en location (accès système) et non un hébergement mutualisé, une commande cron fera nettement mieux l'affaire.


Message édité par angturil le 14-06-2005 à 11:27:24
Reply

Marsh Posté le 14-06-2005 à 08:11:25    

ok, merci bcp pour cette réponse :-)
 
en ce qui concerne le côté automatique, je vais opter pour un cron étant donné que mes sites sont sur mon dédié...

Reply

Sujets relatifs:

Leave a Replay

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