2014-06-25 151 views
2

我想過濾存儲在我的數據庫中的逗號分隔的多個值。當我存儲自己的價值觀時,我會將它們推到例如'53,57,58'。因此,我可以再次爆炸以在我的概述中顯示正確的值。但現在這件事。MySQL過濾器複選框列表值

我現在它們進行過濾(我用苡)使用inCondition:

if(count($sector) > 0) 
    $criteria->addInCondition('sector', $sector); 

所以,當我選擇1個選項這個工程。如果我選擇2個選項,則只有在所選選項與數據庫記錄相同的順序中才有效。所以這不會發生很多;-)。

現在我的問題。我如何將我的搜索值與我的數據庫記錄相匹配?有誰知道如何處理這個?

謝謝!

編輯: 解決方案:

廠循環數組thrue並添加搜索條件這樣每個選擇項:

if(count($niveau) > 0){ 
    foreach ($niveau as $n) 
     $criteria->addSearchCondition('niveau', $n, true, 'AND'); 
} 
+0

顯示你到目前爲止嘗試過。否則,你在錯誤的網站。 – RiggsFolly

+0

哇,有趣的是你怎麼會卡住,並一直在同一個方向思考......嘗試了不同的條件,但現在我在這裏寫下了所有的東西:我認爲我應該循環選擇我的過濾器的值,併爲每個選擇添加一個inCondition值。稍後我會發布代碼(如果它有效:p)。 – Daniel

+0

我想你需要使用'MATCH - AGAINST'在SELECT查詢中... –

回答

0

試試這個:

if(count($niveau)) > 0) { 
    $niveauConditions = array(); 
    foreach($niveau as $n) { 
     $niveauConditions[] .= "CONCAT(',', `niveau`, ',') LIKE '%,{$n},%'"; 
    } 
    $criteria->addCondition(implode(' OR ', $niveauConditions)); 
} 

讓我知道如果這對你有幫助。 也認爲你可以使用FIND_IN_SET