PHPでチェックボックスの結果を離れた配列に入れる
PHPにて、複数あるチェックボックスの操作結果(オン/オフ)を変数に格納する方法を探しています。
予定として
プログラム実行 → ボタンが1つと、チェックボックスが複数表示される → チェックボックス操作 → ボタンを押す → 複数のオン/オフ状況が配列に格納される
といったものを作りたいと考えています。
現在はそのためのテストとして、ボタンを押した際のオン/オフの状況が画面に順に表示されるものを作っていますが、変数がUndefined Indexであると言われ、表示することができません。
現在のプログラムは下の通りです。
実際のプログラム上では、(1),(2),(3)はそれぞれソース内のかなり離れた場所にあります。
各チェックボックス(各<form>~</form>)毎にボタンを用意していないのが原因であるとは思うのですが、ボタンは特定の箇所に1つだけ用意したいと考えています。
またチェックボックス表示部とボタン表示部は(ソース的に)離れているため、
ボタン表示部で<form>を開いて、開いたまま進み、チェックボックス表示部が終わってやっと閉じる、という方法は難しいと思います。
どうすればチェックボックスの結果を離れた箇所にある配列に入れることができるのでしょうか。
宜しくお願いします。
[regist.php]
<?php
//(1) 更新ボタンを押すとチェックボックスのon/off結果が表示される
if(isset($_POST['cmd_Print'])){
$check = $_POST["cb"];
for($i=0; $i<count($check); $i++){
print "${check[$i]}<br>";
}
}
//(2) 更新ボタンの表示
print("<form method=\"post\" action=\"regist.php\">");
print("<input type=\"submit\" name=\"cmd_Print\" value=\"結果表示\">");
print("</form>");
//(3) チェックボックス(on,off)を交互に表示
for($i=0; $i<5; $i++){
//チェックボックスをオンの状態で表示
print("<form method=\"POST\" action=\"./regist.php\">");
print sprintf('<input type="hidden" name="cb[]" value="off">');
print sprintf('<input type="checkbox" name="cb[]" value="on" checked="checked">');
print("</form>");
//↑チェックボックス操作後、オフの状態なら$cb[]に"off"を、オンの状態なら$cb[]に"on"を入れる
//チェックボックスをオフの状態で表示
print("<form method=\"POST\" action=\"./regist.php\">");
print sprintf('<input type="hidden" name="cb[]" value="off">');
print sprintf('<input type="checkbox" name="cb[]" value="on">');
print("</form>");
//↑チェックボックス操作後、オフの状態なら$cb[]に"off"を、オンの状態なら$cb[]に"on"を入れる
}
?>
お礼
inoue64 さん 有難う、ございました。 うまく動作しました。