如何停止搜索返回所有结果


How to stop search returning all results?

我的网站上有一个搜索字段,用于搜索我使用的数据库。当我点击搜索字段而不输入文本时,搜索将返回所有结果。

我怎么能有它,所以没有结果返回,如果没有输入?

有什么javascript可以帮助我吗?

谢谢!

詹姆斯

<?php
$conn = mysql_connect("---", "", "");
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}

{
$search = "%" . $_POST["search"] . "%";
$searchterm = "%" . $_POST["searchterm"] . "%";
}
if (!mysql_select_db("weezycouk_641290_db1")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}
$sql = "SELECT name,lastname,email 
FROM   test_mysql
WHERE  name LIKE '%".$search."%' AND lastname LIKE '%".$searchterm."%'";
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if(document.getElementById('search').value == '')
return false;
if(document.getElementById('searchterm').value == '')
return false;
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}

while ($row = mysql_fetch_assoc($result)) {
echo '<br>';
echo '<br>';
echo '<div class="data1">';
echo $row["name"];
echo '</div>';
echo '<br>';
echo '<div class="data2">';
echo $row["lastname"];
echo '</div>';
echo '<br>';
echo '<div class="data3">';
echo $row["email"];
echo '</div>';
}
mysql_free_result($result);
?>

站住!SQL注入!

你的代码有多个SQL注入漏洞。立即修复!

固定吗?让我们继续。

在决定执行搜索之前,检查搜索项是否为空字符串。是,不进行搜索。例如:

$search = // whatever the user typed; it's a good idea to trim() it
if(empty($search)) {
    // return no results
}
else {
    // do whatever you normally do
}

您还可以更改搜索函数(更有可能的是,搜索SQL查询),如果没有要搜索的内容,则不返回结果,这基本上可以让您将上述if"深入"到代码中。恕我直言,如果if留在这里是最好的,所以我不赞同这种方法。

使用Javascript处理细节:如果您的搜索是基于表单提交的,那么出于对用户的礼貌,如果搜索字段为空,则完全阻止提交(使用Javascript)可能是一个好主意。但是,除了使用PHP检查之外,您还应该使用,而不是而不是 it。在代码中,我们需要看到你的HTML

对于非常基本的控件,你可以这样做。

if(document.getElementById('searchField').value == '')
   return false;

您可以拒绝提交搜索表单,只要在使用Javascript的搜索字段中没有填充任何内容,或者您可以在相应的php文件中阻止搜索。

php:

if(empty($_GET['search'])){ // or whatever your field's name is
  echo 'no results';
}else{
  performSearch(); // do what you're doing right now
}

javascript使用jQuery(如果你使用它):

$('#searchform').submit(function(){ // replace 'searchform' your form's id
  return $('#search').val() != ''; // and 'search' with your search field's id
});

我不会使用JavaScript这样做(因为这可以由用户关闭)。

当你处理查询时,我会使用你的服务器端语言。

。在PHP中,像这样可以工作:

<?php
//processes
if (trim($_GET['search'])=='') {
  //dont query anything
} else {
  // do your query
}
//output
if (trim($_GET['search'])=='') {
  ?>
  <p>Sorry, your search has returned no results.</p>
  <?php
} else {
  // output results
}
?>