複数checkboxでの更新画面作成について
現在、DBより登録済みのID、名前をひっぱてきて、
出欠フラグにレ点をつけ更新できる一覧画面を作成しております。
そこでcheckboxが登録ID数必要になってきます。
checkboxのname属性を登録IDとしてPOSTし、配列にいれて、
where句で絞ってupdateしようとしていたのですが
これだとレ点をはずした際にはなにもPOSTされてきません。
そこでレ点をはずしPOSTした際に、
はずしたIDを特定できる手段、方法はありますでしょうか?
具体的な処理をソースコードで教えていただけませんでしょうか?
よろしくおねがいします。
No.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;
?>
No.2
- 回答日時:
>チェックされているもの以外をどのように指定してやったらよいでしょうか?
考え方は3つ。
(1)ラジオボタン(もしくはセレクトボックス)で選択式にする
(2)javascriptで隠しデータをつくる
(3)そもそも選択項目はサーバー側がもっているのだからチェックされている
モノ以外はチェックされていないとサーバー側で判断できる
ありがとうございます。求めていた仕様を満たしてつくることができました。
さらに手段もいくつかあげていただきとっても役立ちました。
ありがとうございました。
No.1
- 回答日時:
checkboxは、外れているものはリクエストされない仕様です。
javascriptなどでチェックを確認する方法がありますが、
PHPで解決する方法としては(というかSQLで)、
単純にUPDATE文の条件を反対にすれば良いのではないでしょうか。
つまり、チェックされているもの以外を「欠席」にUPDATEする、というSQL文を書く。
そして、その前か後かに、チェックされているものを「出席」にするUPDATE文を書く。
これで事足りる気がしますが、いかがでしょうか。
この回答への補足
回答ありがとうございます。
>>チェックされているもの以外を「欠席」にUPDATEする
とのことですが、チェックされているもの以外をどのように指定してやったらよいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
PHPのページ間による配列の受け...
-
POSTデータのNAME属性をVALUEに...
-
HTMLフォームで複数選択のチェ...
-
<input type="hidden" >で配列...
-
PHPでじゃんけん勝負
-
チェックボックスによる検索(...
-
extract($_POST)
-
テキストボックスに初期値を入れる
-
複数チェックボックスの入力制...
-
HTMLのリンクをクリックするこ...
-
PHP ボタンが押されたら処理を...
-
フォームボタンを押すたびに数...
-
チェックボックスの値に応じてP...
-
ラジオボタンのチェックを判定...
-
フォームへの前回入力値をクリ...
-
チェックボックスによる検索
-
アップロードの際にファイルパス
-
$_POSTを連想配列で取得したい!!
-
入力フォーム→確認画面→送信画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
PHP ボタンが押されたら処理を...
-
フォームへの前回入力値をクリ...
-
検索時の選択内容を保持する方法
-
PHPで画像の渡しが上手く行きま...
-
フォームボタンを押すたびに数...
-
syntax error, unexpected '}' ...
-
フォームでのリセットを使う方法
-
パラメーターを隠す
-
$_SESSIONについて教えて下さい。
-
ラジオボタンをsessionで使いたい
-
画面が更新されてもチェックボ...
-
phpの掲示板で新しい順に表...
-
PHPで、ボタンを押すと同じペー...
-
phpでの複数選択チェックボック...
-
PHPでじゃんけん勝負
-
チェックボックスを使った複数...
-
DBの値をチェックボックスに反...
-
PHPのmysqlに格納したデータの...
おすすめ情報