1

我对如何在我的 php 代码中显示正确的表格布局有疑问:

我想在表格中显示答案及其文本输入。现在它显示如下:

 Question             Answer        Marks Per Answer     
 What is 2+2          B             (text input)         
 Name the 3 hobbits?  BCE           (text input)  

我想更改表格的显示,使其如下所示:

 Question             Answer        Marks Per Answer 
 What is 2+2?         B             (text input)
 Name the 3 Hobbits?  B             (text input)                   
                      C             (text input)
                      E             (text input)
  1. 正如您从新显示器中看到的那样。我希望每个问题的每个答案都显示在他们自己的行中,而不是在一行中显示每个问题的所有答案,这就是它目前正在做的事情。
  2. 我希望文本输入也显示在自己的行中,例如答案:

我的问题是,如何实现第 1 点和第 2 点才能匹配新布局?

以下是当前显示的代码:

$assessment = $_SESSION['id'] . $sessionConcat;

include('connect.php');

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

        // 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();


        // Fetch the results into an array

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

        ?>      

        </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</th>
        <th class='answerth'>Answer</th>
        <th class='answermarksth'>Marks per Answer</th>
        </tr>\n";

        foreach ($searchQuestionContent as $key=>$question) {
        echo '<td>'.htmlspecialchars($question).'</td>' . PHP_EOL;
        echo '<td class="answertd">'.htmlspecialchars($searchAnswer).'</td>' . PHP_EOL; 
        echo '<td class="answermarkstd"><input class="individualMarks" name="answerMarks[]" id="individualtext" type="text" "/></td>' . PHP_EOL;
        }
        echo "</table>" . PHP_EOL;

        ?>

        </form>

        </body>

下面是问题表的样子:

问题表:

QuestionId (auto)  QuestionContent
1                  What is 2+2?
2                  Name the 3 hobbits?

答案表:

AnswerId (auto)  QuestionId   Answer
1                 1           B   
2                 2           B
3                 2           C
4                 2           E
4

1 回答 1

0

看起来你可以摆脱分组子句。您可能希望按问题 ID 排序,因此同一问题的所有答案都会一起给出。

SELECT q.QuestionId, q.QuestionContent, an.Answer
FROM Question q
INNER JOIN Answer an ON q.QuestionId = an.QuestionId
WHERE s.SessionName = ?
ORDER BY q.QuestionId, an.Answer
于 2012-11-03T19:11:01.227 回答