- ベストアンサー
複数checkboxでの更新画面作成について
- 複数checkboxを使用した更新画面の作成方法について
- 登録済みIDと名前を取得し、出欠フラグを更新する一覧画面を作成しています
- checkboxのname属性を使用して登録IDをPOSTし、配列として処理する方法について
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
はじめまして。 この間、誰かの質問の解答用に作ったゴミプロの使いまわしで申し訳ないです。 基本的に、自己流でゴリ押しな書き方なので、こんな方法もある。程度にお考えください。 まぁ、見ての通りですが、結局 総当りでやってるだけです。 <? $me = $_SERVER[PHP_SELF]; $Message = $out = ""; $act = $_POST[act]; // ↓ DBから 引っ張ってくる代わりに とりあえず 配列で。(ID => Name) $DimCheckbox = array (1 => "シャーロック・ホームズ" , 2 => "アルセーヌ・ルパン" , 3 => "ジェイソン" , 4 => "フレディ" , 5 => "チャッキー"); //----------------------------------------------------------------------------- // 初期画面 if (!$act) { $out.= "出席している人にチェックを入れてください。<hr>"; $out.= "<form action=$me method=post>\n"; foreach($DimCheckbox as $ID => $Name) { $out.= "<input type=checkbox name=Data[$ID] value=on>$Name<br>\n"; } $out.= "<input type=hidden name=act value='send'>\n"; $out.= "<input type=submit name=submit value='送信'>\n</form>"; } //------------------------------------------------------------------------------ // DBの更新 if ($act == "send") { $Data = $_POST[Data]; foreach($DimCheckbox as $ID => $Name) { $Flag = ($Data[$ID] == "on") ? 1 : 0; $sql = "update テーブル名 set 出欠フラグ=$Flag where ID=$ID"; // $result = mysql_query($sql); // DBまで作って動作確認するのは面倒だったので、↓で表示しているだけ。 $out.= "$sql<br>"; } } //----------------------------------------------------------------------------- print $out; ?>
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
>チェックされているもの以外をどのように指定してやったらよいでしょうか? 考え方は3つ。 (1)ラジオボタン(もしくはセレクトボックス)で選択式にする (2)javascriptで隠しデータをつくる (3)そもそも選択項目はサーバー側がもっているのだからチェックされている モノ以外はチェックされていないとサーバー側で判断できる
お礼
ありがとうございます。求めていた仕様を満たしてつくることができました。 さらに手段もいくつかあげていただきとっても役立ちました。 ありがとうございました。
- hogehoge78
- ベストアンサー率80% (433/539)
checkboxは、外れているものはリクエストされない仕様です。 javascriptなどでチェックを確認する方法がありますが、 PHPで解決する方法としては(というかSQLで)、 単純にUPDATE文の条件を反対にすれば良いのではないでしょうか。 つまり、チェックされているもの以外を「欠席」にUPDATEする、というSQL文を書く。 そして、その前か後かに、チェックされているものを「出席」にするUPDATE文を書く。 これで事足りる気がしますが、いかがでしょうか。
お礼
ありがとうございます。求めていた仕様を満たしてつくることができました。 とっても役立ちました。ありがとうございました。
補足
回答ありがとうございます。 >>チェックされているもの以外を「欠席」にUPDATEする とのことですが、チェックされているもの以外をどのように指定してやったらよいでしょうか?
お礼
ありがとうございます。求めていた仕様を満たしてつくることができました。 とっても役立ちました。ありがとうございました。