0

ドロップダウン内で、ユーザーが他のユーザーをいくつかの種類の方法(名、姓、ユーザー名、または電子メール)で検索できる検索ボックスがあります。このドロップダウンには上位8つの結果が表示され、下部にリンクが表示され、検索に入力された可能性のあるテキストでさらに結果を検索できます。

たとえば、JOHNと入力しても、彼の名前の「JO」とだけ入力した場合、これは$_GET['t']が検索結果ページに送信する値です。だから私はリンクまで行きました。しかし、私はクエリがどうあるべきかわかりません

その他の結果リンクを表示

<a href='include/searchresults.php?ref=".$_GET['t']."'>Show More Results for ".$_GET['t']."</a>

SEARCHRUSULTS.PHP

    if(isset($_GET['t'])){
$_GET['t'] = str_replace(" ", "", $_GET['t']);
$_GET['t'] = str_replace("%", "", $_GET['t']);

$_GET['t'] = mysqli_real_escape_string($mysqli,$_GET['t']);

if(strlen($_GET['t'])>1){

$sql="SELECT * FROM users WHERE username LIKE '%".$_GET['t']."%' OR first LIKE '%".$_GET['t']."%' OR last LIKE '%".$_GET['t']."%' OR email LIKE '%".$_GET['t']."%' ORDER BY first ASC";
$query=mysqli_query($mysqli,$sql);
$count = mysqli_num_rows($query); 

    if($count<=0){
        echo "No results found";
    }else{
    echo "<table width='100%'>";
        while($user_data=mysqli_fetch_array($query)){}
4

1 に答える 1

1

このようなことを試してください。LIKEの代わりにMATCHを使用する方がはるかに高速です。

$keyword=mysql_real_escape_string($_GET['t']);
$rowsperpage=8;
$sql="SELECT * FROM users WHERE MATCH (first, last, email) AGAINST ('+$keyword*' IN BOOLEAN MODE)   ORDER by first LIMIT $rowsperpage"; 
$query=mysqli_query($mysqli,$sql);
$count = mysqli_num_rows($query); 

好きなように設定$rowsperpageします。

より多くの結果ページについては、このようなことをしてください

$rowsperpage=mysql_real_escape_string($_GET['rpp']);
<a href='include/searchresults.php?t=$keyword&rpp=$rowsperpage'>Show More Results for "$keyword"</a>
于 2012-08-25T15:31:59.433 に答える