0

私のフォームには、この部分があります:

<input type="checkbox" name="city" value="Nicosia" class="choosecity">Nicosia<br>
<input type="checkbox" name="city" value="Limassol" class="choosecity">Limassol<br>
<input type="checkbox" name="city" value="Larnaca" class="choosecity">Larnaca<br>

また、メール機能を使用する結果ページで、チェックされた都市を取得したいと考えています。

私は結果なしでこれを使用しました:

foreach($_POST['city'] as $checkbox){
    echo $checkbox . ' ';
}

ここで何が欠けていますか?

4

4 に答える 4

2

を使用しname="city[]"ます。そうしないと、1 つの都市しか提出できません。あなたも使いたいかもしれません

$cities = isset($_POST['city']) ? $_POST['city'] : array();
foreach ($cities as $city)
于 2013-08-03T19:03:07.713 に答える
1

PHP は角括弧構文を使用してフォーム入力を配列に変換するため、 name="education[]" を使用すると、次のようにすると配列が取得されます。

$educationValues = $_POST['education']; // Returns an array
print_r($educationValues); // Shows you all the values in the array

たとえば、次のようになります。

<p><label>Please enter your most recent education<br>
    <input type="text" name="education[]"></p>
<p><label>Please enter any previous education<br>
    <input type="text" name="education[]"></p>
<p><label>Please enter any previous education<br>
    <input type="text" name="education[]"></p>

$_POST['education'] 配列内に入力されたすべての値が表示されます。

JavaScript では、ID で要素を取得する方が効率的です...

document.getElementById("education1");

ID は名前と一致する必要はありません。

<p><label>Please enter your most recent education<br>
    <input type="text" name="education[]" id="education1"></p>
于 2013-08-03T19:05:30.163 に答える
1

入力に配列として名前を付ける必要がありますname="city[]"

于 2013-08-03T19:02:29.350 に答える
0

これを入力名に追加するだけで[]、 で始まる配列が作成されます[0]。結果は次のようになります。

array(
   [0] => 'Nicosia',
   [1] => 'Limassol',
   [2] => 'Larnaca',
)

HTML:

<input type="checkbox" name="city[]" value="Nicosia" class="choosecity" />Nicosia<br>
<input type="checkbox" name="city[]" value="Limassol" class="choosecity" />Limassol<br>
<input type="checkbox" name="city[]" value="Larnaca" class="choosecity" />Larnaca<br>

PHP:

if( isset($_POST[city]) && is_array($_POST[city]) ){
   foreach($_POST[city] as $checkbox){
       echo $checkbox . ' ';
   }
}
于 2013-08-03T19:16:16.810 に答える