2014-10-27 1 views
0

Привет и спасибо за чтение моего вопроса. Я использую простую форму, чтобы получить вход:PHP var_dump только вывод значения снизу checkbox

<p>Select your favorite two countries below:</p> 

<form id="world" name="world" action="/order.php" method="post"> 
<input type="checkbox" name="countries" value="USA" /> USA<br /> 
<input type="checkbox" name="countries" value="Canada" /> Canada<br /> 
<input type="checkbox" name="countries" value="Japan" /> Japan<br /> 
<input type="checkbox" name="countries" value="China" /> China<br /> 
<input type="checkbox" name="countries" value="France" /> France<br /> 
<input type="submit" value="Order"> 
</form> 

Я хочу, чтобы убедиться, что order.php является адресность всех вариант выбраны, так order.php содержит только следующий код:

<pre> 
<?php var_dump($_POST);?> 
</pre> 

К сожалению, это только вывод whatevre - это самый нижний флажок, который отмечен.

Выход таков:

массив (1) { [ "страны"] => строка (6) "Канада" }

Если я пытаюсь следующий код для вывода:

<?php 
    foreach($_POST as $key=>$post_data){ 
     echo "You posted:" . $key . " = " . $post_data . "<br>"; 
    } 
?> 

я получаю этот выход:

Вы Отвечали: страны = Канада

Может ли кто-нибудь сказать мне, где я иду не так, и как я могу получить все данные, для каждой галочки?

спасибо.

+0

use 'name =" countries [] "' он будет передавать массив значений в '$ _POST ['countries']' – Cheery

ответ

0
<p>Select your favorite two countries below:</p> 

<form id="world" name="world" action="/order.php" method="post"> 
<input type="checkbox" name="countries[]" value="USA" /> USA<br /> 
<input type="checkbox" name="countries[]" value="Canada" /> Canada<br /> 
<input type="checkbox" name="countries[]" value="Japan" /> Japan<br /> 
<input type="checkbox" name="countries[]" value="China" /> China<br /> 
<input type="checkbox" name="countries[]" value="France" /> France<br /> 
<input type="submit" value="Order"> 
</form> 

Изменить его выше, это будет хранить все ваши Флажки результаты для вас!

+0

Спасибо Майкл и Марк Б. К сожалению, используя нотацию массива, скрипт, который я использую для убедитесь, что отмечено только определенное количество ящиков. Сценарий называется checkboxlimit и вызывается вот так: user3475934

+1

уверен, что это будет. 'if (count ($ _ POST ['countries'])> 5) {die (" Слишком много "); } '. javascript не заботится о '[]'. это всего лишь несколько дополнительных символов в названии. –

+0

Это скрипт, который проверяет ограничения, owuld, я могу изменить все ссылки на контрольную группу на массив? Я никогда не узнал JS: «функция checkboxlimit (checkgroup, предел) { \t вар checkgroup = checkgroup предел \t вар = предел \t для (вар я = 0; я предел) { \t \t \t оповещения ("Вы можете только выбрать максимум "+ предельными +" галочки") \t \t \t this.checked = ложь \t \t \t} \t \t} \t} } ' – user3475934

1

Вы указали те же name на свои флажки, и PHP перезапишет ранее разобранные name представления с текущим значением. Вы должны использовать массив обозначения хак:

<input type="checkbox" name="countries[]" value="Canada" /> Canada<br /> 
             ^^ 

, который затем делает $_POST['countries'] массив всех значений, представленных.

echo "You posted: " . implode(',', $_POST['countries']);