如何使用PHP选择框检索数据?

时间:2017-11-30 14:21:07

标签: php mysql

我在数据库中有超过100行,它们来自不同的主题,如数据库课程或网络课程。我希望用户可以从他想要显示的主题中选择哪些问题。所以我在考虑使用一个选择框,但我不知道如何使用数据库查询处理选定的框。我怎么能这样做?

目前我的代码:

<div class = "container-fluid">
    <div class =  "container">

        <?php
            $query = "SELECT def_conteudo FROM conteudo WHERE nro_conteudo BETWEEN 1 AND 100";

            $result = mysqli_query($con,$query);
             while($fetch = mysqli_fetch_row($result)){
                echo  "<li>" . $fetch[0] . "</li>";
            }
        ?>

    </div>
</div>

问题是他只是在这里展示了不同科目的所有课程,但我想让用户选择他想要显示的问题。

示例:

如果用户想要仅显示数据库课程,他将通过选择框进行选择,并在屏幕上显示该特定主题的所有问题,而不是所有主题问题。

1 个答案:

答案 0 :(得分:2)

HTML <select>元素采用<option>元素列表:

<select>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
</select>

该代码段将生成一个下拉列表,分别从选项1和选项2中选择,其值分别为1和2:https://jsfiddle.net/ux245gz3/

对于您的情况,您创建的每个<li>元素都应该是<option>块内的<select>

<div class="container-fluid">
    <div class="container">
        <select id="subject_selection">
            <?php
                $query = "SELECT def_conteudo FROM conteudo WHERE nro_conteudo BETWEEN 1 AND 100";

                $result = mysqli_query($con,$query);
                while($fetch = mysqli_fetch_row($result)){
                    echo  "<option value=\"$fetch[0]\">" . $fetch[0] . "</option>";
                }
            ?>
        </select>
    </div>
</div>

这将生成每个主题名称的列表,其中选择的值设置为显示的名称。 MDN article on <select>会提供更多相关信息。

更新以回答完整的问题:

您需要更新查询以选择显示值和每个主题的ID(假设'conteudo'表的主键名为'id'

SELECT id, def_conteudo FROM conteudo WHERE nro_conteudo BETWEEN 1 AND 100;

然后您可以使用id作为每个选项的值:

<?php
    $query = "SELECT id, def_conteudo FROM conteudo WHERE nro_conteudo BETWEEN 1 AND 100";

    $result = mysqli_query($con, $query);

    while ($fetch = mysqli_fetch_row($result)) {
        echo "<option value=\"$fetch[0]\">$fetch[1]</option>";
    }
?>

然后,一旦用户从下拉列表中选择一个选项,您就可以对该页面执行GET,并通过表单提交的主题ID查询与所选主题具有正确关系的问题或课程

SELECT * FROM <licao/pergunta> WHERE contuedo_id = $_GET["id"];

除了友好之外,此时你应该考虑使用类似PHP's PDO library的东西来自动处理动态生成的SQL语句的清理。