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 :

Requête dans foreach


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Points : 64
    Points
    64
    Par défaut Requête dans foreach
    Bonjour à tous,

    Voilà, je m'arrache les cheveux sur une boucle dans laquelle se trouve une instruction mysql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $amis = explode(",", "Dom, JM, Zaza");
    foreach ( $amis as $amis ) {
    # affiche les infos des amis :
    mysql_select_db($database_base, $base);
    $query_ami = "SELECT adresse FROM inscrits WHERE pseudo = '$amis'";
    $ami = mysql_query($query_ami, $base) or die(mysql_error());
    $row_ami = mysql_fetch_assoc($ami);
    echo $row_ami['adresse'];
    }
    Il n'y a que la première valeur qui est retournée. Comme si la boucle ne répétait pas ma requête pour chaque 'ami'. En testant avec $i++ la boucle est pourtant correcte.

    Snirf ! J'ai d'autres boucles du même genre qui fonctionne, je ne comprends pas.

    Merci à tous

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Il faut aussi boucler sur le fetch pour ramener toutes les lignes fetch ! cf l'exemple associé à mysql-fetch-assoc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($row = mysql_fetch_assoc($result)) {
       echo $row["userid"];
       echo $row["fullname"];
       echo $row["userstatus"];
    }
    A moins que Dom, JM et Zaza n'aient qu'un ami ?
    Mais ta logique est contre performante, il est préférable de ne faire qu'une requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT adresse FROM inscrits WHERE pseudo IN ('Dom', 'JM', 'Zaza')

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    Argh toujours pô !

    Il doit y avoir un conflit quelque part.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La proposition de skuatamad avec le IN est je dirais la seule valable.
    Le requête dans des boucles sont des catastrophes de performance.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    Je plussoie les autres membres.

    Par contre, si tu veux "juste" comprendre pourquoi ta boucle ne marche pas, ça vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ( $amis as $amis ) {
    Ton premier passage dans la boucle efface ton tableau.

    Tu devrais avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ( $amis as $ami ) {

Discussions similaires

  1. [MySQL] Requête dans un foreach
    Par roukgreg dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/05/2013, 16h35
  2. [MySQL] Exécution d'une requête dans un boucle foreach
    Par sissi25 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/12/2011, 11h05
  3. [BDE]requête dans plusieurs bases
    Par sbeu dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/03/2004, 09h24
  4. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  5. Regrouper 3 requêtes dans une seule
    Par LadyArwen dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/06/2003, 09h32

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