これに関する私の最後の質問は、AJAXをPHPに組み込むことを提案しました。しかし、私は本当にこのプロジェクトのためだけにPHPを試してみたかったので、そこでは約95%成功したようです。この1つの問題について助けが必要です。
ここに簡単な背景があります。私のプロジェクトでは、動的フォームに最大10個の質問を入力する必要があります。各フォームには、1つの質問、1つの質問番号、およびテキストフィールドが含まれています。生徒たちは続けて質問に答えます。これはすべてデータベーステーブルによって駆動され(明らかに)、質問が正しく回答されると、それが閉じられ、次の質問が表示されます。ページには常に10の質問があります。コーディングは次のようになり、完全に機能します。
<?
$rt = mysql_query("SELECT * FROM The_Questions WHERE Status='Open' ORDER BY 'Number' LIMIT 10");
while ($row = mysql_fetch_array($rt)) {
$number=$row[0];
$category = $row[1];
$question=$row[2];
$points=$row[4];
$_SESSION['number'] = $number;
?>
<form action="processor.php" method="post" class="qForm">
<div class="questionCell">
<div class="question"><? echo $number; echo $question ?></div>
<div class="answer">Answer: <input class="inputField" name="q1" type="text" size="40" maxlength="40" />
<input name="HHQuestion" value="Submit" type="submit" /></div>
</div>
</form>
<?
}
?>
質問は、正しい順序と正しい制限で、必要に応じて表示されます。質問に回答し、processor.phpアクションで処理されるまで、すべてが正常に表示されているようです。まず、processor.phpファイルのコードを次に示します。
<?php
session_start();
if(isset($_POST["HHQuestion"])){
$dbhost = 'localhost';
$dbname = 'localhost';
$dbuser = 'localhost';
$dbpass = 'localhost';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $conn);
{
$number1 = $_SESSION['number'];
$answer=$_POST['q1'];
$sql="SELECT * FROM The_Questions WHERE Number='$number1'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$question = $row[2];
echo $question .'<br>';
echo $number1.'<br>';
echo $answer;
}
}
?>
これはまだ公開されていません。テストの目的で、質問、質問番号、および回答をエコーしています(ご覧のとおり)。何が起こっているのかというと、$questionと$number1は配列の最後の質問を表示します($ answerは正しく表示されます。つまり、動的形式で記述されたものはすべて表示されます)。
なぜそうなのか誰か教えてもらえますか?LIMIT番号を20に変更すると、たとえば動的形式で質問8に回答した場合でも、processor.phpアクションは20番目の質問と番号を表示します。この場合も、動的フォームは正しく表示され、正しく番号が付けられています。なんらかの理由で、アクション--processor.php--が配列の最後の質問を取得しています。
私が間違っていることについて何か考えはありますか?私が見落としているのは、単純なコード変更であることを望んでいます。よろしくお願いします!