2

areas[]私はフォーラムを精査しました - ここと他の場所 -値がで始まり、1別の6つのオプションに続く名前のチェックボックスグループを使用するPOSTフォームからチェックされたオプションを印刷する方法を見つけようとしています. したがって、いずれの場合も NAME はそうですareas[]が、VALUE は 1 から 6 までです。

(このフォームからの他のすべてのエントリ (名前、電話番号など) は問題なく引き継がれます。)

せいぜい、私が試したとき(私が試したことの一例を挙げると)

$arr = $_POST[areas] 

次に、配列ごとに試してみると、「配列」という単語が出力されます。偉大な。

試してみる $_POST['areas']と、サーバーエラーが発生します。フォーラムで見つけた多くのことは、サーバー エラーを引き起こします。

私はすべての明らかなことを試しました-ループのfor代わりにfor each...せいぜい私が得るArrayか、奇妙な、A. テストでは常に 3 つのオプションを選択します。

PHP 5.3.8 を使用しています。

誰かがうまくいくかもしれない何かを提案できますか?

4

2 に答える 2

2

値が $_POST['areas'] にある場合は、表示する各チェックボックスを確認する必要があります。

$areas = $_POST['areas']; // if you get an error here, check your code cause it must work
//Some code...
$checked = '';
if (in_array($value, $areas)){
    $checked = 'checked="CHECKED"';
}
echo '<input type="checkbox" name="areas[]" '.$checked.' value="'.$value.'"/>';
于 2013-03-20T12:42:51.840 に答える
2

あなたの問題は、html がチェックボックスの値を返す方法に関連している可能性が最も高いです。

チェックボックスがチェックインされている場合はその値が返され、チェックインされていない場合は値が返されません。

値と呼ばれるチェックボックスから色を選択する場合name='colours[]'、次のようになります: (最初の行は選択肢で、2 番目は PHP で返される配列です)

[x] red  [ ] green  [ ] blue  [x] yellow  [ ] black  [ ] white

    array('red','yellow')

[ ] red  [ ] green  [ ] blue  [x] yellow  [ ] black  [x] white

    array('yellow','white')

[ ] red  [ ] green  [ ] blue  [ ] yellow  [ ] black  [ ] white

    null (no array returned)

それを行う1つの方法は、各オプションに異なる名前を使用し、このスタイルで値を確認することです:

$red = isset($_POST['ck_red']);
$green = isset($_POST['ck_green']);
...

name='ck_red'もちろん、赤いチェックボックスをなどと定義した場合のことです。

編集
(あなたのコードは続きます)

html:

<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="1">The Homeless</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="2">The Elderly</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="3">Refugees</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="4">The handicapped</INPUT><BR /> 

php:

$areas[] = "$_POST[areas]"; 
foreach ($areas as $value) { 
    echo $value . " "; 
} 

回答: 割り当てにエラーがあります。$areas[] = "$_POST[areas]";つまり"$_POST[areas]- を使用することで、配列である変数 $_POST[areas] のテキスト値と php の方法を知りたいことをパーサーに伝えています。これを処理するには、(javascript の例のように) カンマで区切られた要素のリストではなく、TEXT 'array'を返します。他のエラーは、あなたが持っているように機能しますが、 (キー名を一重引用areas符で囲んでいることに注意してください。最後の間違いは、( なしで'areas'$_POST['areas']'$_POST['areas']$areas[]$areas[])。そこで行っているのは、配列の新しい要素を配列 (領域) に追加して、値を割り当てている$_POST['areas']ため、最初のエラー ( ") がない場合に備えて、2 次元配列が作成されます。areas => array(array('a','b','c'))

修正 (php):

$areas = $_POST['areas'];
foreach ($areas as $value) { 
    echo $value . " "; 
} 
于 2013-03-20T12:43:09.937 に答える