簡體   English   中英

如何在php中創建搜索過濾器?

[英]how to create a search filter in php?

這是我第一次創建搜索過濾器。 我想到了“切換語句”。 無論用戶輸入什么關鍵字,都應該簽入switch語句。 該switch語句將檢查mysql數據庫中是否存在值。 如果存在,它將在表格中顯示信息。 如果不是,那么它將重定向到“ NoResultsFound.html”。 到目前為止,這就是我的想法。 我對么? 如果沒有,我應該怎么修改?

為什么不使用SQL完成此操作?

SELECT * FROM wherever WHERE keywords LIKE '%keyword%'

這將返回與關鍵字匹配的行,如果返回空記錄集,則可以將其重定向到NoResultsFound.html

好吧,“關鍵字”一詞具有特殊含義,與ArtistName和SongName無關。

因此,從所有字段中的子字符串搜索開始。

$search = mysql_real_escape_string($_GET['search']);
$query  = "SELECT * FROM table WHERE ArtistName LIKE '%$search%' OR SongName LIKE '%$search%'";

另請注意,在任何地方重定向用戶都沒有用。 只需停留在同一頁面上,在搜索字符串中顯示輸入的值(通過htmlspecialchars() ),然后讓用戶對其進行編輯並進行另一次搜索

您只需將search關鍵字添加到查詢中,然后檢查查詢是否返回任何結果。 我將參考我已經構建的一個簡單的數據庫連接類(PHP)( 在此處 ),因為它使解釋起來更加容易:

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

讓我知道是否有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM