Я новичок в php, я хотел бы создать такой же раскрывающийся список выбора. Это код, который у меня есть, но он работает только для первого раскрывающегося списка, а не для второго...
Это код, который я использую без каких-либо успехов:
<?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>';
?>
Заранее спасибо за помощь !
перед второй петлей "т2" попробуйте поставить mysqli_data_seek($resulttasks,0);
Атрибут id
должен быть уникальным, замените повторяющиеся на общие классы:
<select id = "t1">
Должно быть :
<select class = "t1">
Поэтому, когда вы перебираете $result
, вы не будете генерировать повторяющиеся идентификаторы.
Я думаю, что это уже уникальный <select id = "t1"> & <select id = "t2"> или я ошибаюсь?
@drb, ты используешь цикл
Внутри foreach он будет дублироваться, если foreach
будет повторяться 3 раза, мы получим 3 повторяющихся идентификатора.
повторяющиеся идентификаторы предназначены только для DOM и не имеют ничего общего с разбором HTML в PHP. Если вы, ребята, заметили, он использует один и тот же результирующий набор два раза, PHP не запускает еще один цикл с теми же данными после их обработки. Итак, мы должны сбросить до 0-й строки, если мы хотим запустить еще один цикл с тем же набором результатов.
Хороший улов @DanishHakimKhan +1
Повторяющиеся идентификаторы не проблема, перед вторым циклом выбора "t2" попробуйте поставить mysqli_data_seek($resulttasks,0);
Объяснение: повторяющиеся идентификаторы предназначены только для DOM и не имеют ничего общего с разбором HTML в PHP. Если вы, ребята, заметили, он использует один и тот же результирующий набор два раза, PHP не запускает еще один цикл с теми же данными после их обработки. Итак, мы должны сбросить до 0-й строки, если мы хотим запустить еще один цикл с тем же набором результатов.
Большое спасибо ! Вы можете сказать мне, почему я должен это делать?
Вы можете проверить мой комментарий выше в первом ответе, и если мое решение работает для вас, сделайте одолжение :).
надеюсь, это поможет вам изменить свой идентификатор с циклом пример
$index = 1;
for($i = 0; $i < $count_array; $i ++) {
echo '<select id = "t1' . $index . '"></select>';
$index ++;
}
id = "t1"
Идентификатор не будет повторяться, используйте разные идентификаторы или используйте класс здесь.