0

私の動的なhtmlテーブルコードを見ると、現在、以下のようなテーブルが表示されています:

表が正しく表示されない

これは明らかに間違っており、次のように表を表示する必要があります。

どのテーブルがどのように見えるべきか

コードのマークアップに何か問題があると推測していますが、どこに問題があるのか​​ わかりません。正しいテーブル レイアウトを取得できるようにするために、どこに問題があるか知っている人はいますか? PHP:

    <?php

if (isset($_POST['id'])) {

$_SESSION['id'] = $_POST['id'];

}

$assessment = $_SESSION['id'];
    include('connect.php');

    $query = "SELECT q.SessionId, s.SessionName, q.QuestionId, q.QuestionContent, an.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 = ?
    ORDER BY q.QuestionId, an.Answer";

    // 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;
    }?>  

HTML:

<form id="Marks" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<table border='1' id='markstbl'>
    <thead>
        <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>
    </thead>
    <?php
    $row_span = array_count_values($searchQuestionId);
    $prev_ques = '';
    foreach($searchQuestionId as $key=>$questionId){?>
        <tbody>   
            <tr class="questiontd">
            <?php
            if($questionId != $prev_ques){?>
                <td class="questionnumtd" name="numQuestion" rowspan="<?=$row_span[$questionId]?>"><?=$questionId?> <input type="hidden" name="q<?=$questionId?>_ans_org" class="q<?=$questionId?>_ans_org" value="<?=$searchMarks[$key]?>"><input type="hidden" name="q<?=$questionId?>_ans" class="q<?=$questionId?>_ans" value="<?=$searchMarks[$key]?>"></td>
                <td class="questioncontenttd" rowspan="<?=$row_span[$questionId]?>"><?=$searchQuestionContent[$key]?> </td>
            <?php
            }else{?>
                <td class="questionnumtd" name="numQuestion" ></td>
                <td class="questioncontenttd" ></td>
            <?php
            }?>
                <td class="answertd" name="answers[]"><?=$searchAnswer[$key]?></td>
                <td class="answermarkstd">
                <input class="individualMarks q<?=$questionId?>_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
                </td>
            <?php
            if($questionId != $prev_ques){?>
                <td class="noofmarkstd q<?=$questionId?>_ans_text"  q_group="1" rowspan="<?=$row_span[$questionId]?>"><?=$searchMarks[$key]?></td>
            <?php
            }else{?>
                <td class="noofmarkstd"  q_group="1"></td>
            <?php
            }?>
            </tr>
        <?php
        $prev_ques = $questionId;
    }?>
    </tbody>
</table>
</form>

以下は、配列の print_r が示すものです。

配列 ( [0] => 1 [1] => 1 2 => 1 3 => 2 ) 配列 ( [0] => ROM の 3 つの機能に名前を付ける [1] => ROM 2の 3 つの機能に名前を付ける=> ROM の 3 つの機能の名前を挙げてください3 => ここに 1 つの答えがあります ) Array ( [0] => A [1] => B 2 => D 3 => True ) Array ( [0] => 5 [1] = > 5 2 => 5 3 => 5 )

4

2 に答える 2

1

それはただの推測です..削除するとどうなりますか

else{?>
                <td class="questionnumtd" name="numQuestion" ></td>
                <td class="questioncontenttd" ></td>
            <?php
            }

else{?>
                <td class="noofmarkstd"  q_group="1"></td>
            <?php
            }

あなたのコードから..

于 2012-11-16T14:11:50.713 に答える
1

タイトルに行スパンがあるため、追加する理由がわかりません

<td class="questionnumtd" name="numQuestion" ></td>
<td class="questioncontenttd" ></td>

タイトルが新しくない場合。このelseステートメントと上記の2行を削除するだけです。

2 番目の else ステートメントとその html コードについても同様です。それを除く。

<tr class="questiontd">
<?php
if($questionId != $prev_ques){?>
     <td class="questionnumtd" name="numQuestion" ...></td>
     <td class="questioncontenttd" rowspan="<?=$row_span[$questionId]?>"><?=$searchQuestionContent[$key]?> </td>
 <?php }?>
 <td class="answertd" name="answers[]"><?=$searchAnswer[$key]?></td>
 <td class="answermarkstd">
 <input class="individualMarks q<?=$questionId?>_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
 </td>
 <?php
 if($questionId != $prev_ques){?>
     <td class="noofmarkstd q<?=$questionId?>_ans_text"  q_group="1" rowspan="<?=$row_span[$questionId]?>"><?=$searchMarks[$key]?></td>
<?php }?>
</tr>
于 2012-11-16T14:12:23.667 に答える