我如何创建一个下拉菜单搜索我的MySQL数据库?



我必须创建一个搜索表单从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>

首先,您需要修复您的<select><option>元素。选择标签应该有name属性。<option>元素没有nametype属性。你也有一个关闭</fieldset>,你从来没有打开过。您的<label>标记也指向无效的元素。要提交表单,您需要有一个提交按钮。

当整个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>

当表单提交时,您的<select>的值将作为$_GET['type_select']可用,因为您的<select>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: %sn", $row['searched_fields']);
}
}

提示:

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

最新更新