• 締切済み

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 ";

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>「kai」のフィールドに「英語 算数」と入り、 この運用方法はSQLとしては最悪です。 DBで管理するのに非常に非効率なデータの持ち方です。 検索性もグダグダですが、ほんとにそれでよろしいのですか? 改めるのでしたら「正規化」をキーワードにして検索サイトで サーチしてみてください。すこし視野が広がるとおもいます。 どうしてもいまのやり方に固執するなら以下のようにやればできます。 当座はこれでしのげますが、あとで苦労をするのはご自身ですので お勧めはしません。 $val=""; foreach($kai as $val){ $val.=($val==""?"":" ").$val; } $sql = "insert into kainan values (0, '$tou', '$val')"; $result = mysql_query($sql);

noname#46364
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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にわたせないかと

noname#46364
質問者

お礼

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

noname#46364
質問者

補足

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

すると、全ての回答が全文表示されます。
  • potkurin
  • ベストアンサー率24% (33/134)
回答No.1

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

すると、全ての回答が全文表示されます。

関連するQ&A