【问题标题】:How to retrieve data using select box with PHP?如何使用 PHP 选择框检索数据?
【发布时间】:2017-12-01 12:26:04
【问题描述】:

我的数据库中有 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>

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

例子:

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

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    HTML &lt;select&gt; 元素采用 &lt;option&gt; 元素列表:

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

    该 sn-p 将生成一个下拉列表以从选项选项 1 和选项 2 中进行选择,其值分别为 1 和 2:https://jsfiddle.net/ux245gz3/

    对于您的情况,您创建的每个 &lt;li&gt; 元素都应该是 &lt;option&gt; 内的 &lt;select&gt; 块:

    <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 &lt;select&gt; 将有更多相关信息。

    更新以回答完整问题:

    您需要更新查询以选择每个主题的显示值和 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 &lt;licao/pergunta&gt; WHERE contuedo_id = $_GET["id"];

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

    【讨论】:

    • 认为他需要复选框(尽管他说select boxes)。尽管如此;原则保持不变,而且答案很好,所以 +1
    • 您的回答非常好,但我想要的是选择主题,如数据库或网络,并显示这些主题的问题。这使得选择框中出现所有主题的所有问题。选择主题时如何使该特定主题的问题出现?我将编辑我的问题,以减少我想要的内容。
    • 我想,在选择其中一个选项后,他们会显示在选择框中选择的该主题的问题列表。
    • 希望编辑对您有所帮助!我假设您没有尝试使用的前端框架,并且您将返回数据库以检索用户选择的主题的课程或问题。
    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多