• ベストアンサー

ラジオボタンをループすることができない。。。

こんにちは。 PHPとMySQLを使って四択クイズのプログラムを作成しているのですが、どうもうまくいきません。 助言よろしくお願いします。 四択クイズのイメージとしては以下のとおりです。 問題1:パンはパンでも食べられないパンは? ○クリームパン ○食パン ○フライパン ○チーズパン [送信ボタン] ※選択肢の前の○はラジオボタンです。 一つのページに複数の問題を載せたいので、 上記の[送信ボタン]をのぞいた部分をループ処理したいと思っています。 問題文と選択肢は実行するファイルとは別のファイル、「mondai.sql」に記述してデータベースに読み込んでいます。↓ drop table form2; create table form2(id mediumint not null auto_increment, mondai varchar(500), sentaku1 varchar(100),sentaku2 varchar(100),sentaku3 varchar(100), sentaku4 varchar(100),primary key(id)); insert into form2 values('1', 'パンはパンでも食べられないパンは?', 'クリームパン', '食パン', 'フライパン', 'チーズパン'); そして実行するファイルの「form2.php」を下のように記述してみたのですが・・・ ・ ・ ・ //----------------------------------------- //サーバに接続 //----------------------------------------- $my_Con = mysql_connect("localhost","root","vertrigo"); if($my_Con == false){ die("MYSQLの接続に失敗しました。"); } //----------------------------------------- //データベースに接続 //----------------------------------------- if(!mysql_select_db("kihon",$my_Con)){ die("データベースの選択に失敗しました。"); } //----------------------------------------- //テーブルからデータを読む //----------------------------------------- $my_Row = mysql_query("select * from form2",$my_Con); if(!$my_Con){ die(mysql_error()); } while($row = mysql_fetch_array($my_Row)){ echo $row["id"]; echo "<br>"; echo $row["mondai"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=1> <?php echo $row["sentaku1"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=2> <?php echo $row["sentaku2"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=3> <?php echo $row["sentaku3"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=4> <?php echo $row["sentaku4"]; echo "<br>"; } このままだとラジオボタンのnameが同じになってしまって全ての問題の選択肢から一つしか選べなくなってしまいました。 かといってnameをfor文でループさせることもできませんでした。 このプログラムにどのようにしてループを組み込めばいいかまったくわかりません。 長い質問で申し訳ないのですが、どうかよろしくお願いします。

質問者が選んだベストアンサー

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

idがあるのだからこんな感じで・・・ while($row = mysql_fetch_array($my_Row)){ print <<<eof 問題 {$row["id"]}:<br> {$row["mondai"]}<br> <input type="radio" name="mondai[{$row["id"]}]" value="1">{$row["sentaku1"]}<br> <input type="radio" name="mondai[{$row["id"]}]" value="2">{$row["sentaku2"]}<br> <input type="radio" name="mondai[{$row["id"]}]" value="3">{$row["sentaku3"]}<br> <input type="radio" name="mondai[{$row["id"]}]" value="4">{$row["sentaku4"]}<br> <hr> eof; } 受け取る側は$_REQUEST["mondai"]という配列に、回答された値を 得ることができます。 ちなみにご提示のデータベースの構造はあまりよくないですね・・・。 拡張性にかけるし、正解とひもづいてないし、もう少し工夫が必要になる と思います

potatooo
質問者

お礼

yambejpさん、ご回答ありがとうございます。 for文使わないとできないと勝手に思い込んでいました(汗) idを有効活用したほうが全然いいですね! とても参考になりました。ありがとうございます。 自分もまだ始めたばかりなのでわからない事が多々ありますが、 悪いところを指摘してもらえてとても為になりました! 今後も工夫を重ねてスキルアップしていきたいと思います。

その他の回答 (1)

回答No.1

nameの番号をPHPで書いてあげればいいんじゃないでしょうか。 while($row = mysql_fetch_array($my_Row)){ の部分を $no = 0; while($row = mysql_fetch_array($my_Row)){ $no++; にしてあげて、 <input type="radio" name=mondai1 value=1> この部分を <input type="radio" name=mondai<?= $no ?> value=1> こんな感じとか。

potatooo
質問者

お礼

mizuno3さん、ご回答ありがとうございます。 なるほど・・・、inputタグの中にもPHPを書くこともできるんですね。 そこまで発想が回りませんでした。 とても参考になりました。ありがとうございます!

関連するQ&A

専門家に質問してみよう