如何从我的数据库中填充的 table 进行搜索

how to search from a table populated from my database

我有一个 MySQL 数据库 table 作为用户。

我正在使用 php 和 ajax 填充 html table。(工作正常)

但是我想搜索具体的数据,也写了一些代码,但没有得到什么是我的错误。

我的index.html

<body>
    <div class="container">
                <h3>Product List</h3>
            <div id="users-grid">               
            </div>
        </div>
</body>
<script>
    function getresult(url) {    
    $.ajax({
        url: url,
        type: "POST",
        success: function(data){ $("#users-grid").html(data);}
       });
    }
    getresult("getresult.php");
</script>

我的getresult.php(用于填充#users-grid)

<?php 
    include 'database.php';
    $pdo = Database::connect();
    $product = "";
    $queryCondition = "";
?>
<form name="frmSearch" method="post" action="index.php">

    <div class="search-box">
    <p>
    <input type="text" placeholder="Product Name" name="product"  value="<?php echo $product; ?>"   />
    <input type="button" name="go" class="btnSearch" value="Search" onclick="getresult('getresult.php')">
    <input type="reset" class="btnSearch" value="Reset" onclick="window.location='index.php'"></p>
    </div>

    <table class="table table-striped table-bordered" class="tablesorter">
        <thead>
            <tr>
            <th>Date</th>
            <th>Product</th>
            <th>Quantity</th>
            <th>Gross Price</th>
            <th>Profit</th>
            </tr>
        </thead>
        <tbody>
            <?php
                $queryCondition = "";
                if(!empty($_POST["product"])) {
                    $queryCondition .= " WHERE product LIKE '" . $_POST["product"] . "%'";
                }
                $orderby = " ORDER BY id desc"; 
                $sql = "SELECT * FROM users " . $queryCondition . $orderby;
                foreach ($pdo->query($sql) as $row) {
                    echo '<tr>';
                    echo '<td>'. $row['date'] . '</td>';
                    echo '<td>'. $row['product'] . '</td>';
                    echo '<td>'. $row['quantity'] . '</td>';
                    echo '<td>'. $row['grossprice'] . '</td>';
                    echo '<td>'. $row['profit'] . '</td>';
                    echo '</tr>';
                }
                Database::disconnect();
            ?>
        </tbody>
    </table>
</form>

谢谢

此代码将搜索以您的搜索查询开头的任何内容

$queryCondition .= " WHERE product LIKE '" . $_POST["product"] . "%'";

我想你应该把它改成这样才能进行全面搜索

$queryCondition .= " WHERE product LIKE '%" . $_POST["product"] . "%'";

当你点击你的提交按钮时,它只会在用户点击按钮时触发,但当用户在文本上输入内容并按回车键时,它会提交你的表单,所以你必须将代码更改为这个

<form name="frmSearch" method="post" onsubmit="return getresult('getresult.php')">
    <div class="search-box">
        <input type="text" placeholder="Product Name" name="product" value="<?php if(isset($_POST["product"])) echo $_POST["product"]; ?>"   />
        <input type="button" name="go" class="btnSearch" value="Search">
        <input type="reset" class="btnSearch" value="Reset" onclick="window.location='index.php'">
    </div>
</form>

我更改了输入值以显示您的搜索查询。 return 部分用于停止页面重新加载

要发送 POST 数据,您必须将 ajax 代码更改为此

function getresult(url) {   
    $.ajax({
        url: url,
        type: "POST",
        data: {product: $('input[name=product]').val()},
        success: function(data){ $("#users-grid").html(data);}
   });
   return false
}