我怎样才能使我的表单输入不返回任何结果,当它输入一个空查询


How can I make my form input not return any results when it is inputted with an empty query?

我希望我的表单输入不作用于空搜索。

我甚至不希望它转到结果页并显示错误消息。

我怎么能有它,所以什么都没有发生,当点击提交/按enter或按空格键,然后进入?

这可以用javascript完成吗?

HTML:

 <form action="search.php" method="post">
 Search: <input type="text" name="term" /><br />
 <input type="submit" name="submit" value="Submit" />
 </form>
PHP:

<?php
$conn = mysql_connect("", "", "")
or die    (mysql_error());
mysql_select_db("testable");
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
$term = addcslashes($term,'%_');
$term = "%" . $_POST["term"] . "%";

if (!mysql_select_db("weezycouk_641290_db2")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}
**if (isset($_POST['term']) && ($_POST['term'] !== '')) {
$term = $_POST['term'];
$safe_term = mysql_real_escape_string($term);
$sql = "SELECT FName,LName,Phone
FROM   testable
WHERE  FName LIKE '%". mysql_real_escape_string($term) ."%'";
$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><br><div class="data1">';
echo htmlentities($row["FName"]);
echo '</div><br><div class="data2">';
echo htmlentities($row["LName"]);
echo '</div><br><div class="data3">';
echo htmlentities($row["Phone"]);
echo '</div>';
}
mysql_free_result($result);
?>

阻止表单通过JS提交是一个快速解决方案,但是您仍然需要处理有人仍然可以提交空白搜索的可能性:

if (isset($_POST['term']) && ($_POST['term'] !== '')) {
   $term = $_POST['term'];
   $safe_term = mysql_real_escape_string($term);
   $sql = "...."
   blah blah blah
}
注意mysql_real_escape_string()的用法。对于mysql查询中的字符串,安全方法。addslashes是一种糟糕透顶的垃圾,绝对不应该用于防止SQL注入。

你可以在JS中检查长度,如果它是空白,则abort

是的,你可以使用javascript。添加一个javascript函数来处理提交按钮的点击事件。

<input type="submit" name="submit" value="Submit" onclick="submitForm(event)" />

在javascript函数中,检查textbox是否为空

        function submitForm(event){
        var val = document.getElementsByName('term')[0].value;
        if (val==null || val.trim()==""){
        //document.getElementsByTagName('form')[0].submit();
         event.preventDefault();
         return false;
        }
        else {
          return true;
        }
        }

如果为空,则阻止默认事件并返回false =>阻止提交如果不为空,返回true =>提交表单