-
[SQL] Gestion du TEMPS
Bonjour à toutes et à tous,
Je suis actuellement Stagiaire dans une communauté des communes. On me demande de faire un formulaire. Une fois que l'utilisateur a rempli tous les champs du formulaire, un mail est envoyé à l'admin , avec un lien permettant de confirmer l'intégration des infos dans la base de donées adéquate.
Ceci fait, je voudrais maintenant, qu'une fois que l'admin ai cliqué sur le lien , cela enclenche une sorte de temporisation qui va supprimer automatiquement l'offre ajoutée dans le formulaire, et donc dans la table après un laps de temps (par exemple 2 Mois).
J'ai beaucoup cherché sur le net , mais je n'ai pas trouvé comment faire cela... :bug: ...
Quelqu'un aurait la solution?
Merci d'avance
Cordialement,
MoKeS
-
Ajoute un champ "date_creation" et tu y insères la date de création.
Ensuite, suffirait de trouver un moyen de lancer la suppression régulièrement avec une requête qui se baserait sur la date_creation+2mois. Si c'est sur un site, la page d'accueil c'est pas mal, par contre faudrait trouver un moyen pour que ça lance le script 1 fois dans la journée par exemple.
@+! Samy
-
à vrai dire, un des champs de la table a déja pour valeur la date de la création de la ligne... mais je ne vois pas trop comment faire... J'avais essayé quelque chose avec la création d'évenement :
J'ai pris 1 MINUTE pour tester.
J'active cette requete des que l'admin clique sur le lien
$timer = "
CREATE EVENT TIMER
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO DELETE FROM logement WHERE adresse='".$new_adresse."' AND chauffage='".$new_chauffage."'AND sanitaire='".$new_sanitaire."'AND piece='".$new_piece."'AND surface='".$new_surface."'AND annexe='".$new_annexe."'AND loyer='".$new_loyer."'AND charge='".$new_charge."'AND nom_contact='".$new_prenom_nom."'AND adresse_contact='".$new_adresse_contact."'AND telephone_contact='".$new_telephone."'AND email='".$new_mail."'AND date='".$new_date."'";
J'ai retourné un mysql error(), il me fait une erreur disant :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EVENT TIMER ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MI
-
Comme dit, si en plus c'est au niveau de l'administration que ça doit disparaître, sur la page de connexion tu ajoutes une requête DELETE toute simple qui supprime tous les enregistrements dont date_creation+2mois est inférieur à la date du jour.
Personnellement je n'ai jamais utilisé d'évènement en SQL, mais 2 mois ça me paraît long...ça va vraiment être traité si le serveur est rebooté entre temps ?
@+! Samy
-
Justement, c'est la question que je me pose... Je ne sais pas si cet évenement va rester "en mémoire".
Il n'y a pas vraiment de zone d'administration...comme dit, la personne qui gère les réponses de ce formulaire recoit donc un mail après qu'une annonce ait été rajoutée, et elle a le choix de confirmer cette annonce (elle se met en ligne automatiquement), ou bien de supprimer l'annonce (suppression dans la table).
Donc cet "évenement" devra être executé en meme temps que la "mise en ligne" de l'offre.
Je suis entrain d'essayer de le faire avec php... avec la fonction time(). Si ca ne marche pas , je pense rester sur ta solution, un lien simple envoyé par mail permettant de supprimer toutes les lignes dont la date de création est supérieur à 2 mois.....
-
Si les annonces se mettent en ligne, y'a forcément un site qui est visité...donc pour moi pas besoin d'envoyer un mail pour valider/lancer la suppression des anciennes annonces.
Sur la page d'affichage des annonces, suffirait de directement mettre en place la requête de suppression en PHP (puisqu'elle ne supprimera que les anciennes annonces obsolètes). Après, on peut éviter que cette requête se lance à chaque fois éventuellement...et encore, si y'a plus rien à supprimer tant pis, c'est pas si grave qu'elle se lance (le test de savoir si elle a déjà été lancée serait peut-être plus long à être traité).
@+
-
Bonne idée ! Ca va m'éviter d'envoyer un mail pour supprimer l'annonce.
La requete sera alors dispo sur la page du formulaire. Dès qu'elle est lancée, une requete va supprimer toute les offres dont la date d'enregistrement = date d'enregistrement + 2 mois ... je vais essayer ça ...
Merci beaucoup pour l'idée.. je te tiens au courant
-
A voir où tu places la requête suppression, car si ton formulaire n'est pas utilisé quotidiennement, tu auras certaines annonces de plus de 2 mois parfois qui ne seront pas supprimées.
C'est pour ça qu'il faut mettre ce code sur une page visitée régulièrement.
@+! Samy
-
A la limite c'est pas grave... dès qu'un visiteur ira sur la liste des offres, ça activera automatiquement le script, et les dates qui sont supérieures à 2 mois se supprimerons automatiquement....
j'pourrais eventuellement mettre ce script à la page d'accueil... à voir ... :king: