私はこのようなコードを持っています:
$values = array('1A', '2B', '3C', '4D', '5E');
$checked = array('1A_check', '2B_check', '3C_check', '4D_check', '5E_check');
$description = array('Description1', 'Description2', 'Description3', 'Description4', 'Description5');
for ($i=0; $i<count($values); $i++) {
$$checked[$i] = ""; //Setting this to null since this variable will be set to checked or not in the later step
$checkbox_form[] = '<input type="checkbox" name="checkbox[]" value="'. $values[$i] .'"'. $$checked[$i] .'>
'. $description[$i] .' <br />';
}
foreach ($checkbox_form as $value) { //Rending the Form
echo $value;
}
このコードは、フォームを次のようにレンダリングします。
<input type="checkbox" name="checkbox[]" value="1A">
Description1 <br />
<input type="checkbox" name="checkbox[]" value="2B">
Description2 <br />
<input type="checkbox" name="checkbox[]" value="3C">
Description3 <br />
<input type="checkbox" name="checkbox[]" value="4D">
Description4 <br />
<input type="checkbox" name="checkbox[]" value="5E">
Description5 <br />
ここまでは順調ですね。私が次にやろうとしているのは、ユーザーがボックスからいくつかのチェックボックスを選択して「プレビュー」をクリックすると、選択したチェックボックスが「チェックされた」状態でフォームをプレビューするページに移動することです。だから私はそれを行うためにこのようなコードを持っています:
//After checking what values were posted in the previous screen
$checkbox_posted = array('1A_check', '2B_check'); //Storing the posted checkboxes to this array
if (count($checkbox_posted) != 0) {
foreach ($checkbox_posted as $item) {
$$item = ' checked';
}
}
上記のvariable variable
コードは、フォームの 1 行目と 2 行目の変数に「チェック済み」の値を追加する$1A_check
と思って$2B_check
いましたが、そうではなく、チェックボックスもチェックされていません。フォームは次のように出力されるはずだと思いました:
<input type="checkbox" name="checkbox[]" value="1A" checked>
Description1 <br />
<input type="checkbox" name="checkbox[]" value="2B" checked>
Description2 <br />
<input type="checkbox" name="checkbox[]" value="3C">
Description3 <br />
<input type="checkbox" name="checkbox[]" value="4D">
Description4 <br />
<input type="checkbox" name="checkbox[]" value="5E">
Description5 <br />
しかし、代わりに、チェックされた値を渡さずに出力します。だからそれは働いていません。私は何を間違えましたか?