Отображение результатов Mysqli в выпадающем списке

У меня есть код, который, когда человек входит в систему, отображает определенную информацию, автоматически связанную с его учетной записью. Я пытаюсь получить это, чтобы перечислить информацию в раскрывающемся списке с каждым результатом в качестве новой опции. Прямо сейчас он публикует результаты, но все в одной строке.

Текущее изображение на выходе

Это изображение показывает, как запрос в настоящее время выводит результаты. Мне нужно каждое из этих имен в отдельной строке, а не как один и тот же параметр.

<?php
$results = mysqli_query($db, "SELECT u.Name AS Name, u.activation as activation, u.lastlogin AS lastlogin, u.dwForbidTime AS dwForbidTime, u.RegDate AS RegDate, u.email AS email, group_concat(distinct g.szName SEPARATOR '<br />') AS szName, g.byShape as byShape, g.Level as Level
FROM user AS u
LEFT JOIN gamedata AS g on u.name = g.szAccountName
WHERE Name='$user_check'
ORDER BY g.szAccountName DESC
LIMIT 3") or die("Error: " . mysqli_error($db));
echo "<select name='character'>";
while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
echo '<option value="' . $row['szName'] . '">' . $row['szName'] . '</option>';
}
echo "</select>";
?>

Мой запрос выводится нормально, если я не пытаюсь использовать выпадающий список, но мне нужно предоставить опцию выбора для формы.

0

Решение

Не использовать GROUP_CONCAT(), Это объединяет все ваши результаты в одну строку, с <br> между каждым именем. Ваш while Цикл ожидает, что каждое имя будет в отдельной строке результатов.

$results = mysqli_query($db, "SELECT distinct g.szName
FROM user AS u
LEFT JOIN gamedata AS g on u.name = g.szAccountName
WHERE Name='$user_check'
ORDER BY g.szAccountName DESC
LIMIT 3") or die("Error: " . mysqli_error($db));

Вам также не нужно выбирать все остальные столбцы, если вы только показываете szName в раскрывающемся меню.

1

Другие решения

Я использовал foreach для тестирования этого, и он работал отлично.

$row = array('test', 'test 1', 'test 2');
echo "<select name='character'>";
foreach ($row as $result) {
echo "<option value='$result'>$result</option>";
}
echo "</select>";
-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector