検索する値を入力すると結果をフィルタリングしたいので、テーブルのヘッダリンクは検索結果のみを返すようにしています。現在は、テーブル全体を返します。 どうすればいいですか?ポストからフォームに変更することで?何か案は?MySQLi/PHPテーブルのフィルタ結果のクエリ
EDIT ****私は自分自身を非常にうまく説明していません。 通常、テーブルには20以上のレコードが表示され、テーブルヘッダーをクリックするとソートできます。検索が完了したら、私はテーブルヘッダー検索結果を並べ替えるだけです。 I.私は 'トム'を検索し、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>";
?>
あなたはOPに含まれるファイルの名前は何ですか?このコードを使用したい場合は 'front-contact.php'にする必要があります。このコードはそのページですか? – Michael
これはページの名前です – Tatws24
'$ _POST ['search']'と '$ _POST ['valueToSearch']'の値をエコーして、実際に探している値かどうか試しましたか?私は提出時にエラーもないと思いますが、正しいのでしょうか? – Michael