Je suis nouveau sur php, je voudrais générer la même liste déroulante de sélection. C'est le code que j'ai, mais cela ne fonctionne que pour le premier menu déroulant, pas pour le second ...
C'est le code que j'utilise sans succès:
<?php
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>'.$row["id"].'</td>
<td class="last_name" >
<select id="t1"><option>'.$row["t1"].'</option>';
while($rowcode=mysqli_fetch_array($resulttasks))
{ $output .= '<option value="'.$rowcode["id"].'">'.$rowcode["code"].'</option>' ; }
$output .='</select>
</td>
<td class="last_name" >
<select id="t2"><option>'.$row["t2"].'</option>';
while($rowcode=mysqli_fetch_array($resulttasks))
{ $output .= '<option value="'.$rowcode["id"].'">'.$rowcode["code"].'</option>'; }
$output .='</select>
</td>
</tr>';
?>
Merci d'avance pour l'aide!
3 Réponses :
L'attribut id doit être unique, remplacez les doublons par des classes communes:
<select class="t1">
Doit être:
<select id="t1">
Je pense que c'est déjà unique
@drb, vous utilisez la boucle
À l'intérieur d'un foreach, il sera dupliqué si le foreach boucle 3 fois, nous finirons avec 3 identifiants en double.
les identifiants en double ne sont que pour DOM et cela n'a rien à voir avec l'analyse HTML en PHP. Si vous remarquez, il utilise le même jeu de résultats deux fois, PHP n'exécute pas une autre boucle sur les mêmes données une fois le processus déjà. Nous devons donc réinitialiser à la 0ème ligne si nous voulons exécuter une autre boucle sur le même jeu de résultats.
Bonne prise @DanishHakimKhan +1
Les identificateurs dupliqués ne sont pas le problème, avant la deuxième boucle de "t2" select, essayez de mettre mysqli_data_seek($resulttasks,0);
Explication: les identifiants en double ne sont que pour DOM et cela n'a rien à voir avec l'analyse HTML en PHP. Si vous remarquez, il utilise le même jeu de résultats deux fois, PHP n'exécute pas une autre boucle sur les mêmes données une fois le processus déjà. Nous devons donc réinitialiser à la 0ème ligne si nous voulons exécuter une autre boucle sur le même jeu de résultats.
Merci beaucoup ! pouvez-vous me dire pourquoi je dois faire ça?
Vous pouvez vérifier mon commentaire ci-dessus dans la première réponse, et si ma solution fonctionne pour vous, rendez-vous service :).
j'espère que cela vous aidera changez votre identifiant avec boucle exemple
$index = 1;
for($i = 0; $i < $count_array; $i ++) {
echo '<select id="t1' . $index . '"></select>';
$index ++;
}
id = "t1"ID ne répétera pas l'utilisation d'ID différents ou n'utilisera pas de classe ici.avant la deuxième boucle de "t2", essayez de mettre
mysqli_data_seek ($ resulttasks, 0);