supprimer entrée après une date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : supprimer entrée après une date

par Yiruko » 15 janv. 2009, 23:43

J'ai mis ça:

Code : Tout sélectionner

DELETE FROM evenement WHERE NOW() > date_f
et ça marche niquel!!!

merci beaucoup à vous ;)

Bon b je vais avoir encore besoin de vous ... mais bon je vais faire un autre topic car ça n'a pas trop de rapport avec ça ^^'

Je met en résolu au passage ;)

par AB » 13 janv. 2009, 23:45

enfin quoi que si je lance ma page en local en entrant l'adresse ça devrait faire la même chose qu'un cron... lol
C'est certain que si ton script ne fonctionne pas si tu le lance maintenant, il a peu de chance de fonctionner même après minuit :lol: à moins que ce soit un script style vampire.
Bon aller faut que j'aille manger sinon j'y vais finir par raconter n'importe quoi :)

par blof » 13 janv. 2009, 23:12

Par contre au lieu de mettre la date à "zero",
autorise les valeurs nulles (ie NULL)
C'est vrai que c'est plus "élégant".
Et dans ta requête, tu test avec IS NULL ou IS NOT NULL
C'est même plus la peine :)
"WHERE NOW() > date_f" suffit !

par Yiruko » 13 janv. 2009, 22:54

ok j'essayerais ça... mais bon ce sera pas trop pour tout de suite le résolu car je fais mon site en local... et je n'ai pas trouvé comment faire une commande cron en local... ou même une simulation du cron... enfin quoi que si je lance ma page en local en entrant l'adresse ça devrait faire la même chose qu'un cron... lol

Bon b j'essayerais au plus vite et je viendrais vous dire!

par AB » 13 janv. 2009, 22:49

Par ailleurs en autorisant la valeur null et en indiquant NULL par défaut dans ce champ date_f, cela t'éviterait même d'avoir à rentrer quoi que ce soit dans ce champ si tu ne souhaites pas de date de péremption. Les requêtes et les tables en seront optimisées.

Ta requête automatisée pourrait donc ressembler à
DELETE FROM nom_de_la_table WHERE  date_f IS NOT NULL AND date_f  < NOW()
Reviens nous mettre un petit résolu si ça fonctionne comme tu veux :wink:

par Yiruko » 13 janv. 2009, 22:00

ok j'essayerais !

Merci du conseil ^^'

par jojolapine » 13 janv. 2009, 21:52

Par contre au lieu de mettre la date à "zero",
autorise les valeurs nulles (ie NULL)
Et dans ta requête, tu test avec IS NULL ou IS NOT NULL
Un grand de ces lieu m'a dit ça l'autre jour ;)

par Yiruko » 13 janv. 2009, 20:32

Ok d'accord et non c'est bien ça, je veux définir une date de validité ^^'


Je vous remercie tous pour l'aide que vous m'avez apporté!

Merci beaucoup à vous ^^'

par AB » 13 janv. 2009, 20:29

Oui effectivement ça dépend de ce que tu veux faire.

Ton champ date semble être spécifique et indiquer la date de validité de l'enregistrement après quoi il sera supprimé. Donc cette méthode est bonne.

J'avais compris dans un premier temps que ce champ correspondait à la date d'enregistrement de la ligne et que tu souhaitais supprimer des enregistrements anciens.

par blof » 13 janv. 2009, 20:21

Merci de vos conseils!
Lache toi ! :)

par Yiruko » 13 janv. 2009, 20:12

hum en fait je n'aurais besoin d'une date de fin que pour les fiches de courte durée (pour qu'elle se supprime mais aussi pour indiquer aux utilisateurs quand ça le sera!) par contre les événements longue durée je n'ai pas besoin de date! c'est pour ça que j'ai émis l'hypothèse de laisser le champs vide!

Donc je pense que la méthode de blof est la bonne non? puisque dans tout les cas, pour mes événement "infini", je n'aurais pas de date!

Merci de vos conseils!
Jonathan

par blof » 13 janv. 2009, 19:58

sa méthode permet de garder la date du post.
D'après ce que je comprends, il s'agit de la date limite d'existence de l'enregistrement.
Je ne trouve pas que l'idée de Yiruko soit si mauvaise ...

par AB » 13 janv. 2009, 19:41

hors je veux qu'elle reste jusqu'au soir ...
je voulais savoir si le fait de ne pas rentrer de date pourrais permettre d'avoir une durée de vie "infinie" ...
Si on admet que tu lances ta tâche planifiée "très tôt le matin" :

Code : Tout sélectionner

DELETE FROM nom_de_la_table WHERE NOW() > date_f AND date_f <> '0000-00-00'
Oui bien sûr il pourrait faire comme ça, mais je préférerais pour ma part une solution avec la méthode de jojolapine car sa méthode permet de garder la date du post. Ce qui pourra s'avérer fort utile (indispensable) par la suite pour faire du tri ou des recherches sur les dates.

par AB » 13 janv. 2009, 19:34

D'une manière générale il est conseillé si possible de lancer les tâches automatiques dans la nuit, quand le trafic visiteur est au minimum.

par blof » 13 janv. 2009, 19:30

hors je veux qu'elle reste jusqu'au soir ...
je voulais savoir si le fait de ne pas rentrer de date pourrais permettre d'avoir une durée de vie "infinie" ...
Si on admet que tu lances ta tâche planifiée "très tôt le matin" :

Code : Tout sélectionner

DELETE FROM nom_de_la_table WHERE NOW() > date_f AND date_f <> '0000-00-00'