Page 1 sur 2
Cron et suppression des membre inactif
Posté : 26 nov. 2006, 13:00
par analfabete
Bonjour!
Lorsqu'un membre s'inscrit a mon site celui-ci reçoit un mail de confirmation et je veux que si le membre n'est pas valider son mail au bout de 48heures supprimer son compte, j'ai ainsi realiser le debut d'un cron... qui ne marche pas :
<?php
include('../script/connect_db.php');
/*Cron n°1:
Ce script permet de supprimer tous les comptes qui n'ont pas été valider au-delà de 48 heures.
On scan la table membre, on recupere toute les ligne dont actif=0, puis on compare la date d'inscription avec celle actuel.
48heures = 172800 secondes; date_suppression= date a laquelle ou si la date d'inscription est inferieur doit etre supprimé.*/
$date_suppression=time()-172800;
$sql='DELETE FROM membre WHERE actif=0 AND date_inscription <= \''.$date_suppression.'\'';
mysql_query($sql);
?>
Pourriez-vous m'aider
Posté : 26 nov. 2006, 17:31
par analfabete
Personne ne sait ?

Posté : 26 nov. 2006, 17:38
par Cyrano
Qu'est-ce qui ne fonctionne pas : la tâche cron ou ton script ?
Posté : 26 nov. 2006, 17:39
par analfabete
Mon script
Posté : 26 nov. 2006, 17:45
par Cyrano
Et tu as quoi comme retour ?
Posté : 26 nov. 2006, 18:02
par Ajoloca
Bonjour,
La fonction PHP time() ne renvoie pas une date, mais un nombre de secondes.
Ta colonne s'attend à une valeur du type "DATETIME".
Les types éttant différents, ta requête ne fonctionnera pas.
Tu devrais toujours tester le retour de mysql_*, si tu l'avais fait, MySQL aurrait répondu à ta question.
Posté : 26 nov. 2006, 20:52
par Invité
ma colonne date_inscription est un timestamp comme la fonction time avec un entier de 10 caractères, ou je c'est moi qui est mal comprit ton explication
Posté : 26 nov. 2006, 20:56
par Ajoloca
Re,
Fais un "SELECT" sur ta colonne, et dis-moi ce que tu vois.
Posté : 26 nov. 2006, 21:17
par analfabete
$date_suppression=time()-172800;
$sql='SELECT idmembre FROM membre WHERE actif=0';// AND date_inscription <= \''.$date_suppression.'\'';
$req=mysql_query($sql);
while($res=mysql_fetch_array($req))
{echo $res['idmembre'];}
?>
Cela ne donne rien

Posté : 26 nov. 2006, 21:21
par analfabete
Voilà ma table membre:

Posté : 26 nov. 2006, 21:29
par Ajoloca
Re,
Comme tu vois, il-y-a des valeurs bizarres dans ta table.
Je suis étonné de voir des '0' zéros dans la colonne date_inscription.
Montre le code d'insertion d'un potentiel nouveau membre.
En suite pour ta requête (si je me fie à la position de la valeur) ta colonne est de type CHAR ou VARCHAR et toi tu testes avec un numérique, essaie ceci
Posté : 26 nov. 2006, 21:34
par analfabete
prend en compte juste la derniere ligne car je n'avais pas encore intégré le timestamp de manière correct maintenant cela marche comme tu peux le voir pour la dernière ligne deplus cela ne gene en rien mon script car avec les valeur 0 les comptes devrait etre supprimer
La colonne clé: attribut une clé d'activation comme aucun n'est activé la clé reste comme elle est, si le compte est activer le supprime le champ clé
Ma valeur actif est de type enum("0","1")
Fais moi signe si tu veut encore le script d'inscription car il y a plusieur fichiers...
Posté : 26 nov. 2006, 21:37
par Ajoloca
Avant de poursuivre,
La requête que je t'ai donnée, fonctionne ?
Posté : 26 nov. 2006, 21:41
par analfabete
$sql='SELECT idmembre FROM membre WHERE actif="0"';// AND date_inscription <= \''.$date_suppression.'\'';
$req=mysql_query($sql);
while($res=mysql_fetch_array($req))
{echo $res['idmembre'];}
Je l'avait déja essayer plus haut mais cela ne marcher pas
Posté : 26 nov. 2006, 21:42
par analfabete
arf je pense que le problème provient du type enum attend je change le type en mettant tinyint