1

PHP コードで正しいレイアウトを表示する方法について質問があります。

OK 1 つのアセスメントのすべての問題を表に表示したいと思います。現在、以下のように表示されています。

Question No.  Question                        Answer        Marks Per Answer      Total Marks
1             What is 5+5?                    B             (text input)          3
2             Name three maneuvers you will   ECB           (text input)          7
              undergo in a driving test

テーブルの表示を次のように変更したいと思います。

Question No.  Question                        Answer        Marks Per Answer      Total Marks
1             What is 5+5?                    B             (text input)          3
2             Name three maneuvers you will   E             (text input)                   
              undergo in a driving test       C             (text input)          7
                                              B             (text input)
  1. 新しいディスプレイからもわかるように。質問に属する各回答を、現在行っているすべての回答を1行に表示するのではなく、独自の行に表示したいと考えています。
  2. 私が抱えているもう1つの問題は、質問ごとに1つのテキスト入力しか表示されないことです。代わりに、質問内の回答ごとにテキスト入力を表示する必要があります。

私の質問は、ポイント 1 と 2 をどのように達成して、新しいレイアウトに適合させることができるかということです。

以下は、現在の表示のコードです。

$query = "SELECT q.SessionId, s.SessionName, q.QuestionId, q.QuestionContent, GROUP_CONCAT(DISTINCT Answer SEPARATOR '') AS Answer, q.QuestionMarks 
FROM Session s 
INNER JOIN Question q ON s.SessionId = q.SessionId
JOIN Answer an ON q.QuestionId = an.QuestionId AND an.SessionId = q.SessionId
WHERE s.SessionName = ?
GROUP BY an.SessionId, an.QuestionId
";

// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("s", $assessment);
// execute query
$stmt->execute(); 


// This will hold the search results
$searchQuestionId = array();
$searchQuestionContent = array();
$searchAnswer = array();
$searchMarks = array();

// Fetch the results into an array

// get result and assign variables (prefix with db)
$stmt->bind_result($dbSessionId, $dbSessionName, $dbQuestionId, $dbQuestionContent, $dbAnswer, $dbQuestionMarks);
while ($stmt->fetch()) {
$searchQuestionId[] = $dbQuestionId;
$searchQuestionContent[] = $dbQuestionContent;
$searchAnswer[] = $dbAnswer;
$searchMarks[] = $dbQuestionMarks;
}   

?>      

</head>

<body>


<form id="QandA" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

<?php 

echo "<table border='1' id='markstbl'>
<tr>
<th class='questionth'>Question No.</th>
<th class='questionth'>Question</th>
<th class='answerth'>Answer</th>
<th class='answermarksth'>Marks per Answer</th>
<th class='noofmarksth'>Total Marks</th>
</tr>\n";
foreach ($searchQuestionContent as $key=>$question) {
echo '<tr class="questiontd">'.PHP_EOL;
echo '<td class="optiontypetd">'.htmlspecialchars($searchQuestionId[$key]).'</td>' . PHP_EOL;
echo '<td>'.htmlspecialchars($question).'</td>' . PHP_EOL;
echo '<td class="answertd">'.htmlspecialchars($searchAnswer[$key]).'</td>' . PHP_EOL; 
echo '<td class="answermarkstd"><input class="individualMarks" name="answerMarks[]" id="individualtext" type="text" "/></td>' . PHP_EOL;
echo '<td class="noofmarkstd">'.htmlspecialchars($searchMarks[$key]).'</td>' . PHP_EOL;
}
echo "</table>" . PHP_EOL;

?>

</form>

</body>
4

1 に答える 1

0

E、C、Bとは?彼らは質問2の答えですか?もしそうなら、$searchAnswer にはそれら (E、C、B) が含まれていると想定しました。したがって、 foreach ループを使用する必要があると思います。

foreach($searchAnswer as $key){
echo "$key<br />";
}

また

for($i=0;$i<count($searchAnswer);$i++){
echo "$searchAnswer[$i]<br />";
}

幸運を。

于 2012-11-02T14:03:24.437 に答える