2014-07-10 17 views
1

我想創建一個搜索功能,用戶可以在文本框中編寫所有關鍵字
(就像谷歌搜索)例如: - 日本的汽車,日本的二手車。在第二個例子中,我們可以在我的數據庫的Item表中標識屬於不同列的三個關鍵字。例如: - 來自條件列的「使用」關鍵字,來自類別列的「cars」關鍵字和來自位置列的「Japan」關鍵字。目前我使用兩個下拉列表來選擇位置和類別。並選中複選框以選擇條件。所以我想用一個文本框把這些所有關鍵字。請幫忙..!!!如何使用一個文本框執行搜索功能,並使用php codeigniter搜索mysql數據庫的許多列中的值

回答

0

您可以將搜索欄的內容捕獲到一個php var(例如$ inputRaw)中。

$inputRaw = $_POST[yourSearchBox]; // capture the raw user search input 

從那裏,你可以清理一下:

$InputRawArr = $searchResultsArr = array(); 

// process raw input 
// trim any extra spaces outside the string 
// then remove any double spaces inbetween the search terms   
$inputRaw = str_replace(' ', ' ', trim($inputRaw)); 

// separate each search term into an array 
      $inputRawArr = explode(' ', $inputRaw); 
      $inputRawArr = array_filter($inputRawArr); 

所以現在,如果用戶輸入「日本二手車」,你將結束:

$inputRawArr = 
[0] = 'used', 
[1] = 'cars', 
[2] = 'in', 
[3] = 'Japan' 

從這裏你應該可以創建一些邏輯來搜索$ inputRawArr,以獲得與你想要的結果相關的字符串。結賬Php's in_array function for this part

因此,如果在數組$ inputRawArr中使用了'',那麼將該部分查詢設置爲true。與'汽車'一樣。

確定是否選擇了一個位置('Japan'),我會將$ inputRawArr內容循環到可能位置列表中。如果一個或多個單元格與列表中的某個位置相匹配,則將這些$ inputRawArr單元格存儲到PHP生成的WHERE子句中以獲取位置。

+0

如果我輸入'blah blah',則您的消毒無效。僅僅把兩個空間變成一個空間是不夠的;這種方式只需將4個空格變成2.您需要將2 *或更多*空格變成一個空格。 – meagar

+0

確實如此,但我通過array_filter()修復了這個問題,以刪除超過雙倍空間的任何實例。所以如果用戶輸入blah blah,數組會將其存儲爲[0] ='blah',[1] ='',[2] ='blah'。然後array_filter()將只返回單元格[0] ='等等'和[1] ='等等'雖然這可能是不好的做法。 – gsmaciel

+0

謝謝大家...... !!我得到了將字符串分割成任意數量空格的答案 - $ inputRaw = preg_split('/ \ s + /',$ searchText); –