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