簡體   English   中英

初學者的PHP問題:選中復選框使用method =“ get”

[英]Beginner's PHP Question: Using method=“get” with checkboxes

我有這樣的形式:

<form action="video-sort.php" method="get">      
<h3>Game</h3>
<ul> 
    <li><input id="game-180man" type="checkbox" name="game" value="180man">180man</li>
    <li><input id="game-18man"  type="checkbox" name="game" value="18man">18man</li>
    <li><input id="game-mtt"    type="checkbox" name="game" value="MTT">MTT</li>        
</ul>       
<h3>Type</h3>
<ul>
    <li><input id="type-lecture"  type="checkbox" name="type" value="Lecture">Lecture</li>
    <li><input id="type-liveplay" type="checkbox" name="type" value="Liveplay">Liveplay</li>
    <li><input id="type-tutorial" type="checkbox" name="type" value="Tutorial">Tutorial</li>
</ul>       
<input type="submit" />     
</form>

如果每個集合的第一個被選中,我得到的URL:

video-sort.php?game=180man&type=Lecture

大! 但是,當選中每個類別中的多個復選框時,我得到(例如,如果我全部選中):

video-sort.php?game=180man&game=18man&game=MTT&type=Lecture&type=Liveplay&type=Tutorial

不好! 它只接受最后一個參數。

另外,我嘗試了一種形式,其中name=game[]name=type[]但URL最終只是在名稱中添加了方括號(例如: video-sort.php?game[]=180man&game[]=18man而不是將它們放在一起。

我想讀取以下網址:

video-sort.php?game=180man,18man,MTT&type=Lecture,Liveplay,Tutorial

我該怎么做? 任何幫助將不勝感激!

編輯:這是針對Wordpress網站的。 據我所知,我正在創建一個后置過濾器,並使Worpdress理解該查詢,該參數必須位於以逗號分隔的列表中。 如果使用方括號,則會出現錯誤:

Warning: preg_split() expects parameter 2 to be string, array given in /wp-includes/query.php on line 1694

(該文件的來源: http : //phpxref.com/xref/wordpress/wp-includes/query.php.source.html

沒錯

?game[]=180man&game[]=18man

只是將鍵添加到數組。 保持那樣。

正確的方法實際上是使用數組語法(game []),這樣,在video-sort.php代碼中,您可以像這樣獲取整個數組:

$games = $_GET['game'];
foreach ($games as $game) {
  // do something
}

如果確實需要將game參數設置為以逗號分隔的列表,則可能要使用javascript(即jquery)來獲取檢查值列表,創建列表,然后將其附加到表單中。 太多的工作,太容易出錯。 如果您的其中一款游戲的值是逗號怎么辦?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM