[PHP/MySQL] - Menu déroulant SQL 2 champs

Fermé
olive33 - 3 déc. 2006 à 19:45
 Olive33 - 4 déc. 2006 à 23:55
Bonjour,

Voilà, je vous explique brièvement mon problème. Je possède une table MySQL qui contient 2 champs nommés "idcommande" et "datecom". Je voudrais faire un SELECT et réunir ces deux champs dans un menu déroulant. J'ai donc, ce sera plus parlant pour certains, ce type de script :

$quer2 = "SELECT datecom FROM $table1 WHERE numclient='$numclient'";
$resul2 = mysql_query($quer2);
$ligne2 = mysql_num_rows($resul2);
$champ2 = mysql_num_fields($resul2);

$quer = "SELECT idcommande FROM $table1 WHERE numclient='$numclient'";
$resul = mysql_query($quer);

$ligne = mysql_num_rows($resul);
$champ = mysql_num_fields($resul);

echo "<select name='numcom1'>";
while($row = $fields = mysql_fetch_row($resul)){
$i=0;
while ($i<$champ){
echo "<option value='$row[$i]'>$row[$i]";
$i++;
}
while($row2 = mysql_fetch_row($resul2)){
$k=0;
while ($k<$champ2){

echo " du $row2[$k]";
$k++;
}
echo "</option>";

}

}

Ce qui me donne pour résultat, pour la première ligne du menu déroulant, le contenu de mon premier champ et celui de mon second champ tel que je le souhaite (par contre il est normal que seul la valeur du premier champ soit transmise par le formulaire, c'est voulu) mais dès la seconde ligne, je n'ai que la valeur du premier champ qui est récupérée.

Je me suis donc planté quelque part, soit dans la position de mes accolades, des "echo" ou des variables $i et $k. Mais j'ai beau tourner le code dans tous les sens, je n'y arrive pas.

Quelqu'un saurait m'aider ?

Merci par avance

A+ Olive33
A voir également:

2 réponses

P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
4 déc. 2006 à 12:11
juste une question tu as regardé le html généré ???
pour moi, le souci vient de tes boucles while moi, je l'aurais plus vu comme suis

while($row = $fields = mysql_fetch_row($resul)){
$i=0;
  while ($i<$champ){
    echo "<option value='$row[$i]'>$row[$i]";
    while($row2 = mysql_fetch_row($resul2)){
      $k=0;
      while ($k<$champ2){
        echo " du $row2[$k]";
        $k++;
      }
      echo "</option>";
    $i++;
  }

}}
 
0
Bonsoir,

Et d'abord merci pour ton aide. Malheureusement le code ne fonctionne pas avec le code tel que tu l'as écrit. Par contre voici le code HTML généré (merci je n'y avais pas pensé) :

<form name='form2' method='post' action='?do=affichage'>
<select name='numcom1'>
<option value='0611hmF19qYb'>0611hmF19qYb du 19-11-2006</option> du 03-12-2006</option>
<option value='0612yLg2YkGm'>0612yLg2YkGm</select><input type='hidden' name='numclient' value='0000-00000A'>
<input type='submit' name='Submit3' value='Visualiser' class='b'>
</form>

A première vue y'a une balise </option> de trop juste avant la date du 03-12-2006. Date qui elle -même mal placée car elle devrait être placée juste avant la balise de fermeture du </select> et il en va de même pour </option>

En clair l'idéal serait d'obtenir ceci :

<form name='form2' method='post' action='?do=affichage'>
<select name='numcom1'>
<option value='0611hmF19qYb'>0611hmF19qYb du 19-11-2006</option>
<option value='0612yLg2YkGm'>0612yLg2YkGm du 03-12-2006</option></select><input type='hidden' name='numclient' value='0000-00000A'>
<input type='submit' name='Submit3' value='Visualiser' class='b'>
</form>


Reste à savoir comment, je sens que je suis pas loin mais je trouve pas...

A+ Olive33
0