php - 带下拉菜单的搜索表单

标签 php html mysql

我正在尝试使用输入创建一个基本的高级搜索,然后该输入将搜索具有在下拉列表中选择的匹配类别字段的任何结果,然后还有“advancedSearch”中company_name的匹配关键字字段。我已经到了可以使用下拉菜单显示匹配数据的阶段,但我在使用搜索输入查询该数据时遇到了困难。

这是我来自index.php的表单代码

<form action="advanced-search.php" method="POST">   
    <input id="advancedInput" placeholder="Advanced Search" type="search" name="advancedSearch"> 

    <?php 
        $sqlSelect="SELECT category FROM categories";
        $result = $db -> query ($sqlSelect);

        echo "<select id=\"selectAdvanced\" name=\"value\">"; 
        echo "<option></option>";

        while ($row = mysqli_fetch_array($result)) {
            $rows[] = $row;
        }

        foreach ($rows as $row) {
            print "<option value='" . $row['category'] . "'>" . $row['category'] . "</option>";
        }

        echo "</select>";
    ?>

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

这是我的 Advanced-search.php 中的代码

<?php    

if(isset($_POST['value']) && !empty($_POST['value'])) {

    $username = trim(strip_tags($_POST['value']));

    include('dbConfig.php');

    if (mysqli_connect_errno()) {
        printf("Can't connect: %s\n", mysqli_connect_error());
        exit();
    }
    $where = ($username == "category")? "" : " WHERE category = '$username'";
    $sql = "SELECT * FROM company_listings" . $where; // Create Query 

    $result = mysqli_query($db, $sql);  // Run Query

    echo "<table border=1><tr><th>id</th><th>name</th><th>created</th></tr>";

    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
        echo "<tr>";
        echo "<td>" . $row['id'] . "</td>";
        echo "<td>" .  $row['company_name'] . "</td>";
        echo "<td>" . $row['created'] . "</td>";
        echo "</tr>";    
    }

    echo "</table>";
    mysqli_free_result($result);
}

这段代码非常适合从下拉列表中回显匹配的类别,但我无法弄清楚如何从“高级搜索”输入中进一步查询搜索。

任何帮助将不胜感激。

最佳答案

我发现在这样的查询中使用 AND 并使用提交时的请求我能够得到我想要的东西......感谢@ADyson 的插入。我已在下面添加了更新的 advance-search.php 文件;

if(isset($_REQUEST['submit'])){

$username = (($_POST['value']));

$advanced = (($_POST['advancedSearch']));

include('dbConfig.php');

if (mysqli_connect_errno()) {
    printf("Can't connect: %s\n", mysqli_connect_error());
    exit();
}

$sql=" SELECT * FROM company_listings WHERE company_name like '%".$advanced."%' AND category LIKE '%".$username."%'";

$result = mysqli_query($db, $sql);  // Run Query

echo "<table border=1><tr><th>id</th><th>name</th><th>created</th></tr>";

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
    echo "<tr>";
    echo "<td>" . $row['id'] . "</td>";
    echo "<td>" .  $row['company_name'] . "</td>";
    echo "<td>" . $row['created'] . "</td>";
    echo "</tr>";    
}

echo "</table>";
mysqli_free_result($result);
}

关于php - 带下拉菜单的搜索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283462/

相关文章:

javascript - 使用来自 w3data 的包含 html,JavaScript ( jquery ) 不工作

mysql - 我们的 MySQL 数据库应该与我们的 Apache 服务器分开吗?

mysql - 在 MySQL 中存储数据

php - SQL : selecting customers that haven't had an entry in past 2 weeks

php - 如何使用 javascript 或 jQuery 进行计算,从各种不同的元素中获取值?

html - flexbox 中文本对齐的媒体查询

MySql 与 SQL-Server 的性能问题

php/mysql 排序问题和表单清理?

php - 验证预约表

html - 有没有办法更改 CSS 中的类名,并且 HTML 页面中找到的所有实例都链接到 CSS?