2017-08-08 37 views
0

現在私の学校の図書館のウェブサイトを構築しており、複数の結果を返すために検索バーをページに表示する際に問題が発生しています。ここでは、コードは次のようになります。インスタント検索では1つのアイテムのみが返されます

PHP:

<?php 
    error_reporting(E_ALL); 
    $cont = mysqli_connect('host','username','password', 'db') or die(mysqli_connect_error()); 
    $output=''; 
    if(isset($_POST['searchVal'])){ 
     $searchkey= $_POST['searchVal']; 
     $searchkey=preg_replace("#[^0-9a-z]#i", "", $searchkey); 

    $query = mysqli_query($cont, "SELECT * FROM books WHERE Title LIKE 
    '%$searchkey%' OR Author LIKE '%$searchkey%' OR ISBN_Other_code_no LIKE 
    '%$searchkey%' ") or die('couldnotconnnect'); 
    $count = mysqli_num_rows($query); 

    if($count == 0){ 
     $output="There was no search result!"; 
    }else{ 
     while($row=mysqli_fetch_array($query)){ 
       $fname = $row['Title']; 
       $lname = $row['Author']; 
       $pname = $row['ISBN_Other_code_no']; 

      $output = "$fname $lname $pname </br>"; 

     }; 
    }; 
    }; 

    echo ($output); 
    ?> 

JS:

function searchq(){ 
     var searchTxt = $("input[name='search']").val(); 

     $.post("search.php", {searchVal: searchTxt}, function(output){ 
      $("#output").html(output); 
     }); 
}; 

私のHTMLでの投稿のみつの結果、上記のコードは10以上があるはずとき。 SQLテーブル内のすべてのステートメントをループしないようにするコードで誰かがバグを見ることができますか?または、PHPでループを作成する必要がありますか?

ありがとうございました!

+0

データベース接続の詳細などの重要なデータを投稿しないでください。 –

+0

データベースへの資格情報を編集しました - セキュリティリスクの可能性があるので、すぐにパスワード**を変更することをおすすめします**。 – Qirel

+1

実際の問題は、各繰り返しで '$ output'を上書きすることです。代わりに配列を使用するか、配列を使用してください。 $ output = "$ output =" $ fname $ lname $ pname
";' '$出力。=" $ fname $ lname $ pname
";'( '='から '。='への変更に注意してください。 – Qirel

答えて

2

他の問題を側に置くと、追加するのではなく、$outputを上書きしていることが目立ちます。試してみてください:

$output .= "$fname $lname $pname </br>"; 

注:私はゆっくりとぎこちなく私の携帯に入力している間に Qirelこの同じアドバイスを掲載。それを答えとして投稿してください。

関連する問題