仅返回表中搜索到的行并隐藏其他行

时间:2016-07-20 12:35:55

标签: php

如果我在搜索框中写了一些东西并按搜索,它应该只返回匹配的行并隐藏其他行。

这是我的代码,它的工作完美唯一的问题是它给了我搜索记录+所有表的记录列表。 如何在表格中仅显示搜索到的数据?

<div id="pageContent"><br />
    <div class="search" align="right">
        <form action="" method="post">  
            Search: <input type="text" name="term" /><br />  
            <input type="submit" value="Submit" /> 
        </form>  
    </div>
    <div class="container">
        <table id="employee-grid" width="auto" cellpadding="1" cellspacing="1" border="1" class="table table-hover">
    <?php 
        include_once '../storescripts/connect_to_mysql.php'; 
        $num_rec_per_page=5;
        if (isset($_GET["page"]))
        { 
            $page  = $_GET["page"];
        }
        else 
        { 
            $page=1;
        } 
        $start_from = ($page-1) * $num_rec_per_page; 
        $result= mysql_query("SELECT * FROM products LIMIT $start_from, $num_rec_per_page");
    ?>
            <thead>
                <tr class="success">
                    <th>Id</th>
                    <th>Product Name</th>
                    <th>Price</th>
                    <th>Status</th>
                    <th>Quantity</th>
                    <th>Details</th>
                    <th>Category</th>
                    <th>Subcategory</th>
                    <th>Date Added</th>
                    <th colspan="2">Functions</th>
                </tr>
            </thead>
    <?php
        if (!empty($_REQUEST['term'])) {
            $term = mysql_real_escape_string($_REQUEST['term']);     

            $sql = "SELECT * FROM products WHERE product_name  LIKE '%".$term."%' or price LIKE '%".$term."'  or details LIKE '%".$term."'"; 

            $r_query = mysql_query($sql); 
            if($r_query>1)
            {
                while ($row = mysql_fetch_array($r_query)){  
                    echo "<tr bgcolor='red'>";
                    echo "<td>".$row['id']."</td>";                 
                    echo "<td>".$row['product_name']."</td>";
                    echo "<td>".$row['price']."</td>";
                    echo "<td>".$row['status']."</td>";
                    echo "<td>".$row['quantity']."</td>";
                    echo "<td>".$row['details']."</td>";
                    echo "<td>".$row['category']."</td>";
                    echo "<td>".$row['subcategory']."</td>";
                    echo "<td>".$row['date_added']."</td>";
                    echo "<td><a href='product_listing_edit.php?id=".$row['id']."'>Edit</a></td>";
                    echo "<td><a name='delete' href='product_listing_delete.php?id=".$row['id']."'>Delete</a></td><tr>";
                    echo "</tr>";
                }  
            }
            else{
                echo "Nothing should be displayed";
            }
        }
    ?>
    <?php 
        while($row=mysql_fetch_array($result))
        {
            echo "<tr class='danger'>";
            echo "<td>".$row['id']."</td>";
            echo "<td>".$row['product_name']."</td>";
            echo "<td>".$row['price']."</td>";
            echo "<td>".$row['status']."</td>";
            echo "<td>".$row['quantity']."</td>";
            echo "<td>".$row['details']."</td>";
            echo "<td>".$row['category']."</td>";
            echo "<td>".$row['subcategory']."</td>";
            echo "<td>".$row['date_added']."</td>";
            echo "<td><a href='product_listing_edit.php?id=".$row['id']."'>Edit</a></td>";
            echo "<td><a name='delete' href='product_listing_delete.php?id=".$row['id']."'>Delete</a></td><tr>";
            echo "</tr>";
        }
    ?>
        </table>

1 个答案:

答案 0 :(得分:0)

只需保持单个while循环并运行查询和搜索查询,如下所示它将解决问题:

<div id="pageContent"><br />
    <div class="search" align="right">
        <form action="" method="post">  

            Search: <input type="text" name="term" /><br />  
            <input type="submit" value="Submit" /> 
        </form>  
    </div>
    <div class="container">
        <table id="employee-grid" width="auto" cellpadding="1" cellspacing="1" border="1" class="table table-hover">
            <?php
            include_once '../storescripts/connect_to_mysql.php';
            $num_rec_per_page = 5;
            if (isset($_GET["page"])) {
                $page = $_GET["page"];
            } else {
                $page = 1;
            };
            $start_from = ($page - 1) * $num_rec_per_page;
            $sql = "SELECT * FROM products LIMIT $start_from, $num_rec_per_page";
            ?>
            <thead>
                <tr class="success">
                    <th>Id</th>
                    <th>Product Name</th>
                    <th>Price</th>
                    <th>Status</th>
                    <th>Quantity</th>
                    <th>Details</th>
                    <th>Category</th>
                    <th>Subcategory</th>
                    <th>Date Added</th>
                    <th colspan="2">Functions</th>
                </tr>
            </thead>


<?php
if (!empty($_REQUEST['term'])) {

    $term = mysql_real_escape_string($_REQUEST['term']);

    $sql = "SELECT * FROM products WHERE product_name  LIKE '%" . $term . "%' or price LIKE '%" . $term . "'  or details LIKE '%" . $term . "'";
}
$r_query = mysql_query($sql);
if ($r_query > 1) {

    while ($row = mysql_fetch_array($r_query)) {
        echo "<tr bgcolor='red'>";
        echo "<td>" . $row['id'] . "</td>";
        echo "<td>" . $row['product_name'] . "</td>";
        echo "<td>" . $row['price'] . "</td>";
        echo "<td>" . $row['status'] . "</td>";
        echo "<td>" . $row['quantity'] . "</td>";
        echo "<td>" . $row['details'] . "</td>";
        echo "<td>" . $row['category'] . "</td>";
        echo "<td>" . $row['subcategory'] . "</td>";
        echo "<td>" . $row['date_added'] . "</td>";
        echo "<td><a href='product_listing_edit.php?id=" . $row['id'] . "'>Edit</a></td>";
        echo "<td><a name='delete' href='product_listing_delete.php?id=" . $row['id'] . "'>Delete</a></td><tr>";



        echo "</tr>";
    }
} else {
    echo "Nothing should be displayed";
}
?>
        </table>