【问题标题】:How can I create a dropdown menu to search my MySQL database?如何创建一个下拉菜单来搜索我的 MySQL 数据库?
【发布时间】:2021-08-17 16:17:13
【问题描述】:

我必须创建一个搜索表单来从 MySQL 数据库中检索数据。

我用它来创建一个类别的下拉选择。它确实有效,并且菜单清楚地链接到数据库,因为所有类别都显示出来了。

但现在我不知道如何将下拉菜单的选择实现到查询中。

<form class="form-horizontal" action="search_keyword.php">
 Analysegegenstand
  <select>
      <label class="col-md-4 control-label" for="searchinput">Analysegegenstand</label>
    <option disabled selected id="searchinput" name="type_select" type="select">Analysegegenstand wählen</option>
    <?php
        include "db_connect.php";
        
        $records = mysqli_query($mysqli, "SELECT Analysegegenstand From Analysegegenstand"); 

        while($data = mysqli_fetch_array($records))
        {
            echo "<option value='". $data['Analysegegenstand'] ."'>" .$data['Analysegegenstand'] ."</option>"; 
        }   
    ?>  
  </select>
  

</fieldset>
</form>

【问题讨论】:

  • 那么下拉菜单必须是表单的一部分。然后,您需要一些其他 PHP 代码来处理正在提交的表单并从表单数据中读取选定的类别 ID,并将其用作 SQL 查询中的参数。您以前使用过 PHP 和表单吗?或者尝试搜索与该主题相关的任何内容?因为这些都是您可以在教程甚至文档中找到的非常标准的东西。

标签: php html mysqli


【解决方案1】:

首先,您需要修复 &lt;select&gt;&lt;option&gt; 元素。选择标记应具有name 属性。 &lt;option&gt; 元素没有 nametype 属性。您还有一个关闭的&lt;/fieldset&gt;,您永远不会打开它。您的 &lt;label&gt; 标记也指向无效元素。要提交表单,您需要有一个提交按钮。

当整个 HTML 被修复后,它应该看起来像这样:

<form class="form-horizontal" action="search_keyword.php">
    Analysegegenstand
    <label class="col-md-4 control-label" for="searchinput">Analysegegenstand</label>
    <select name="type_select" id="searchinput">
        <option disabled selected>Analysegegenstand wählen</option>
        <?php
        include "db_connect.php";

        $records = mysqli_query($mysqli, "SELECT Analysegegenstand From Analysegegenstand");

        while ($data = mysqli_fetch_array($records)) {
            echo "<option value='" . htmlspecialchars($data['Analysegegenstand']) . "'>" . htmlspecialchars($data['Analysegegenstand']) . "</option>";
        }
        ?>
    </select>

    <input type="submit" value="Search">
</form>

当表单被提交时,您的&lt;select&gt; 的值将作为$_GET['type_select'] 提供,因为您的&lt;select&gt; 有一个name="type_select"

您需要做的就是使用准备好的语句构造一个 SQL 查询并使用选定的值执行查询。您从表单中获得的值将在WHERE 查询中使用,以将其与您尝试搜索的列进行比较。您要选择的字段也需要在SELECT 查询中列出。准备好后,将值绑定到语句上,然后在 MySQL 数据库服务器上执行。然后由您来处理您想要的结果。

在您的 search_keyword.php 文件中:

<?php

if (isset($_GET['type_select'])) {
    include "db_connect.php";

    $stmt = $mysqli->prepare("SELECT searched_fields FROM information WHERE searchable=?");
    $stmt->bind_param('s', $_GET['type_select']);
    $stmt->execute();
    $result = $stmt->get_result();
    foreach ($result as $row) {
        printf("Found: %s\n", $row['searched_fields']);
    }
}

提示:

  • 您可以在 SQL 中使用LIKE 代替=,以允许用户使用通配符%_ 进行搜索。
  • 使用PDO 比使用mysqli 好得多。它更简单,功能也更多。
  • 不要混合使用 HTML 和 PHP。将数据库逻辑与表示逻辑分开。仅使用 PHP 在 HTML 中显示数据,但在单独的 PHP 文件中准备数据。
  • 在 HTML 上下文中显示任何数据时使用 htmlspecialchars()

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多