2016-06-30 17 views
0

検索する値を入力すると結果をフィルタリングしたいので、テーブルのヘッダリンクは検索結果のみを返すようにしています。現在は、テーブル全体を返します。 どうすればいいですか?ポストからフォームに変更することで?何か案は?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>"; 


?> 
+0

あなたはOPに含まれるファイルの名前は何ですか?このコードを使用したい場合は 'front-contact.php'にする必要があります。このコードはそのページですか? – Michael

+0

これはページの名前です – Tatws24

+0

'$ _POST ['search']'と '$ _POST ['valueToSearch']'の値をエコーし​​て、実際に探している値かどうか試しましたか?私は提出時にエラーもないと思いますが、正しいのでしょうか? – Michael

答えて

0

これは意味があります。明確にしていただきありがとうございます。検索クエリでvalueToSearch入力を入力した場合、ソート時に検索結果を保持するかどうかは疑問です。このような何か:あなたはあなたの最初の検索を行う際に

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

入力はおそらくあなたがあなたのテーブルを並べ替えるために行くときに、それが再照会データベースですが、入力が空であるので、それはそれから引っ張っています、クリアされていますすべてのデータベースレコードを再度読み込みます。それは私の考えです。それが動作しない場合は教えてください。

+0

こんにちはマイケル、どちらもうまくいかないようです。 – Tatws24

0

どのようにフィルタテーブルを検索するために、ここで

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

+0

今すぐ手伝ってください –

関連する問題