1つのフォームに複数のチェックボックスがあります(それぞれにコードがあります)。
<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">
ここで、$row['Report ID']
はデータベースの主キーなので、それぞれの値は異なります。
どのチェックボックスにチェックが入っているかを知るにはどうしたらいいですか?(複数の場合もあります)
受信システムで、下のボタンをクリックすると、チェックボックスにチェックが入っているすべてのメッセージ(ID: $row['Report ID']
)を削除したいと考えています。
フォームの名前をcheck_list[]
にすると、すべてのチェックボックスに配列($_POST['check_list'][]
)でアクセスできるようになります。
ご要望にお応えして、ちょっとしたサンプルをご紹介します。
<form action="test.php" method="post">
<input type="checkbox" name="check_list[]" value="value 1">
<input type="checkbox" name="check_list[]" value="value 2">
<input type="checkbox" name="check_list[]" value="value 3">
<input type="checkbox" name="check_list[]" value="value 4">
<input type="checkbox" name="check_list[]" value="value 5">
<input type="submit" />
</form>
<?php
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check) {
echo $check; //echoes the value set in the HTML form for each checked checkbox.
//so, if I were to check 1, 3, and 5 it would echo value 1, value 3, value 5.
//in your case, it would echo whatever $row['Report ID'] is equivalent to.
}
}
?>
のように、チェックボックスに名前を付けなければなりません。
<input type="checkbox" name="check_list[]" value="…" />
とすると、チェックされたすべてのチェックボックスには
// loop over checked checkboxes
foreach($_POST['check_list'] as $checkbox) {
// do something
}
ps. 出力を適切にエスケープするようにしてください (htmlspecialchars()
)
<input type="checkbox" name="check_list[<? echo $row['Report ID'] ?>]" value="<? echo $row['Report ID'] ?>">
そして、ポストの後には、それらをループさせることができます。
if(!empty($_POST['check_list'])){
foreach($_POST['check_list'] as $report_id){
echo "$report_id was checked! ";
}
}
または、前のページから投稿された特定の値を取得します。
if(isset($_POST['check_list'][$report_id])){
echo $report_id . " was checked!<br/>";
}