Gestion de dates SQL

Petit nouveau ! | 9 Messages

28 janv. 2021, 21:48

Bonjour je ne peux pas tester une partie de mon programme ou du moins je ne sais pas comment le faire vu que les date dans ma base de donnée sql s'implémente seule et attendre une année est trop long.
Voici mon code php, la variable $_POST['number'] recoit un int et $_POST['surete'] est simplement une checkbox;
Je souhaite que les utilisateurs qui n'ont pas été connectés depuis plus de $_POST['number'] années soient supprimés:
Pouvez-vous me confirmer ou non que ceci fonctionne (la requête SQL) ? merci a vous.
#######Supprimer utilisateur non connectés########
if (!empty($_POST['number'])) {
    if (!empty($_POST['surete'])) {
        $nombreJour = $_POST['number']*365;
        $sql4 = 'DELETE FROM membre WHERE DATEDIFF (CURDATE(),derniere_connexion) > '.$nombreJour.'';
        $req4 = mysqli_query($connexion, $sql4) or die('Erreur SQL !<br />' . $sql4 . '<br />' . mysqli_error($connexion));
        //header('location: gestionMembre.php');
    }
    else {
        $erreur = "La case de sureté n\'est pas cochée !";
        $_SESSION['erreur'] = $erreur;
        header('location: gestionMembre.php');
    }
}
Image

Image

Mammouth du PHP | 2703 Messages

28 janv. 2021, 21:59

il est toujours possible pour vérifier, dans phpmyadmin, d’exécuter :
select pseudo, derniere_connexion, DATEDIFF (CURDATE(),derniere_connexion) as nb FROM membre WHERE DATEDIFF (CURDATE(),derniere_connexion) > 10

Petit nouveau ! | 9 Messages

29 janv. 2021, 19:10

il est toujours possible pour vérifier, dans phpmyadmin, d’exécuter :
select pseudo, derniere_connexion, DATEDIFF (CURDATE(),derniere_connexion) as nb FROM membre WHERE DATEDIFF (CURDATE(),derniere_connexion) > 10
Ah oui le select pas bête mais bon je n'ai pas encore d'utilisateurs qui ne sont pas connectés depuis au moins 1ans donc difficile a tester je vais laisser comme ca vu que je n'en ai pas besoin de suite...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 févr. 2021, 17:02

Salutations !

Si tu veux juste tester si ton code fonctionne, tu peux aussi modifier cette ligne et mettre un coefficient différent :
$nombreJour = $_POST['number']*365;
Si au lieu de 365 tu mets la valeur 1 ou 10, tu peux tester et vérifier que ton script supprime bien les utilisateurs qui ne se sont pas connectés depuis 1, 2, 3, ... 10, 20 ou 30 jours...

Si ça fonctionne avec *1, ça fonctionnera aussi avec *365 ;)

(évite de tester sur ta base de production par contre ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...