Вопрос PHP для начинающих: использование method = "get" с флажками - PullRequest
0 голосов
/ 23 июня 2011

У меня есть форма примерно такая:

<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 вместо того, чтобы соединить их вместе.

Я хотел бы получить URL-адрес для чтения:

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)

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

На самом деле правильный способ - использовать синтаксис массива (game []), поэтому в коде video-sort.php вы можете получить весь массив следующим образом:

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

Если вы действительноесли бы параметр игры был списком с разделителями-запятыми, вы, вероятно, захотите использовать javascript (т.е. jquery), чтобы получить список проверенных значений, создать список, а затем добавить его в сообщение формы.Слишком много работы и слишком много ошибок.Что если одна из ваших игр имеет запятую в значении?

2 голосов
/ 23 июня 2011

Это верно,

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

просто добавляет ключи в массив. Держите это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...