これ何て呼びますか

複数checkboxでの更新画面作成について
現在、DBより登録済みのID、名前をひっぱてきて、
出欠フラグにレ点をつけ更新できる一覧画面を作成しております。

そこでcheckboxが登録ID数必要になってきます。
checkboxのname属性を登録IDとしてPOSTし、配列にいれて、
where句で絞ってupdateしようとしていたのですが
これだとレ点をはずした際にはなにもPOSTされてきません。

そこでレ点をはずしPOSTした際に、
はずしたIDを特定できる手段、方法はありますでしょうか?

具体的な処理をソースコードで教えていただけませんでしょうか?
よろしくおねがいします。

A 回答 (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;
?>
    • good
    • 0
この回答へのお礼

ありがとうございます。求めていた仕様を満たしてつくることができました。
とっても役立ちました。ありがとうございました。

お礼日時:2010/01/21 02:03

>チェックされているもの以外をどのように指定してやったらよいでしょうか?



考え方は3つ。

(1)ラジオボタン(もしくはセレクトボックス)で選択式にする
(2)javascriptで隠しデータをつくる
(3)そもそも選択項目はサーバー側がもっているのだからチェックされている
モノ以外はチェックされていないとサーバー側で判断できる
    • good
    • 0
この回答へのお礼

ありがとうございます。求めていた仕様を満たしてつくることができました。
さらに手段もいくつかあげていただきとっても役立ちました。
ありがとうございました。

お礼日時:2010/01/21 02:04

checkboxは、外れているものはリクエストされない仕様です。


javascriptなどでチェックを確認する方法がありますが、
PHPで解決する方法としては(というかSQLで)、
単純にUPDATE文の条件を反対にすれば良いのではないでしょうか。
つまり、チェックされているもの以外を「欠席」にUPDATEする、というSQL文を書く。
そして、その前か後かに、チェックされているものを「出席」にするUPDATE文を書く。

これで事足りる気がしますが、いかがでしょうか。

この回答への補足

回答ありがとうございます。

>>チェックされているもの以外を「欠席」にUPDATEする

とのことですが、チェックされているもの以外をどのように指定してやったらよいでしょうか?

補足日時:2010/01/20 03:41
    • good
    • 0
この回答へのお礼

ありがとうございます。求めていた仕様を満たしてつくることができました。
とっても役立ちました。ありがとうございました。

お礼日時:2010/01/21 02:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報