※ ChatGPTを利用し、要約された質問です(原文:PHPで問題を出題するプログラムを作っています)
PHPで問題を出題するプログラムを作成する方法
このQ&Aのポイント
PHPを使用して問題を出題するプログラムを作成する方法について解説します。
write.phpというファイルで問題を入力し、hantei.phpというファイルでデータベースに格納する方法について説明します。
回答欄に回答を入力してもデータベースに格納されない問題が発生しています。それを解決するためには、forループで回す度に<input>タグのname属性を変更し、変更したnameを受け取って格納する必要があります。
write.phpというファイルで入力し、hantei.phpというファイルでデータベースに格納を行おうとしています
回答欄はデータベース内の模範解答が入っているテー
ブルのレコード数を数えてforループで表示しています。
表示された回答欄に回答を入力しても、データベースに格納されません。
調べたところ、forループで回す度に<input name="responce" type="text" id="responce">のなかのnameが変わらなければならないとのことです。
また、変化したnameを受け取って格納しなければならないと書いてありました。
エラー内容は
Undefined index: responce0 in hantei.php on line 16
Undefined index: responce1 in hantei.php on line 17
Undefined index: responce2 in hantei.php on line 18
Undefined index: responce3 in hantei.php on line 19
Undefined index: responce4 in hantei.php on line 20
Undefined index: responce5 in hantei.php on line 21
となっていました
以下ソースコードです。
write.php
<form action="hantei.php" method = "get">
<?php
//データベースの選択
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('text_book');
mysql_query('SET NAMES UTF8');
<?php
//レコード数の計算
$ans = mysql_query("SELECT COUNT(answer) FROM `write` WHERE problem_id = 1");
//回答欄の表示
for($i = 0; $i <= $ans; $i++){
echo"$i";
?>
<dd>
<input name="responce" type="text" id="responce" />
</dd>
<?php
}
?>
<input type="submit" valued="送信する">
hantei.php
<?php
//データベースの選択
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('text_book');
mysql_query('SET NAMES UTF8');
//回答結果の格納
$response = sprintf("INSERT INTO learner_responce SET responce='%s'",
mysql_real_escape_string($_GET["responce0"]),
mysql_real_escape_string($_GET["responce1"]),
mysql_real_escape_string($_GET["responce2"]),
mysql_real_escape_string($_GET["responce3"]),
mysql_real_escape_string($_GET["responce4"]),
mysql_real_escape_string($_GET["responce5"])
);
mysql_query($response) or die(mysql_error());
?>
<form method = "get" action = "write.php">
<input type="submit" valued="戻る">
お礼
初投稿なのでどのように書いたらわかりやすいのかが分からなかったため、冗長な文になってしましました。 アドバイス通りにもっと簡潔な文章にします。 ありがとうございます