以下是我的问题:
$sql = "SELECT * FROM employee";
$query = "SELECT * FROM employeerole ORDER BY role_id";
$result = mysqli_query($link, $sql);
$result1 = mysqli_query($link, $query);
<?php
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
?>
<tr>
<td><?php echo $row["id"]; ?></td>
<td><?php echo $row["first_name"]; ?></td>
<td><?php echo $row["last_name"]; ?></td>
<td><?php echo $row["username"]; ?></td>
<td><?php echo $row["role"]; ?></td>
<td>
以下是我的代码,其中包含表格单元格中的下拉框,但下拉框中的数据仅显示在表格的第一行(如下面的屏幕截图所示)。
这与循环有关吗?
<form action ="change.php">
<select id="role" class="" onchange="this.form.submit()">
<?php while ($line = mysqli_fetch_array($result1, MYSQL_ASSOC)) { ?>
<option value="<?php echo $line['role_id']; ?>"><?php echo $line['role_name']; ?></option>
<?php } ?>
</select>
</form>
</td>
<td><input type="button" onclick="ConfirmDelete()" value="Delete account"</td>
</tr>
<?php } ?>
表格的屏幕截图:
答案 0 :(得分:1)
问题是,结果集$result1
在第一行本身已用完。您必须将结果指针调整为指向结果集的开头,以便您可以再次遍历它。为此使用mysqli_data_seek()
函数。
在此行mysqli_data_seek($result1, 0);
行之后添加此行..."this.form.submit()">
。
所以你的代码应该是:
// your code
<form action ="change.php">
<select id="role" class="" onchange="this.form.submit()">
<?php
mysqli_data_seek($result1, 0);
while ($line = mysqli_fetch_array($result1, MYSQLI_ASSOC)) {
?>
<option value="<?php echo $line['role_id']; ?>"><?php echo $line['role_name']; ?></option>
<?php } ?>
</select>
</form>
</td>
<td><input type="button" onclick="ConfirmDelete()" value="Delete account"</td>
</tr>
<?php } ?>
// your code