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

Langage PHP Discussion :

Boucle dans la boucle


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 29
    Par défaut Boucle dans la boucle
    Bonjour,

    J'affiche sur une page web, une liste de noms et de pays, de noms de couleur, de nom de style.

    le champ pays, couleur et style sont sous forme de liste déroulante.
    Si je prends uniquement le champ pays, je souhaite afficher le nom du pays saisi dans la base sql
    Jusque là, pas trop de souci.

    voici les select
    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
     
    $query1 = "SELECT * FROM comp_post dp
                LEFT JOIN comp_pays dps
                  ON dp.comp_pays = dps.id_pays
                LEFT JOIN comp_coul dc
                  ON dp.comp_couleur = dc.id_coul
                LEFT JOIN comp_style ds
                  ON dp.comp_style = ds.id_style
                ORDER BY comp_date DESC";
    $result = mysql_query($query1) or die(mysql_error());
     
    // Sélection Pays
        $reqPays = "SELECT * FROM comp_pays";
        $resPays = mysql_query($reqPays)or die(mysql_error());
    ?>
    Voici ma boucle dans mon body et ma table
    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
    <?php while ($aResult=mysql_fetch_array($result)){?>
    <td >
     <?php $selection=  "SELECT *
                                FROM comp_post dp                                   
                                LEFT JOIN comp_pays dc
                                  ON dp.comp_pays=dc.id_pays
                                WHERE id_pays='".$aResult['comp_pays']."'
                                 ";               
            $result2= mysql_query($selection) or die (mysql_error());?>
     
    <select name="id_pays" id="id_pays" >
      <?php while ($aResult2 = mysql_fetch_array($result2)) { ?>   
        <?php while ($aPays = mysql_fetch_array($resPays)) { 
              if ($aPays['id_pays'] == $aResult['comp_pays']) {
              $selected = ' selected'; 
              } else {
              $selected = ''; } ?>
     
    	 <option value="<?php echo $aPays['id_pays']; ?>"<?php echo $selected; ?>><?php echo $aPays['nom_pays']; ?></option>
      <?php }}?>
    </select>
    </td>
    Le résultat est que seul le premier nom avec un pays sélectionné s'affiche.
    Les autres sélect sont vides.

    En langage naturel, je dirais ceci :
    - liste de noms, pays, couleur, style
    - dans cette liste, un menu déroulant de pays
    - dans ce menu déroulant, afficher le pays sélectionné
    et ce, sur chaque ligne de la liste.

    J'ai pensé à un foreach mais je ne sais pas comment l'écrire ni à quel endroit des boucles le mettre.
    Qui pourrait m'aider ?
    Merci d'avance
    ed

  2. #2
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Bonjour,

    un truc du 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
     
    $query1 = "SELECT * FROM comp_post dp
                LEFT JOIN comp_pays dps
                  ON dp.comp_pays = dps.id_pays
                LEFT JOIN comp_coul dc
                  ON dp.comp_couleur = dc.id_coul
                LEFT JOIN comp_style ds
                  ON dp.comp_style = ds.id_style
                ORDER BY comp_date DESC";
    $result = mysql_query($query1) or die(mysql_error());
     
    $query2 = "SELECT * FROM comp_pays";
    $result2 = mysql_query($query2) or die(mysql_error());
    $arPays = mysql_fetch_array($result2);
     
     
    while ($row = mysql_fetch_array($result)) {
      echo "<tr>";
      echo "<td>";
      echo "<select name=\"\">";
      foreach($arPays as $pays) {
        $selected= ($pays['id_pays'] == $row['id_pays'])?(" selected=\"selected\""):("");
        echo "<option value=\"".$pays['id_pays']."\"".$selected.">".$pays['nom_pays']."</option>";
      }
      echo "</select>";
      echo "</td>";
      echo "</tr>";
    }

Discussions similaires

  1. [XL-2003] faire une boucle dans une boucle VBA
    Par the-geut dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/04/2010, 16h06
  2. [PHP 5.0] Manipulation XML une boucle dans une boucle
    Par lepotier dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2010, 13h15
  3. [LV 8.6] Problème de boucle dans une boucle
    Par Quent' dans le forum LabVIEW
    Réponses: 10
    Dernier message: 28/05/2009, 17h49
  4. Boucle dans une boucle
    Par macgor dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 27/02/2009, 19h07
  5. [Tableaux] Boucle dans une boucle
    Par spawns dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2006, 14h11

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