簡體   English   中英

MySQLi / PHP表過濾結果查詢

[英]MySQLi / PHP tables filter results query

一旦輸入要搜索的值,我希望過濾結果,以便表標題鏈接僅返回搜索結果。 當前,它返回整個表。 我該怎么做? 通過更改表格的形式來獲得? 有任何想法嗎?

編輯****我還沒有很好地解釋自己。 通常,該表將顯示20多個記錄,可通過單擊表標題對其進行排序。 搜索完成后,我希望表標題僅對搜索結果進行排序。 IE瀏覽器如果我搜索“ Tom”,它返回了3個結果,我希望標題中的鏈接僅對這3個返回的結果進行排序****

謝謝。

<?php


include 'dbconnect.php';

if(isset($_POST['search'])) {

$valueToSearch = mysqli_real_escape_string($db, $_POST['valueToSearch']);
// search in all table columns
// using concat mysql function
$sql = "SELECT * FROM contacts 
        WHERE CONCAT(FirstName, Surname, Email, HomePhone, MobPhone) 
        LIKE '%".$valueToSearch."%'";

$query = mysqli_query($db,$sql);

} else {




$orderBy = "FirstName";
$order = "asc";

 if(!empty($_GET["orderby"])) {
$orderBy = $_GET["orderby"];
}
if(!empty($_GET["order"])) {
$order = $_GET["order"];
}

$firstOrder = "asc";
$SurOrder = "asc";
$emailOrder = "desc";

if($orderBy == "FirstName" and $order == "asc") {
    $firstOrder = "desc";
}
if($orderBy == "Surname" and $order == "asc") {
    $surOrder = "desc";
}
if($orderBy == "Email" and $order == "desc") {
    $emailOrder = "asc";
}

// Build an SQL Query
$sql = "SELECT * from contacts ORDER BY " . $orderBy . " " . $order;


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

}

?>



    <form action="front-contact.php" method="post">
    <input type="text" name="valueToSearch" placeholder="Value To Search"><br><br>
    <input type="submit" name="search" value="Filter"><br><br>

    <form action='' method=post>
    <table border='1'>
    <tr>
    <th><a href="?orderby=FirstName&order=<?php echo $firstOrder; ?>">First Name</a></th>
    <th><a href="?orderby=Surname&order=<?php echo $surOrder; ?>">Surname</th>
    <th><a href="?orderby=Email&order=<?php echo $emailOrder; ?>">Email Address</th>
    <th>Home Number</th>
    <th>Mobile Number</th>
    </tr>

  <?php




        // Loop through each returned record and store the data in $row.. // 
    while ($row = mysqli_fetch_assoc($query)) {


    // Output the column-name of $row using the array-notation // 

        echo "<form action='' method=post>";
        echo "<tr>";
        echo "<td>".$row['FirstName']."</td>";
        echo "<td>".$row['Surname']."</td>";
        echo "<td>".$row['Email']."</td>";
        echo "<td>".$row['HomePhone']."</td>";
        echo "<td>".$row['MobPhone']."</td>";
        echo " </form>";
        echo "</tr>";

    }

       echo "</table>";


?>

這更有意義。 謝謝您的澄清。 我想知道是否在排序時是否將搜索查詢填充到valueToSearch輸入中,是否可以保留搜索結果。 像這樣:

<input type="text" name="valueToSearch" placeholder="Value To Search" value="<?php echo isset($valueToSearch) ? $valueToSearch : '' ?>">

進行初始搜索時,輸入可能會被清除,因此當您對表進行排序時,它會重新查詢數據庫,但是由於輸入為空,因此它將再次拉出所有數據庫記錄。 那是我的想法。 讓我知道它是否無效。

如何在這里搜索過濾器表

 <?php $servername="localhost"; $username="root"; $password=""; $dbName="multi_login"; $con=new mysqli($servername,$username,$password,$dbName); if($con->connect_error){ die("Connection failed:" . $con->connect_error ); } while($row=$result->fetch_object()){ $total=$row->salary*$row->tax; echo'<tr> <td>'.$row->id.'</td> <td>'.$row->name.'</td> <td>'.$row->sex.'</td> <td>'.$row->date.'</td> <td>'.$row->salary.'</td> <td>'.$row->tax.'</td> <td>'.$total.'</td> <td> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM