在php中实时搜索

时间:2014-04-21 19:09:44

标签: php

我有这段代码:

<script>
function aa() {
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","datafile.php?nm="+document.form1.t1.value,false);
xmlhttp.send(null);
document.getElementById("d1").innerHTML=xmlhttp.responseText; }
</script>

<form name="form1" method="post">
<input type="text" name="t1" OnKeyup="aa();" class="box" placeholder="You may search via Surname or Firstname">
<div id="d1"></div>

和datafile.php

<?php include "konek.php";
$nm1=$_GET['nm']; ?>

<?php
$res=mysql_query("select * from tblscholar where schoSurname like ('$nm1%') OR schoFirstname like ('$nm1%') AND schoUsername != 'admin'; ");

$c=1;
while($fet=mysql_fetch_row($res))
{ ?>

<td width='55%'><a href="searchviewForAdmin.php?id=<?php echo $fet[0]?>"><?php echo $fet[1]; ?> , <?php echo $fet[2]; ?> <?php echo $fet[3]; ?></a></td>

问题是,当我删除我在搜索栏中输入的所有内容时,所有结果都显示

2 个答案:

答案 0 :(得分:0)

如果输入字段为空,您只需要清除数据:

function aa() {
   if (document.form1.t1.value.length == 0){
       document.getElementById("d1").innerHTML = "";
       return ;
   }
   ... rest of your code ...
}

注1: mysql_ *函数已被删除,使用mysqli或pdo

注2:您的代码容易受到sql注入攻击。在查询中使用它们之前清理您的输入

在php方面:

<?php 
$nm1=$_GET['nm']; 

if (empty($nm1)){
   echo "no result";
   exit;
}

答案 1 :(得分:0)

由于这件事,它已经归还了所有东西:

like ('$nm1%')

$nm1为空时,您的查询只是执行此操作:

like ('%') // Translates to 'get me everything from the table'

你需要一个逻辑检查器,上面写着:

if($nm1 !== '')
{
   // do query, echo HTML
}
else
{
    // do nothing
}