2016-01-13 2 views
0

С контрольным списком формы, очевидно, часто будут несколько элементов с проверенными значениями с теми же «именами» и разными значениями.

Если я хочу написать php-функцию, которая подсчитывает количество флажков с определенным именем, которое проверено (в данном случае с общим именем checkboxname), как это сделать.

В настоящее время короткий код php, который я написал, подсчитывается, если есть один $ GET с именем checkboxname как имя или сообщает мне, есть ли 0. Однако это не считается выше 1. Почему это?

В настоящее время я пытался использовать numberofcheckboxes.php?checkboxname=firstvalue&checkboxname=secondvalue в качестве URL для вызова файла

numberofcheckboxes.php:

function checknumber(){ 
$b; 
$numberoftypes= count($_GET["checkboxname"]); 
echo $numberoftypes; 
if ($numberoftypes > 1) {$b = 'more than one were checked';} 
echo $b;} 

checknumber(); 
+4

вы, вероятно, забыли назвать свои флажки с '[]', поэтому PHP не будет создавать массив для вас - только флажок ** LAST ** в html будет передан под этим n AME. 'var_dump ($ _ GET)' подтвердит, что - если вы не использовали '[], то поле флажка будет отображаться как обычная строка, а не массив. –

+1

Где находится ваш HTML? –

ответ

1

Точно так, как Marc B предложил.

<input type="checkbox" name="checkboxname[]" value="1" /> 
<input type="checkbox" name="checkboxname[]" value="2" /> 

Добавление квадратных скобок преобразует вашу переменную GET/POST в массив.

Если оба флажок были проверены, вы получите

$_GET['checkboxname'] == array(1, 2); 

Вы также можете использовать многомерный массив

<input type="checkbox" name="checkboxname[group1][]" value="1" /> 
<input type="checkbox" name="checkboxname[group1][]" value="2" /> 
<input type="checkbox" name="checkboxname[group2][]" value="3" /> 
<input type="checkbox" name="checkboxname[group2][]" value="4" /> 

будет ли

$_GET['checkboxname'] == array('group1' => array(1, 2), 'group2' => array(3, 4)); 
+0

Большое спасибо за ваш ответ. Трудно было решить, какой из них проголосовать в качестве ответа, но поскольку ваша информация содержит дополнительную информацию, которая может быть полезной для многомерных массивов, я выбрал ее. –

2

Вы не использовали [] во имя:

numberofcheckboxes.php?checkboxname=firstvalue&checkboxname=secondvalue 
            ^-----------------------^ 

Без [] в названии, PHP предполагает, что каждое поле будет значением SINGLE, а лечение является таковым. Это означает, что последнее имя checkboxname в URL-адресе является значением, которое вступает в силу.

Понадобится:

<input type="checkbox" name="checkboxname[]" ... /> 
             ^^--- 
+0

Большое спасибо за ответ :) –

Смежные вопросы