忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

php checkboxのオン/オフ(checked)の値を取得
チェックボックスのオン/オフの状態を取得する方法。
postでもgetでも、オンの値しか返してくれないのでひと手間が必要。
(これはaspでもはまったなぁ…)

チェックボックスが1つであれば、
<input name="hoge" type="hidden" value="0" />
<input name="hoge" type="checkbox" value="1" />

オンのとき→1、オフのとき→0という具合に取得できます。

今回やりたいのは、チェックボックス自体が配列の場合。
個数も動的に変えていきたい。
<input name="hoge[]" type="hidden" value="0" />
<input name="hoge[]" type="checkbox" value="1" />

↑の例と同じように書いてしまうと、
結果は、
array (size=2)
0 => string '0' (length=1)
1 => string '1' (length=1)

もともと配列なので、オンにすると両方取れてしまう。

配列の引数直書きはめんどくさいので避けたい。ということで、こんな風に解決しました↓
//POSTの値を格
$arr_no   = $_POST['no'];	//キー
$arr_chk   = $_POST['chk'];	//チェックボックスの値の配列
foreach($arr_no as $key => $val){
	//チェックボックス配列からキーを検索
$tmp=array_search($val,$arr_chk);
if(!($tmp===false)){
echo $arr_no[$tmp] . "のチェックボックスはON!"; } }

checkboxのvalueにキーとなる値(IDなど)を持たせる。

オンになっているものだけ配列で取得できるので、
その配列の中からキー値を検索。

あればオンの処理、なければオフの処理。

という流れです。
これだけだと、全部オフの場合にarray_searchが動かないので、html側にもひと手間。
<input name="chk[]" type="checkbox" value="1" /><br />
<input name="chk[]" type="checkbox" value="2" /><br />
<input name="chk[]" type="checkbox" value="3" /><br />
<input name="chk[]" type="hidden" value="NULL回避用" />

こんなかんじで、同じ名前でhiddenを持たせておけば、必ずlengthが1以上の配列になるので安心です。
(この配列をループで使うときなどは注意)
comments**
yourname ()
title ()
website ()
message

pass ()
- 11 - 10 - 9 - 6 - 4 - 3 - 2
prev  top next
BACKGROUND / tudu*uzu
TEMPLATE / Lenny
忍者ブログ [PR]