формы — PHP var_dump только вывод значения нижнего флажка

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

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

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

Вывод выглядит так:

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

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

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

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

Вы разместили: страны = Канада

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

Спасибо.

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

Другие решения

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

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

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

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

По вопросам рекламы [email protected]