2014-06-22 49 views
-1

我爲自己創建了一個簡單的cms,我可以發佈文章並讓它們具有多個類別。從URL獲取多個值並將它們放在一個字符串中

所以即有三類:音樂技術第2條具有類音樂遊戲

所以,如果我去參觀音樂分類頁面我會看到這兩個文章,因爲他們都有類別音樂其中。

現在我只需要創建最後一部分,類別頁面。

所以每當有人過濾類別:音樂遊戲 它的數據發送出去的網址,如:http://domain.com/categories.php?cat1=music&cat2=games

現在我怎麼才能到這些價值觀音樂遊戲並將它們放在一個字符串中,如:$filter = "music games"因爲t每次有人過濾他們想看到的類別時,軟管值都會有所不同。

其他人可能過濾技術音樂的話,我希望字符串如:$filter = "technology music"

+0

$ filter = $ _GET ['cat1']。 ''。 $ _GET [ 'CAT2']; ?我錯過了什麼嗎? – bloodyKnuckles

+1

你可以做'?categories [] = music&categories [] = technology',並像'$ _GET [categories] [0]'和'$ _GET ['categories'] [1]'一樣讀取它。 –

+0

@bloodyKnuckles當有人過濾2個以上時,我如何獲得cat3和4或5? 這個想法是,我想存儲的價值,即音樂,遊戲,techonology內一個單一的字符串,想:''音樂遊戲techonology'' 我不能只做$ filter = $ _GET ['cat1 ']。 ''。 $ _GET [ 'CAT2'];因爲如果有人過濾了第三類,它會給我一個錯誤,因爲沒有$ filter = $ _GET ['cat3] 我希望你能理解我剛纔說的(我對不起英語不是我的第一語言) – RXMESH

回答

2

我懷疑你會想要做的線沿線的東西:

<form action="categories.php" method="GET"> 
    <fieldset> 
    <legend>Filter Categories</legend> 
    <p> 
     <label><input type="checkbox" name="categories[]" value="music"/> Music</label> 
     <label><input type="checkbox" name="categories[]" value="technology"/> Technology</label> 
     <label><input type="checkbox" name="categories[]" value="film"/> Film</label> 
    </p> 
    </fieldset> 
    <button type="submit">Filter</button> 
    <button type="reset">Reset</button> 
</form> 

提交時,這會給你一個URL如下:

http://example.com/categories.php?categories[]=music&categories[]=technology 

然後,在顯示具有這些類別之一的匹配項的腳本,你可以做的WHERE條款如下:

$get_categories = $_GET['categories']; 
$cat_clauses = array(); 

while ($category = array_shift($get_categories)) { 
    // Clean it 
    $category = preg_replace('/[^a-z0-9-_]/i', '', $category); 

    if ($category) { 
     array_push($cat_clauses, "OR category LIKE '%$category%'"); 
    } 
} 

if ($cat_clauses) { 
    $cat_where = "AND (" . implode(' ', $cat_clauses) . ")"; 
} 

這可能給你的東西,如:

SELECT * 
FROM blog 
WHERE active = 1 
AND (category LIKE '%technology%' OR category LIKE '%music%') 
相關問題