Поэтому у меня есть несколько выпадающих списков на странице. Но мне нужно, чтобы они записывали свои записи из одного запроса базы данных, чтобы все выпадающие списки имели одинаковые списки. Я попытался это достичь, но то, что я получаю, – это только первое падение, которое заселяется. Это то, что я сделал ниже и нуждаюсь в помощи.
<select name="pl2a" class="input-field-login3" id="pl2a" tabindex="1"> <option selected="Selected">--Select Player--</option> <?php do { ?> <option value="<?php echo $row_playersa['plyName']; ?>"><?php echo $row_playersa['plyName']; ?></option> <?php } while ($row_playersa = mysqli_fetch_assoc($result_playersa)); ?> </select>
Я использовал это повторно для всех выпадающих списков, просто изменив имя, чтобы дифференцировать. Но только первое падение вниз заселяется.
mysqli_fetch_assoc
потребляет строки из набора результатов, как вы его используете. Таким образом, после создания первого выпадающего списка вы достигли конца набора результатов, и дальнейшие вызовы mysqli_fetch_assoc
вернут значение null
. Чтобы решить эту проблему, сохраните результаты в массиве по мере их извлечения до вывода любого из выпадающих меню. Массив будет повторно использоваться.
Так сделайте это один раз:
<?php while ($row_playersa = mysqli_fetch_assoc($result_playersa)) { $players[] = $row_playersa; } ?>
И тогда вы можете делать это столько раз, сколько вам нужно:
<select name="pl2a" class="input-field-login3" id="pl2a" tabindex="1"> <option selected="Selected">--Select Player--</option> <?php foreach ($players as $player): ?> <option value="<?php echo $player['plyName'] ?>"><?php echo $player['plyName'] ?></option> <?php endforeach ?> </select>