下拉列表仅出现在第一个表行中

时间:2015-12-28 17:43:52

标签: php forms html-table dropdown

以下是我的问题:

$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 } ?>

表格的屏幕截图:

enter image description here

1 个答案:

答案 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