我有一个代码,当一个人登录时,它会自动显示与他们的帐户相关的某些信息。我正试图将此信息列在下拉列表中,每个结果都作为一个新选项。现在它正在发布结果,但都在同一行。
当前输出图像
此图显示查询当前如何输出结果。我需要将这些名称分别放在一行中,而不是作为同一个选项。
<?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>";
?>
如果我不尝试使用下拉列表,但我需要为表单提供一个选择选项,则我的查询输出良好。
不要使用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
,也不需要选择所有其他列。
我使用foreach来测试它,它运行得很好。
$row = array('test', 'test 1', 'test 2');
echo "<select name='character'>";
foreach ($row as $result) {
echo "<option value='$result'>$result</option>";
}
echo "</select>";