这是我第一次创建搜索过滤器。我记得“转换声明”。无论用户输入什么关键字,都应该检查switch语句。该switch语句将检查mysql数据库中是否存在的值。如果它存在,那么它将在表格中显示信息。如果没有,那么它将重定向到“NoResultsFound.html”。到目前为止,这是我的想法。我对么?如果没有,我应该修改什么?
答案 0 :(得分:4)
为什么不使用SQL来完成这个?
SELECT * FROM wherever WHERE keywords LIKE '%keyword%'
这将返回匹配关键字的行,如果它返回空记录集,您可以将它们重定向到NoResultsFound.html
。
答案 1 :(得分:2)
嗯,“关键字”一词具有特殊含义,与ArtistName和SongName无关。
所以,从所有领域的子字符串搜索开始。
$search = mysql_real_escape_string($_GET['search']);
$query = "SELECT * FROM table WHERE ArtistName LIKE '%$search%' OR SongName LIKE '%$search%'";
另请注意,在任何地方重定向用户都没有用处。只需停留在同一页面上,在搜索字符串中显示输入的值(通过htmlspecialchars()
处理),然后让用户对其进行编辑并进行其他搜索
答案 2 :(得分:1)
您只需要将search关键字添加到查询中,然后检查查询是否返回任何结果。 我将引用一个我构建的简单数据库连接类(PHP)(here),因为它更容易解释:
$keyword = mysql_real_escape_string($_POST['keyword']);
$db = new Database();
$db->connect(DB_NAME,DB_HOST,DB_USER,DB_PASS);
$query = "SELECT your_field FROM your_table WHERE target_field LIKE '%".$keyword."%'";
$result = getAssocArray($query);
if (!empty($result)) {
// do something if there is at least a match
}
else {
// do something if there is not match
}
$db->disconnect();
如果有帮助,请告诉我。