我的网站上有一个搜索字段,用于搜索我使用的数据库。当我点击搜索字段而不输入文本时,搜索将返回所有结果。
我怎么能有它,所以没有结果返回,如果没有输入?
有什么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
}
?>