Suppression automatisée de table mysql après 30 jours

dorian
Invité n'ayant pas de compte PHPfrance

11 août 2009, 16:05

Bonjour à tous !

Après quelques recherches, je n'ai toujours pas trouvé de solution à ma question.
C'est pourquoi je vous demande votre aide :roll:

Voila enfaite je fais un site d'annonce gratuite avec une base mysql mais j'aimerai que les annonces qui ont plus de 30 jours soient supprimée. Heureusement mon hébergeur offre un service de tâches planifiées pour exécuter régulièrement des script php.

Seulement, je n'ai aucune idée de ce que je pourrais mettre dans ce script.

J'ai aussi penser à ne pas supprimer les annonces de plus de 30 jours MAIS à afficher celles de moins de 30 jours mais je devrai alors faire de la maintenance...

Merci d'avance de votre aide :roll:

Cordialement, Dorian Savage

Eléphant du PHP | 369 Messages

11 août 2009, 19:04

Salut,
Bonjour à tous !
Après quelques recherches, je n'ai toujours pas trouvé de solution à ma question.
C'est pourquoi je vous demande votre aide :roll:
Voila enfaite je fais un site d'annonce gratuite avec une base mysql mais j'aimerai que les annonces qui ont plus de 30 jours soient supprimée. Heureusement mon hébergeur offre un service de tâches planifiées pour exécuter régulièrement des script php.
Seulement, je n'ai aucune idée de ce que je pourrais mettre dans ce script.
J'ai aussi penser à ne pas supprimer les annonces de plus de 30 jours MAIS à afficher celles de moins de 30 jours mais je devrai alors faire de la maintenance...
Merci d'avance de votre aide :roll:
Cordialement, Dorian Savage
Perso j'utilise les users pour ce type de choses, je me explique:

Quand un utilisateur se log il te suffit d'embrayer sur une fonction sql de délétage à plus de 30 jours...
Ce qui peut s'écrire (+ ou -) ainsi:

DELETE FROM ta_base WHERE annonce > $date

Ou $date vaut la différence entre la date de création de l'annonce et aujourd'hui.

Espérant t'avoir aidé, bon code @+ ;)

ViPHP
ViPHP | 3607 Messages

11 août 2009, 19:21

Les solutions sont variées, mais toutes ont besoins de savoir quand à été publié l'annonce...
Donc il faut avoir dans ta table un champ de type DATETIME ou TIMESTAMP pour commencer...
Ensuite la question de supprimer les veilles annonces ou de simplement les cachés... c'est à toi de voir, sachant que par exemple dans l'avenir il te viendra peut-être l'idée de proposer à tes utilisateurs de prolonger la publication d'une annonce une fois celle-ci périmés... (un exemple hein...)
A ce moment là, si tu as préféré cacher les annonces "périmées", un simple changement de la date de publication suffira à la remettre en route....

Pour les manips sur les types dates:
faq-tutoriels/quelques-petites-manipula ... t8323.html pour commencer
http://dev.mysql.com/doc/refman/5.1/en/ ... tions.html (manuel mysql)
http://fr.php.net/manual/fr/ref.datetime.php (les fonctions php)

Test et reviens nous voir si ça ne fonctionne pas... ;)

ViPHP
ViPHP | 2291 Messages

11 août 2009, 19:25

Salut,

Pourquoi ne pas faire comme ceci :?:
Quand tu crée une annonce tu indique la durée de validiter exemple 30 jours.
Et quand tu affiche les annonce tu affiche les annonce dont la date de validiter est valable.

:arrow: Exemple dans la requête :

Code : Tout sélectionner

date_validiter > NOW() 
:arrow: NOW() -->Retourne la date courante au format 'YYYY-MM-DD HH:MM:SS'

Donc :
Dans cette exemple tu à un champs datetime pour la date de validiter :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.