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 :

2 boucle while imbriquées [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut 2 boucle while imbriquées
    Bonjour a tous,

    j'ai 2 tables mysql, et je souhaite creer une table html avec les données de la tabla A.
    Une des colones de la tables sera un <select> dans lequel je souhaite parcourir avec un autre while, une requête de la table B.

    Donc je fais quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
                  echo "<td>{$row['champs']}</td>";
                  echo "<select>";
                      while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
                          echo"<option= bla bla bla";
                      }
                  echo "</td>";
     }
    Le premier while affiche bien mes données
    et le second fonctione mais seulement sur la premiere ligne.

    Quelqu'un a une idée de pourquoi?
    D'avance merci

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    Tu parles de 2 requêtes : Table A et Table B
    Dans ton code tu utilises $result pour les 2 requêtes ! Sans compter que le 2ème while ne fait même pas d'interrogation de la base.
    Postes les requêtes sql stp

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Bonjour.
    Je poste ici le vrai code, avant c'etait pour essayer d'expliquer le probleme.

    Alors voila les 2 requêtes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Lista los grupos hijos cargados
     $sql="select * from hijo where nombre_hijo !='bibviewer'";
     
     // Ejecucion de la query
     $result = mysql_query($sql);
     
    // Lista los grupos definidos como padres
     $sql1="select * from padre";
     
     // Ejecucion de la query
     $result1 = mysql_query($sql1);
    Comme tu oeux voir ce sont 2 requêtes simples.
    donc on a $result et $result1

    ensuite voici les 2 whiles
    Le resultat a l'ecran est une table de 3 colones, la 3e colones est un select
    il est OK sur la premiere ligne et vide a toutes les autres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
            while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
                     echo "<td>{$row['id_grupo_hijo']}</td>
                           <td>{$row['nombre_hijo']}</td>
                            <td><select>";
                    while($row1 = mysql_fetch_array($result1, MYSQL_ASSOC)){
                            echo "<option value='{$row['nombre_padre']}'>'{$row1['nombre_padre']}'</option>";
                    }
                    echo "</td></select></tr>";
            }
    ?>

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Je ferais plus quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
     
    // Lista los grupos definidos como padres
    $rows = array();
    $sql  = "SELECT * FROM padre";
    $qry  = mysql_query($sql);
    while($row = mysql_fetch_assoc($qry)) {
        $rows[] =
    <<<HTML
    <option value="{$row['nombre_padre']}">{$row['nombre_padre']}</option>
    HTML;
    }
    $padres = '<select>'.implode("\n", $rows).'</select>';
     
    // Lista los grupos hijos cargados
    $sql = "SELECT * FROM hijo WHERE nombre_hijo != 'bibviewer'";
    $qry = mysql_query($sql);
     
    while($row = mysql_fetch_assoc($qry)) {
        echo
    <<<HTML
        <td>{$row['id_grupo_hijo']}</td>
        <td>{$row['nombre_hijo']}</td>
        <td>{$padres}</td>
    </tr>
    HTML;
    }
    ?>
    Tu affiches toujours le même select pour chaque enregistrement, du coup pas la peine de le réécrire à chaque fois.

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Yessss
    genial ça marche.
    Alors si je comprend bien ce que tu as fait:
    La requête qui correspond au SELECT en fait tu la place dans un array et ensuite
    au lieu de refaire un while tu place la variable.

    Je ne comprends pas ceci:
    Et autre chose que je ne suis pas sur, dans $row[]tu place tout ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <<<HTML
    <option value="{$row['nombre_padre']}">{$row['nombre_padre']}</option>
    HTML;
    ?
    Je deduis que la variable $padres en fait a la fin sera la commande <select> entiere avev les direfentes valeurs dans option...C'est bien ça?

    D'?avance merci

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    La notation <<<HTML ... HTML; s'appelle la syntaxe heredoc.
    C'est très utile pour garder une super lisibilité du code et si tu nommes judicieusement tes tag : <<<HTML CSS JS XML... tu vois en un clin d'oeil le genre de code que tu manipules.

    Pour le bout de code ceci devrait être plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        $options = implode("\n", $rows); // on transforme le tableau en string
     
        $padres  = 
    <<<HTML
        <select>
            {$options}
        </select>
    HTML;

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

Discussions similaires

  1. Boucle while imbriqué, problème de renvoi de valeur
    Par biche1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/09/2008, 17h09
  2. Boucle while imbriquées
    Par quentincabo dans le forum VB.NET
    Réponses: 14
    Dernier message: 04/04/2008, 11h29
  3. problème d'execution de 2 boucles while imbriquées
    Par missyos dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/03/2008, 14h01
  4. [MySQL] Boucle while imbriqué
    Par agbononamour dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 31/05/2007, 18h09
  5. [Tableaux] Boucle while imbriquer
    Par Le-Cortex dans le forum Langage
    Réponses: 11
    Dernier message: 09/09/2005, 14h22

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