2016-05-13 12 views
0

データベースがphpmyadminで作成されており、カラム数とデータ数が少なくなっています。これでブラウザのレコードを含むテーブルを表示できます。しかし、私が望むのは、データベースからフィルタリングすることによって特定の値を表示することです。以下は、私が書いたコードです。現時点では、検索フィールドに値を入力すると並べ替えられず、何もしません。あなたのHTMLフォーム内php検索でデータベースレコードが表示されません

 <?php 
    if(isset ($_POST['search'])) 
    { 
     $valueToSearch=$_POST['valueToSearch']; 
     //$query="SELECT * FROM `books` WHERE CONCAT (`ISBN`, `Title`, `Author`)LIKE '%".$valueToSearch."%'"; 
     $query="SELECT * FROM books WHERE CONCAT ('ISBN', 'Title', 'Author')LIKE '%".$valueToSearch."%'"; 
     $serach_result=filterTable($query); 
    }else{ 
     $query="SELECT * FROM books"; 
     $serach_result=filterTable($query); 
    } 

    function filterTable($query){ 

     $connect=mysqli_connect ("localhost", "root", "", "bookstore-new"); 
     $filter_result=mysqli_query($connect, $query); 
     return $filter_result; 
    } 
    ?> 
    <!DOCTYPE html> 

    <html> 
    <head> 

    <title>Lab 4</title> 

    <style> 
    table, tr, th, td 
    { 
     border: 1px solid black; 
    } 
    </style> 
</head> 
    <body> 
    <form action="bookstorewebdev.php" method="post"> 

    <input type="text" name="valueToSearch" placeholder="value to search" > 
    <br><br> 
    <input type="submit" name="Search" value="Filter" ><br><br> 
    <table> 
    <tr> 
    <th>ISBN</th> 
    <th>Title</th> 
    <th>Author</th> 
    </tr> 
     <?php while ($row=mysqli_fetch_array($serach_result)):?> 
<tr> 
    <td>&nbsp;<?php echo $row['ISBN'];?></td> 
    <td>&nbsp;<?php echo $row['Title'];?></td> 
    <td>&nbsp;<?php echo $row['Author'];?></td> 
    </tr> 
    <?php endwhile;?> 

    </table> 
</form> 
</body> 
    </html> 
+1

''ISBN'、 'Title'、 'Author''の列はありますか?現在のコードはそれを文字列として連結していますので、 'ISBNTitleAuthor'を比較しています。これはSQLインジェクションにも開かれています。 – chris85

+0

PHPマニュアルに表示されているようなコードにバリデーションを追加するべきです: 'if(!mysqli_query($ connect、" YOUR SQL ")){ printf(" Errormessage:%s \ n "、mysqli_error($ connect )); } ' –

+0

データベーステーブルのスクリーンショットを投稿できますか? –

答えて

3

あります

<input type="submit" name="Search" value="Filter"> 

Search変数を、しかし、PHPで、あなたはsearchを確認してください。 Search!= search


あなたは、変数valueToSearchをチェックしません。それは空にすることができます。 要求は失敗します。 concatについて


chris85は語りました。なぜこれが必要ですか?

+0

UserName、ありがとう、そこに間違いがあった、それは今働く。残っている唯一の問題は、フィルターボタンを2回以上押すと、再び表全体が表示されることです。フィルタボタンを何回押しても、フィルタリングされた結果のみを表示することになっています。 – Jabir

関連する問題