初学者的PHP问题:使用method =“get”和复选框

时间:2011-06-22 21:38:43

标签: php wordpress

我的表格是这样的:

<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>

如果选中每组中的第一个,我会得到以下网址:

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[]的表单,但最后只是在名称中添加了括号(例如:video-sort.php?game[]=180man&game[]=18man而不是将它们放在一起。

我想要读取网址:

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

我怎么能做到这一点?任何帮助将不胜感激!

修改 这是一个Wordpress网站。我正在创建一个后置过滤器,并让Worpdress理解查询,据我所知,参数需要在一个以commma分隔的列表中。如果我使用括号,我会收到错误:

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

2 个答案:

答案 0 :(得分:2)

这是对的,

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

只是为数组添加键。保持这样。

答案 1 :(得分:2)

正确的方法是使用数组语法(game []),在你的video-sort.php代码中,你可以像这样获取整个数组:

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

如果您确实必须将游戏参数设置为以逗号分隔的列表,则可能需要使用javascript(即jquery)来获取已检查值的列表,创建列表,然后将其附加到表单帖子。工作太多而且容易出错。如果您的某个游戏的值有逗号会怎么样?