IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Comment effectuer ses requêtes multiple proprement ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 190
    Par défaut Comment effectuer ses requêtes multiple proprement ?
    Bonjour à tous,
    je compte utiliser une tache cron sur mon site,
    du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $requete = "SELECT users from table"; 
    $resultat = mysql_query($requete);
    while($donnees = mysql_fetch_array($resultat))
    {
        $date_de_validite = $donnees['validite'];
     //   ici normalement j'aimerais faire :
        if($date_de_validite < time()+ (24*3600*62)) 
        {
           mysql_query("delete from table WHERE user='$user'");
        }
     
    }
    mon problème c'est que j'ai beaucoup d'utilisateurs, et donc si je fais un code de ce style il risque d'y avoir 500 requetes "delete" en un coup, et je ne pense pas que ça soit recommandé

    quelqu'un aurait il une alternative?

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Par défaut
    Oui, il y a mieux. Dans ton code, tu récupères la liste des utilisateurs puis, pour chaque utilisateur, tu supprimes les utilisateurs innactifs.
    Immaginons que tu ait 30 utilisateurs inactifs, tu les supprimes tous la première fois ... et ensuite tu as 29 requetes identiques.

    Pour moi, ta requete est bonne, mais pas besoin de l'executer pour chaque utilisateur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 190
    Par défaut
    je ne vois pas de solution possible pour faire une seule requete, si tu sais comment faire je t'écoute .
    merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Bonsoir. J'essaie de comprendre. Tu veux faire le ménage dans ta BDD, une fois car tu ne l'as jamais fait ou tu veux qu'à chaque fois qu'un membre arrive sur une page, ce script se déclenche pour faire les delete? Parce que selon ta réponse il ya plusieurs possibilités.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 190
    Par défaut
    bin en fait, j'ai une bdd avec des utilisateurs qui existe depuis longtemps.
    et beaucoup d'entre eux ne se manifeste plus,
    et donc j'ai créé aujourd'hui un nouveau champs "validité" a ma table user
    et j'ai appliquer fait un update à ce champs a tout les utilisateurs avec le timestamp d'aujoud'hui, et donc,
    si l'utilisateur se manifeste dans avant 2 mois sont champs "validité" est updaté.
    et s'il ne se manifeste pas sont compte dois etre éffacé
    et comme il y a beaucoup d'inscrits, beaucoup ne se manifesteront pas dans les deux mois.
    donc beaucoup de delete.
    j'espere que quelqu'un m'aura compris lollll....

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Je comprends mieux. En fait, puisque tu as un champ validite avec la date de dernière connection (par ailleurs ta requête doit-être "SELECT users, validite from table" )
    pourquoi ne pas faire ton delete en comparant le champ validité :

    "DELETE FROM table WHERE validite<$temps - (24*3600*62)" en sachant que $temps=time().".

    Cela élimine en une requête tous les délais dépassés.

    Enfin, ta condition était fausse pour tester $date_de_validite : avec ta comparaison, c'est toujours vrai..
    Bon courage à toi.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 190
    Par défaut
    merci pour ta réponse,
    jvais aller essayer
    je n'avais pas penser afaire ça dans la requete meme
    bonne soirée à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/03/2005, 14h29
  2. [CR8.5] Comment executer ses propres requetes SQL.
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 26/10/2004, 20h44
  3. Comment effectuer un retour chariot dans 1 JTextarea
    Par elitost dans le forum Composants
    Réponses: 2
    Dernier message: 21/06/2004, 17h18
  4. [Debutant(e)][eclipse] Comment organiser ses projets ?
    Par Javanaute dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 09/04/2004, 10h07
  5. Comment protéger ses sources?
    Par Titeuf21121 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 25/03/2004, 06h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo