[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 メーリングリストの案内