[PHP-users 35374] チェックボックスにチェックがない場合
Hisamitsu Issei
ds1i-hsmt @ asahi-net.or.jp
2010年 10月 22日 (金) 15:09:29 JST
久光と申します
<input type="checkbox" name="hoge[]" value="1">
<input type="checkbox" name="hoge[]" value="2">
という形でチェックボックスの値を配列で取得するとして、これとは別にhogeの更新を確認しない画面からもデータの入力が想定されるとすると$_REQUEST['hoge']が存在しない場合に
(1)hogeの全てにチェックマークがついてない(hogeを空値に更新する)
(2)hogeの更新を確認しない画面からデータがきている(hogeは更新しない)
の区別をして適切に処理する必要があります。そこで
<input type="hidden" name="hoge[]" value="no data">
<input type="checkbox" name="hoge[]" value="1">
<input type="checkbox" name="hoge[]" value="2">
というようにhiddenで適当な値を必ず送るようにして
if (isset($_REQUEST['hoge'])) {
if (count($_REQUEST['hoge']) === 1 and $_REQUEST['hoge'][0] === 'no data') {
// hiddenに入れたno dataだけがきているのでhogeを空値にする
} else {
// no data以外のhoge配列で値を更新する
}
}
という形で処理しようと考えているのですが、他になにかよく使われる方法があるでしょうか。
PHP-users メーリングリストの案内