Bonjour,
Tout est dans le titre du sujet. Et je ne vois pas comment faire.
En table, les users ont un champ "lastconnexion" qui est au format date.
j'aimerai un truc ressemblant à cela

$today = date("Y-m-d");
$pdostat = $bdd->prepare("SELECT pseudo FROM membres WHERE lastconnexion ='$today'-3")
$pdostat->execute();

Modifié par nestor94 (12 Sep 2023 - 18:25)
Modérateur
Bonjour,

pour retrouvé la date d'il y a 3 jours, tu peut eventuellement faire :

$refDate = new DateTime('-3 days');
$refDate=date_format($refDate, 'Y-m-d');
echo '<p>'.$refDate.'</p>';


Pour tester une durée entre ces deux dates la suite du code serait par exemple.

$today = date("Y-m-d");
$lastConnexion= date_create($today);
$refDate=date_create($refDate);
if( $lastConnexion->diff($refDate)->d > 2) {echo 'plus de 2 jours (à partir du 3eme jours)'; }
if( $lastConnexion->diff($refDate)->d == 2 ) {echo ' 3 jours'; }

Cdt
Modifié par gcyrillus (12 Sep 2023 - 19:49)
C'est une approche intéressante mais comment puis_je relier ceci à ma clause WHERE?
(je souhaite récupérer tous les pseudos non connectés depuis 3 jours)

$refDate = new DateTime('-3 days');
$refDate=date_format($refDate, 'Y-m-d');
$today = date("Y-m-d");
$lastConnexion= date_create($today);
$refDate=date_create($refDate);
if( $lastConnexion->diff($refDate)->d == 3 )
 {
$pdostat = $bdd->prepare("SELECT pseudo FROM membres WHERE....  ");
$pdostat->execute();
echo $pseudo;
}
Modérateur
Avec la première partie du code en testant $refDate :
gcyrillus a écrit :
Bonjour,

pour retrouvé la date d'il y a 3 jours, tu peut éventuellement faire :
$refDate = new DateTime('-3 days');
$refDate=date_format($refDate, 'Y-m-d');


Modifié par gcyrillus (12 Sep 2023 - 21:45)
Modérateur
Oups, en ajoutant un exemple annexe au problème, je crois que j'ai semé la confusion. Désolé.

Il faut simplement remplacer la première ligne : $today= ... par les deux lignes avec $refDate = ...
Puis remplacer le $today -3 dans la requête par $refDate.

L'exemple suivant montre comment trouver la différence en jour entre 2 dates non formatées et est en complément Car lorsque l'on commence à jouer avec les dates ...

edit la réponse toute prête c'est :
$refDate=date_format(new DateTime('-3 days'), 'Y-m-d');// on imbrique les fonction pour ne faire qu'une seule ligne.
$pdostat = $bdd->prepare("SELECT pseudo FROM membres WHERE lastconnexion =$refDate")
$pdostat->execute()

Modifié par gcyrillus (13 Sep 2023 - 13:45)