php 表筛选结果查询

vohkndzv  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(178)

我期待过滤的结果,一旦值搜索输入,使表头链接只返回搜索结果。目前它返回整个表。我该怎么做?通过将表单从post更改为get?有什么想法吗
通常,该表将显示20多条记录,可以通过单击表头进行排序。当搜索完成后,我想表头只排序搜索结果。即,如果我搜索“汤姆”,它返回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>";

?>
nhaq1z21

nhaq1z211#

这更有道理。谢谢你的澄清。我想知道,如果用搜索查询填充valueToSearch输入,它是否会在排序时保留搜索结果。就像这样:

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

当您进行初始搜索时,输入可能会被清除,因此当您对表进行排序时,它会重新查询数据库,但由于输入为空,因此它会再次提取所有数据库记录。我是这么想的如果不行就告诉我。

相关问题