2014-12-27 40 views
-2

我正在做一個搜索頁面,從數據庫中獲取信息。我想要一個類似於http://designspiration.net/網站的搜索。搜索結果沒有按下輸入或提交

所以我想要的是它顯示的結果沒有按下輸入或提交,所以它顯示的建議根據寫的信件。

我有這樣的事情至今:

div class="container"> 
     <div class="row"> 
      <div class="col-md-10"> 
       <form action="#" method="POST"> 
        <textarea name="search"></textarea> 
        <input type="submit" name="enter_search" > 
       </form> 
      </div> 
     </div> 

     <?php 

     if (isset($_POST['enter_search'])) { 
      $name = $_POST['search']; 

      $sql = <<<SQL 
      SELECT `name` 
      FROM `teachers` 
      WHERE `name` LIKE '%{$name}%' 
SQL; 

      if(!$result = $con->query($sql)){ 
       die('There was an error running the query [' . $con->error . ']'); 
      } 

      while($row = $result->fetch_array()){ 
       echo $row['name'] . '<br />'; } 
      } 

      ?> 


      </div> 

如果我添加一個提交按鈕它的工作原理,但我不能讓沒有它的工作。 謝謝您的幫助:)

+0

如果它是表單的一部分,可以將查詢附加到textarea中的onchange事件。也許確定查詢速度很快。還有其他庫提供支持變更事件的不同文本控件。 – adamdc78 2014-12-27 20:33:22

+0

mysql_函數已被棄用,請使用[mysqli](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/tr/book.pdo .php)而不是mysql_函數。 – salep 2014-12-27 20:34:57

+1

你需要一些JavaScript來完成這項工作。確保也保留提交按鈕,並使用JavaScript隱藏它(如果你想隱藏它),否則如果腳本不起作用,人們將無法搜索。 – GolezTrol 2014-12-27 20:35:18

回答

1

什麼你指的是客戶端操作,並且不能與php,只有htmlmysql來實現。這基本上是一個JavaScript問題。

你應該在jQuery UI's autocomplete feature,或者如果你想在這裏建立自己的機制考慮看看開始有一些線索:

您需要的時候文本輸入正在改變進行檢測,這樣你就可以開始查詢時該短語被更新。您可以使用input/change事件或​​/keyup/keypress這樣做。

這將是很好等待用戶不再問你的服務器做數據庫操作前打字,這裏是你如何可以檢測輸入端:How to trigger an event in input text after I stop typing/writing?

你需要不斷與服務器用ajax comunicate並很好地處理返回的數據。