如何停止搜索返回所有结果
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
}
?>
相关文章:
- 是否可以将JXBrowser显示的JS确认对话框的结果返回到调用它的JS部分
- 将字符串结果返回到表单元格中的新行中
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 使用 JSON 和 ExtJS 将 MPDF 结果返回给浏览器
- 将信息结果返回到多个输入字段
- 如何将变量从javascript发送到php并将结果返回给JS
- 将 JavaScript 变量传递给 PHP,并将 PHP 结果返回给 JavaScript 变量
- 当没有结果返回 JavaScript 搜索时显示消息
- 加载相同的结果返回按钮
- 如果搜索框位于_SiteLayout页(在页眉 DIV 中),如何将搜索结果返回给用户
- MVC C#中的自定义操作结果返回特定视图
- 使用javascript/lodash对特定键的相同值进行分组,并对其进行计数,然后将结果返回到数组
- 如何使用javascript将循环结果返回到列中
- 结果返回为“未定义”
- 搜索未检测到结果返回-Selectize.js
- 调用一个打开活动并将活动结果返回给javascript的java函数
- 将PHP结果返回到原始html页面
- ASP.. NET MVC控制器结果返回到视图
- 如何通过AJAX传递值来更改SQL搜索查询并将结果返回给HTML ?
- Asp.net MVC或javascript将另一个页面的结果返回给方法