Привет и спасибо за чтение моего вопроса. Я использую простую форму, чтобы получить некоторые данные:
<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>";
}
?>
Я получаю этот вывод:
Вы разместили: страны = Канада
Может кто-нибудь сказать мне, где я иду не так и как я могу получить все данные для каждого флажка?
Спасибо.
<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>
Измените это на выше, это будет хранить все результаты ваших флажков для вас!
Вы дали то же самое name
на ваши флажки, и PHP будет перезаписывать ранее проанализированный name
представления с текущим значением. Вам нужно использовать взлом массива:
<input type="checkbox" name="countries[]" value="Canada" /> Canada<br />
^^
который затем делает $_POST['countries']
массив всех представленных значений.
echo "You posted: " . implode(',', $_POST['countries']);