みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

mysqlとphpを使った入力画面でチェックボックスのデータの受け取り方

住所録を作成しています。
趣味をチェックボックスで選択するようにしましたが、1つしか選ばれません。例を挙げましたので教えてください。
if($tou<>""){
$sql = "insert into kainan values (0, '$tou', '$kai')";
$result = mysql_query($sql);
$sql = "select * from jyusho where tou='$tou' order by tou asc limit 1";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
$id = $row["id"];
}
echo "<p>登録完了しました</p>\n";
exit;
}
echo "
<p>データを入力してください<p/>
<form action=\"touroku.php\" method=\"post\">
<p>○登録日:<input type=\"file\" name=\"tou\" size=40 >\n
<p>○趣味:\n
<input type=\"checkbox\" name=\"kai\" value=\"不明\">不明\n
<input type=\"checkbox\" name=\"kai\" value=\"英語\">英語\n
<input type=\"checkbox\" name=\"kai\" value=\"算数\">算数\n
</p>\n
<p><input type=\"submit\" value=\"登録\">  
<input type=\"reset\" value=\"クリア\"></p>\n
</form>\n
";

投稿日時 - 2007-10-03 10:35:08

QNo.3397135

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>「kai」のフィールドに「英語 算数」と入り、

この運用方法はSQLとしては最悪です。
DBで管理するのに非常に非効率なデータの持ち方です。
検索性もグダグダですが、ほんとにそれでよろしいのですか?
改めるのでしたら「正規化」をキーワードにして検索サイトで
サーチしてみてください。すこし視野が広がるとおもいます。

どうしてもいまのやり方に固執するなら以下のようにやればできます。
当座はこれでしのげますが、あとで苦労をするのはご自身ですので
お勧めはしません。

$val="";
foreach($kai as $val){
$val.=($val==""?"":" ").$val;
}
$sql = "insert into kainan values (0, '$tou', '$val')";
$result = mysql_query($sql);

投稿日時 - 2007-10-03 20:39:58

お礼

継ぎ足しだらけでおかしくなっていたのは事実でしたので、
調べてやり直したいと思います。
ありがとうございまいした。

投稿日時 - 2007-10-04 09:14:59

ANo.2

まず入力フォームのテキストボックス名をkai[]とします。
<input type="checkbox" name="kai[]" value="不明">不明
<input type="checkbox" name="kai[]" value="英語">英語
<input type="checkbox" name="kai[]" value="算数">算数

その上で、foreachで必要回数まわします
foreach($kai as $val){
$sql = "insert into kainan values (0, '$tou', '$val')";
$result = mysql_query($sql);
}

ただしtouがなぜfileになっているかわかりませんが・・・
fileでおくるならformの記述は間違ってますし、
$touはそのままではsqlにわたせないかと

投稿日時 - 2007-10-03 11:26:49

補足

すいません、touの部分は、fileじゃなくてtextでした。
試してやってみます。

投稿日時 - 2007-10-03 11:56:50

お礼

まだ、お礼ではないのですが、「kai」というフィールドに、選んだ分が全部反映がされませんでした。チェックした項目が1つごとに作成されていました。
希望:「英語と算数をチェックしたら」
「kai」のフィールドに「英語 算数」と入り、
「2007/10/1 英語 算数」 と「hyouji.php」に表示させたい。
実際は、
「2007/10/1 英語」
「2007/10/1 算数」と別々に「hyouji.php」に表示されている。
よろしくおねがいいたします。

投稿日時 - 2007-10-03 12:22:59

ANo.1

こんにちは。
素人な回答者です。

<input type=\"checkbox\" name=\"kai\" value=\"不明\">不明\n
で気になったのですが、
「name=\"kai\"」って3つ全部同じ名前でいいんでしたっけ?

投稿日時 - 2007-10-03 11:02:26

あなたにオススメの質問