2014-04-02 42 views
0

我在我的數據庫中以逗號分隔的列表存儲標籤列表。使用逗號分隔列表中的鏈接創建標籤列表

這個數據的一個例子是:

Graphic Design, Illustration, Animation 

我輸出逗號分隔的列表,並與下面創建鏈接:

$Tags = explode(', ', $value['Tags']); 
foreach($Tags as $key => $value) { 
    echo '<a href="' . BASE_URL . 'news/tag/' . $value . '">' . $value . '</a>'; 
} 

當你點擊一個鏈接就可以使用查詢

WHERE Tags LIKE "%' . $tag . '%" 

這似乎只工作,如果我點擊第二,第三,第四等鏈接,但n第一個。

我假設它與逗號或空格有關。

+1

如果你'var_dump($ Tags)''得到了什麼?另外,慣例是用小寫字母寫變量名。 – jurgemaister

+0

@Stephen:第一次,'$ Tag'值是否與實際值一致? – Ranjith

+0

嘗試使用''%'。urldecode($ tag)。'%'',可能是第一個標記來自URL中的圖形+設計! –

回答

0

無需在命令和空間上爆炸。僅在逗號分解並稍後修剪空間。您的查詢

$Tags = explode(',', 'Graphic Design, Illustration, Animation'); 

foreach ($Tags as $tag) { 
    $tag = trim($tag); 
    echo '<a href="' . BASE_URL . 'news/tag/' . $tag . '">' . $tag . '</a><br>'; 
} 

然後,請執行下列操作:

試試這個

WHERE Tags LIKE "%' . urldecode(trim($tag)) . '%" 

輸出:

<a href="BASE_URLnews/tag/Graphic Design">Graphic Design</a><br> 
<a href="BASE_URLnews/tag/Illustration">Illustration</a><br> 
<a href="BASE_URLnews/tag/Animation">Animation</a><br> 
+0

不幸的不是。輸出是正確的,但第一個鏈接仍然不起作用。 – Stephen

+0

當您單擊鏈接時,您正在生成該查詢。你可以var_dump它,並告訴我們如何生成查詢?看看'jogesh_pi'說什麼,那可能是問題。 – Latheesan

+0

@lathessan現在確定問題很明顯。我得到WHERE標籤LIKE「%Graphic Design%」因此,如果我在數據庫中的圖形設計前添加一個空間,查詢將按預期工作。不知道如何添加空白。 – Stephen

0

第一個標籤 「平面設計」 有一個空間,在URL中是不安全的。刪除它,替換它或使用urlencode()

$Tags = explode(', ', $value['Tags']); 
foreach($Tags as $key => $value) { 
    echo '<a href="' . BASE_URL . 'news/tag/' . urlencode($value) . '">' . $value . '</a>'; 
} 
+0

謝謝你更新了我的代碼。 – Stephen

相關問題