0
$arrQuestionContent = array();
$arrAnswerFile = array();


while ($qandaqrystmt->fetch()) {
    $arrQuestionId[] = $qandaQuestionId;
    $arrQuestionContent[] = $qandaQuestionContent;
}

...

while ($imgqrystmt->fetch()) {
  $arrAnswer[] = $AnswerFile;
}

上記には、db からデータをarrQuestionContent[]取得する 2 つの配列があり、すべての質問を$arrAnswer[]取得し、質問ごとにすべての回答を取得します。

ただし、一部の質問には回答が含まれていない場合があり、その結果Notice: Undefined offset:、テーブル内の for each 質問行に回答が含まれていません。

私の質問は、質問行に回答が含まれていない場合、列の下に空白行を表示するにはどうすればよいAnswerですか?

また、質問が複数の回答を持つ可能性もあります。その場合は、複数の回答があるAnswer質問行に、質問行内の列の下にすべての回答を含めることができるようにします。現時点では、複数の回答があると想定される質問行に対して 1 つの回答のみが表示されます。

以下に表を示します。

    <table id="tableqanda" align="center" cellpadding="0" cellspacing="0" border="1">
    <thead>
    <tr>
        <th width="30%" class="question">Question</th>
        <th width="12%" class="images">Answer</th>
    </tr>
    </thead>
    <tbody>
        <?php
          foreach ($arrQuestionId as $key=>$question) {
        echo '<tr class="tableqandarow">'.PHP_EOL;
        echo '<td width="30%" class="question">'.htmlspecialchars($arrQuestionContent[$key]).'</td>' . PHP_EOL;
        echo '<td width="12%" class="images">'. ( empty ($arrAnswerFile[$key]) ) ? "&nbsp;" : htmlspecialchars( is_array( $arrAnswerFile[$key] ) ? implode(",", $arrAnswerFile[$key]) : $arrAnswerFile[$key] ) . '</td>' . PHP_EOL;
        echo '</tr>'.PHP_EOL;
        }
?>
    </tbody>
    </table>

アップデート:

テーブルがどのように見えるかを示すスクリーンショット:

ここに画像の説明を入力

更新 2:

の結果var_dump($arrQuestionContent);:

array(2) { [0]=> string(19) "Name these 2 things" [1]=> string(11) "What is 4+4" }

の結果var_dump($arrAnswerFile);:

array(3) { 
[0]=> string(1) "A" 
[1]=> string(1) "C" 
[2]=> string(1) "A" 
}

以下はテーブルのスクリーンショットです。これは、質問に回答があるかどうかに関係なく発生します。

ここに画像の説明を入力

データベース:

QuestionId  QuestionContent         Answer
1           Name these 2 Things     A
1           Name these 2 Things     C
2           What is 4+4?            A
4

3 に答える 3

1

チャットディスカッションに続いて、問題の一部を修正しました。それは、各回答をその質問に割り当てることです。残りの場合、複数の回答の場合は、次のコードを使用してください。

while ($qandaqrystmt->fetch()) { 
    $arrQuestionId[ $qandaQuestionId ] = $qandaQuestionId; 
    $arrQuestionNo[ $qandaQuestionId ] = $qandaQuestionNo; 
    $arrQuestionContent[ $qandaQuestionId ] = $qandaQuestionContent; 
    $arrOptionType[ $qandaQuestionId ] = $qandaOptionType; 
}
...
while ($imgqrystmt->fetch()) { 
    $arrImageFile[ $imgQuestionId ][] = basename($imgImageFile); 
}

次に、HTMLテーブルの要素を次のように表示します。

foreach ($arrQuestionId as $key=>$question) { 
    echo '<tr class="tableqandarow">'.PHP_EOL; 
    echo '<td width="5%" class="questionno">'.htmlspecialchars($arrQuestionNo[$key]).'</td>' . PHP_EOL; 
    echo '<td width="27%" class="question">'.htmlspecialchars($arrQuestionContent[$key]).'</td>' . PHP_EOL; 
    echo '<td width="7%" class="option">'.htmlspecialchars($arrOptionType[$key]).'</td>' . PHP_EOL; 
    echo '<td width="11%" class="imagetd">'. ( ( empty ($arrImageFile[$key]) ) ? "&nbsp;" : '<ul class="qandaul"><li>'.htmlspecialchars( is_array( $arrImageFile[$key] ) ? implode(" ", $arrImageFile[$key]) : $arrImageFile[$key] ) ). '</li></ul></td>' . PHP_EOL; 
    echo '</tr>'.PHP_EOL; 
    }

私はこれが今うまくいくことを願っています

于 2013-01-22T17:33:50.880 に答える
1

空のセルを表示するには、次のようにします。

echo '<td>'. ( empty ($arrAnswerFile[$key]) ) ? "&nbsp;" : htmlspecialchars( $arrAnswerFile[$key] ) . '</td>' . PHP_EOL;

それ以外の場合、複数の回答を表示するには、テーマを保存するにはどうすればよいですか? $arrAnswerFile[$key] 変数が配列の場合、次のようにして解決できます。

echo '<td>'. ( ( empty ($arrAnswerFile[$key]) ) ? "&nbsp;" : htmlspecialchars( is_array( $arrAnswerFile[$key] ) ? implode(",", $arrAnswerFile[$key]) : $arrAnswerFile[$key] ) ). '</td>' . PHP_EOL;

カンマ区切りで回答が表示されますが、別の方法で回答を保存する場合は、より良い解決策を提案できることをお知らせください。

于 2013-01-20T12:36:50.040 に答える
0

変数 $qandaQuestionContent および $AnswerFile がどのように設定されるか (値を取得するか) は明確ではありません。

$qandaQuestionContent と $AnswerFile の値を取得するには、質問で言及されている 2 つのwhileループを変更する必要があります。

于 2013-01-20T12:36:16.917 に答える