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. 新しいディスプレイからもわかるように。質問ごとのすべての回答を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 に答える