[RESOLU] Effacer en fonction d'une date

Eléphant du PHP | 194 Messages

24 oct. 2021, 21:52

Bonjour à tous,
Je ne parviens pas faire ma requete sql.
Je voudrais qu'en fonction de la date de creation et du status que si le status n'est pas modifier dans un labs de temps l'utilisateur s'efface (delete).
Voici comment ma table est faite :
id - mail - pseudo - creation - maj - status (creation et maj sont en date time)

J'ai commencer a faire cela mais je bloque pour dire si maj superieur a 3h par rapport a la date de creation :
DELETE * FROM `utilisateurs` `WHERE` actif =`0` AND `maj` = `creation` AND ICI notion de temps par rapport a la date du jour par exemple supérieur à 3h ;
Mais je ne parviens pas à le faire.
Merci par avance pour votre aide.

@+ Filou

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 oct. 2021, 12:20

Hello,

Tu peux faire ça avec la fonction SQL TIMEDIFF() pour calculer la différence entre deux dates et la fonction NOW() pour avoir la date du jour
https://sql.sh/fonctions/timediff
https://sql.sh/fonctions/now
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 194 Messages

25 oct. 2021, 14:03

Mais comment je lui dit la différence de 3h

@+ Filou

Mammouth du PHP | 2703 Messages

25 oct. 2021, 14:12

vous avez lu le premier lien donné jusqu'à la fin ?

Eléphant du PHP | 194 Messages

25 oct. 2021, 17:57

Oui tout a fait cela
TIMEDIFF(CURTIME(), date_ajout) < "00:30"
Mais je ne parviens pas à l'associer avec ma requete sql :
DELETE * FROM `utilisateurs` WHERE `actif` = 0 AND `maj` = `creation` AND TIMEDIFF(CURTIME(), `maj`) < "03:00";
Cela ne fonctionne pas.

Merci de votre aide et de vos conseils.

@+ Filou

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 oct. 2021, 09:59

Commence par faire un SELECT et construis + teste ta requête dans phpmyadmin ça t'aidera.
Si tu fais un SELECT TIMEDIFF(CURTIME(), `maj`) FROM tatable tu verras ce que renvoie TIMEDIFF notamment
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 194 Messages

26 oct. 2021, 12:55

Bonjour,

Cela me renvoi 2 lignes ou dans la colonne il y a 2 Null.

Cdlt
@+ Filou

Eléphant du PHP | 194 Messages

01 nov. 2021, 12:40

Bonjour,

Je reste bloquer sur ma problématique, si quelqu'un passe par la pour m'aider....
Merci par avance.

@+Filou

Mammouth du PHP | 2703 Messages

01 nov. 2021, 13:10

quelle est la requête testée dans phpmyadmin ?
quelle est la structure de la table et son contenu ?

Eléphant du PHP | 194 Messages

01 nov. 2021, 14:40

Bonjour,
Merci pour votre aide, voici comment ma table est faite :
id - mail - pseudo - creation - maj - status (creation et maj sont en date time)
et voici la requête que j’essaie de faire :
DELETE * FROM `utilisateurs` `WHERE` actif =`0` AND `maj` = `creation` AND ICI notion de temps par rapport a la date du jour par exemple supérieur à 3h ;
@+ Filou

Mammouth du PHP | 2703 Messages

01 nov. 2021, 14:59

" Si tu fais un SELECT TIMEDIFF(CURTIME(), `maj`) FROM tatable tu verras ce que renvoie TIMEDIFF notamment"

quelle est la requête testée dans phpmyadmin ?

Eléphant du PHP | 194 Messages

01 nov. 2021, 17:45

quand je fais la requête cela me renvoi 2 lignes ou dans la colonne il y a 2 Null.

Mammouth du PHP | 2703 Messages

01 nov. 2021, 18:42

quelle est la requête testée dans phpmyadmin ?
quelle est le contenu de la table ?

Eléphant du PHP | 194 Messages

01 nov. 2021, 23:51

Voici ma table :
Image
Voici la requete avec le resultat:
Image

Moi je souhaite effacer les resultat de plus ou la date de creation et et la date de mise a jour son identique avec le status a 0 de plus de 3h par rapport a la date actuel.

Je sais pas si je suis clair dans mon explication ?

Merci pour votre aide.

@+ Filou

Mammouth du PHP | 2703 Messages

02 nov. 2021, 00:28

il faut faire un copier/coller de la requête d'Arthur, et pas la retaper en changeant quelque chose qui fait que cela ne fonctionne plus.