如何在提交空搜索字段时停止搜索字段返回所有结果?

时间:2011-10-25 12:56:26

标签: php mysql html forms

如果我单击我的搜索字段并提交它而不输入任何文本,则返回我数据库中的所有数据。这是怎么停止所以什么都没发生?

查看网站:

weezy.co.uk/newresults.php

谢谢!

詹姆斯

 <?php

    $conn = mysql_connect("cust-mysql-123-02", "uwee_641290_0001", "La0%-Mr4");

    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 (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);

    ?>

5 个答案:

答案 0 :(得分:2)

在进行查询之前,你应该检查它是否为空:

if(empty($_POST['searchterm'])){
    //don't search and show an error message
}else{
   //proceed as normal, do the query
}

否则您最终可能会发出如下查询:

WHERE name LIKE('%%')

这非常昂贵并且会返回所有数据库行

答案 1 :(得分:0)

最好的方法(imo)是在输入为空白时进行简单的javascript检查。

答案 2 :(得分:0)

我认为最好的方法是在搜索框为空时禁用客户端的提交按钮。

您可以执行以下操作:

$(document).ready(function()
{
   $('#searchBox').keyup(function() 
   {
      if($(this).val() == '')
      {
        $('#searchButton').attr('disabled', true);
      }
      else
      {
        $('#searchButton').removeAttr('disabled');
      }

   });
});

你的html就像:

<input type='text' id="searchBox" />
<input type='button' id='searchButton' value='search' disabled/>

确保在Nicola指示的服务器端进行验证。

答案 3 :(得分:0)

使用front end做一些javascript/Jquery总是明智的。表单验证,提示用户输入内容。

完成后,您还可以使用以下方法检查后端:

if(isset($_POST['searchterm'])){
    // search for the results.
}else{
   // do nothing or show proper message
}

答案 4 :(得分:0)

我在上面的代码中遇到了一些问题。所以上面代码的以下改进版本工作正常:

<form action="searchengine.php" method="POST">
<input type="text" id = "searchbox" name="searchterm" placeholder="Search here">
<input type="submit" id = "searchbutton" value="Search" style="display:none;">
</center>
<script src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$('#searchbox').keyup(function()
{
if($(this).val() == '')
{
$('#searchbutton').hide();
}
else
{
$('#searchbutton').show();
}

});
});

</script>