0

データベースでユーザーを検索するための検索バーを作成しました。以下にコードを共有します。しかし、1 つの問題は、テーブルに 5 人のユーザーがいる場合、これらの 5 人のユーザーが表示されますが、1,000 人の場合は 1,000 人すべてが表示されることです。

私がそれを制限しようとしても、うまくいきませんでした。時々、PHP スクリプトを完全に強制終了します。

それを解決し、以下のコードから検索クエリごとに表示される結果を 5 つだけに制限する方法を知っている人はいますか?

HTML 入力と AJAX スクリプト:

<input id="text" type="text" name="text" onkeyup="showHint(this.value)" autocomplete="off" />
<div id="inner" class="inner"></div>
<script>
  function showHint(str) {
    if (str.length==0) {
      document.getElementById("inner").innerHTML="You haven't search. Please have :D";
      return;
    }
    if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    } else {
      // code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function() {
      if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("inner").innerHTML=xmlhttp.responseText;
      }
    }
    xmlhttp.open("REQUEST","searchquery.php?text="+str,true);
    xmlhttp.send();
  }
</script>

AND searchquery.php :

<?
  $text = $_REQUEST['text'];
  $text = preg_replace('#[^a-z0-9]#i', '', $text);
  function connect($database) {
    mysql_connect('localhost','root','');
  mysql_select_db($database);
  }
  connect('developing');
  $query = "SELECT * FROM users WHERE first_name LIKE '%$text%' OR last_name LIKE '%$text%'";
  $action = mysql_query($query);
  $result = mysql_num_rows($action);
  if ($result == 0) {
    $output = "User does not exist...";
  }else{
    while ($row = mysql_fetch_array($action)) {
      $output .= '<div class="output"><img src="/'.$row['avatar'].'"><a href="#">'.$row['first_name'].' '.$row['last_name'].'</div><br />';
    }
  }
  echo $output;
?>

その制限を作成する方法について、誰かが解決策を見ることができますか?

4

1 に答える 1