你不能用複選框做到這一點。這不是複選框的工作方式。這不是一個選擇,真的。它是HTML,PHP和瀏覽器的構建方式。
此外,你所做的不會工作。您已將相同的變量設置爲多個不同的字段。每次設置時,都會覆蓋以前的值。雖然如果您要將var_dump($_GET);
添加到您的腳本中,您的URL可能看起來像?category_name=VALUE&tag=TAG1&tag=TAG2&tag=TAG3
,但您會看到PHP唯一看到的是最後一個 - tag=TAG3
。
您可以使用方括號 - []
- 在複選框名稱中獲得代碼工作。在很小的代碼示例(僅用於演示目的):
echo '<form>';
echo '<input type="checkbox" name="tag[]" value="tag1">';
echo '<input type="checkbox" name="tag[]" value="tag2">';
echo '<input type="checkbox" name="tag[]" value="tag3">';
echo '<input type="checkbox" name="tag[]" value="tag4">';
echo '<input type="checkbox" name="tag[]" value="tag5">';
echo '<input type="checkbox" name="tag[]" value="tag6">';
echo '<input type="submit" value="Clickie">';
echo '</form>';
「標籤」你的一部分的URL看起來像這樣但是:
&tag[]=tag1&tag[]=tag4&tag[]=tag6
也就是說複選框是如何工作的。我可以想到兩種解決方法。
第一個是使用Javascript來填充表單中的隱藏字段。
echo '<form>';
echo '<input type="hidden" name="tag" value="">';
echo '<input type="checkbox" value="tag1">';
echo '<input type="checkbox" value="tag2">';
echo '<input type="checkbox" value="tag3">';
echo '<input type="checkbox" value="tag4">';
echo '<input type="checkbox" value="tag5">';
echo '<input type="checkbox" value="tag6">';
echo '<input type="submit" value="Clickie">';
echo '</form>';
你會有你的Javascript手錶點擊這些複選框,並填寫到隱藏標記字段的值。爲了得到你想要的URL,你必須從複選框中刪除name
,這使得這個表單完全依賴於Javascript。沒有Javascript它不會工作。我認爲這是糟糕的設計。
另一個選擇是使用mod_rewrite
來嘗試重寫您的URL,但說實話,我不知道mod_rewrite
是否能夠完成這項工作所需的複雜正則表達式。
我不認爲任何解決方法值得努力或價格。我建議你使用方括號並在接收端處理數組。換句話說,如果你有&tag[]=tag1&tag[]=tag4&tag[]=tag6
那麼這將得到一個字符串像你想在你的網址是什麼:
if (isset($_GET['tag'])) {
$tstr = implode('+',$_GET['tag']);
}
echo $tstr;
您可以使用您的搜索功能,無論你是使用了點。
謝謝你的提示!回到實驗室:) – Worldismine 2013-02-12 08:41:43