-3

PHP オンライン クイズ アプリケーションを実行しています。ページごとに 20 の質問を計画していました。次のページに移動すると、未定義のオフセット エラーが表示されます。回答配列で評価するために、ラジオ ボタンで選択したすべての値を取得する必要があります。post メソッドを使用してすべてを取得します。選択したラジオボタンの値.ページネーションの次のボタンをクリックすると、ボタンを送信する前にラジオボタンの選択した値が自動的に投稿されます.未定義のオフセットエラーなしで質問と回答を評価する必要があります.誰か助けてください.ここに私のコードがあります. .....

<?php
session_start();
include('connection.php');
mysql_select_db('quiz_apptitude');
$sql = mysql_query("SELECT * FROM prob_on_age");
$nr = mysql_num_rows($sql); 
if (isset($_GET['pn'])) {
    $pn = preg_replace('#[^0-9]#i', '', $_GET['pn']); 
} else { 
    $pn = 1;
} 

$itemsPerPage = 2; 

$lastPage = ceil($nr / $itemsPerPage);

if ($pn < 1) {
    $pn = 1; 
} else if ($pn > $lastPage) { 
    $pn = $lastPage; 
} 

$centerPages = "";
$sub1 = $pn - 1;
$sub2 = $pn - 2;
$add1 = $pn + 1;
$add2 = $pn + 2;
if ($pn == 1) {
    $centerPages .= '&nbsp; <span class="pagNumActive">' . $pn . '</span> &nbsp;';
    $centerPages .= '&nbsp; <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> &nbsp;';
} else if ($pn == $lastPage) {
    $centerPages .= '&nbsp; <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> &nbsp;';
    $centerPages .= '&nbsp; <span class="pagNumActive">' . $pn . '</span> &nbsp;';
} else if ($pn > 2 && $pn < ($lastPage - 1)) {
    $centerPages .= '&nbsp; <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub2 . '">' . $sub2 . '</a> &nbsp;';
    $centerPages .= '&nbsp; <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> &nbsp;';
    $centerPages .= '&nbsp; <span class="pagNumActive">' . $pn . '</span> &nbsp;';
    $centerPages .= '&nbsp; <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> &nbsp;';
    $centerPages .= '&nbsp; <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add2 . '">' . $add2 . '</a> &nbsp;';
} else if ($pn > 1 && $pn < $lastPage) {
    $centerPages .= '&nbsp; <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> &nbsp;';
    $centerPages .= '&nbsp; <span class="pagNumActive">' . $pn . '</span> &nbsp;';
    $centerPages .= '&nbsp; <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> &nbsp;';
}

$limit = 'LIMIT ' .($pn - 1) * $itemsPerPage .',' .$itemsPerPage; 

$sql2 = mysql_query("SELECT * FROM prob_on_age $limit") or die('error'); 
//$total=mysql_num_rows($sql2) ;
$i=0;
$outputList = '';
while($row = mysql_fetch_array($sql2)){ 

   $Question[]=$row['prob_Question'];
$optA[]=$row['prob_OptionA'];
$optB[]=$row['prob_OptionB'];
$optC[]=$row['prob_OptionC'];
$optD[]=$row['prob_OptionD'];
$ans[]=$row['prob_Answer'];
$Qid[$i]=$row['prob_Qid'];

    $ans[$i]=$row['prob_Answer'];
    $r=$i+1;

    $outputList .= '<table><tr>
              <td> '.$r.' . '.$Question[$i].'</td>
            </tr>
            <tr>  <td><input type="hidden" name="'.$Qid[$i].'" id="'.$Qid[$i].'" value="'.$Qid[$i].'" /></td>
            </tr>
              <tr>

              <td><input type="radio"  name=" '.$Qid[$i].'" id="'.$Qid[$i].'"  value="'.$optA[$i].'" $outputList .= ($optA[$i] == $_POST[$Qid][$i]) ? ' checked="checked"' : '';/> 
                '.$optA[$i].'</td></tr>
                <tr> <td><input type="radio" name=" '.$Qid[$i].'" id="'.$Qid[$i].'" value="'.$optB[$i].'" $outputList .= ($optB[$i] == $_POST[$Qid][$i]) ? ' checked="checked"' : '';/>
                '.$optB[$i].'</td></tr>
             <tr> <td><input type="radio" name=" '.$Qid[$i].'"  id="'.$Qid[$i].'" value="'.$optC[$i].'"  $outputList .= ($optC[$i] == $_POST[$Qid][$i]) ? ' checked="checked"' : '';/>
               '.$optC[$i].'</td></tr>
            <tr>  <td><input type="radio" name=" '.$Qid[$i].'" id="'.$Qid[$i].'"  value="'.$optD[$i].'"  $outputList .= ($optD[$i] == $_POST[$Qid][$i]) ? ' checked="checked"' : '';    />
            '.$optD[$i].'</td></tr>

            <tr>  <td><input type="hidden" name="'.$ans[$i].'" id="'.$Qid[$i].'"  value="'.$ans[$i].'" /></td>
            </tr></table>';

$i++;
}

$count=count($Qid);

$paginationDisplay = ""; 
if ($lastPage != "1"){

    $paginationDisplay .= 'Page <strong>' . $pn . '</strong> of ' . $lastPage. '&nbsp;  &nbsp;  &nbsp; ';

    if ($pn != 1) {
        $previous = $pn - 1;

        $paginationDisplay .=  '&nbsp;  <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $previous . '"> Back</a> ';
    } 

    $paginationDisplay .= '<span class="paginationNumbers">' . $centerPages . '</span>';

    if ($pn != $lastPage) {
        $nextPage = $pn + 1;

        $paginationDisplay .=  '&nbsp;  <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $nextPage . '">Next</a> ';
    } 
}

?>
<html>
<head>
<title>online QiuZ</title>
<style type="text/css">
<!--
.pagNumActive {
    color: #000;
    border:#060 1px solid; background-color: #D2FFD2; padding-left:3px; padding-right:3px;
}
.paginationNumbers a:link {
    color: #000;
    text-decoration: none;
    border:#999 1px solid; background-color:#F0F0F0; padding-left:3px; padding-right:3px;
}
.paginationNumbers a:visited {
    color: #000;
    text-decoration: none;
    border:#999 1px solid; background-color:#F0F0F0; padding-left:3px; padding-right:3px;
}
.paginationNumbers a:hover {
    color: #000;
    text-decoration: none;
    border:#060 1px solid; background-color: #D2FFD2; padding-left:3px; padding-right:3px;
}
.paginationNumbers a:active {
    color: #000;
    text-decoration: none;
    border:#999 1px solid; background-color:#F0F0F0; padding-left:3px; padding-right:3px;
}
-->
</style>  
</head>
<body>
   <div style="margin-left:64px; margin-right:64px;">
     <h2>Problem On Age</h2>
   </div> 
   <!--   <div style="margin-left:58px; margin-right:58px; padding:6px; background-color:#FFF; border:#999 1px solid;"><?php //echo $paginationDisplay; ?></div>-->
      <div style="margin-left:64px; margin-right:64px;">
      <form name="prob_age" id="prob_age" method="post" action="result-age.php" >
      <?php print "$outputList"; ?>

      <input type="submit" name="submit" id="submit" value="submit">

      </form>
      </div>
    <div style="margin-left:58px; margin-right:58px; padding:6px; background-color:#FFF; border:#999 1px solid;"><?php echo $paginationDisplay; ?></div>  
</body>
</html>
4

2 に答える 2

0

未定義のオフセットを避けるために、配列変数の条件を確認してください

if(is_array($your_varible)){
echo $your_varible[$key];
}

于 2013-08-12T12:13:30.417 に答える
0

未定義のオフセット エラーを回避するには、設定されていない可能性のある配列キーごとに、使用する前に値が設定されているかどうかを確認する必要があります。

if( isset($array[$key]) )

$array[$key] が定義されていない場合は false を返します。

これをインラインにする必要がある場合は、インラインを使用できます

$string = '<someHtml>' . (isset($array[$key]) ? $array[$key] : '') . '</someHtml>';

あなたのコードで何かを見逃しているかもしれませんが、while ループの先頭で配列変数を設定し、とにかく while ループ内でそれらを使用する理由がわかりません。while ループの外側に配列変数が必要ですか?

また、ページのさらに下にエコーするためだけに、大量の HTML を PHP 変数に格納することも避けます。ループ中に適切な場所に HTML を出力するだけのほうがよいでしょう。

... Some HTML 
<?php
while( $someLogicIsTue )
{
    ?>
    ... Some HTML
    <someHTML><?php echo $someVal; ?></someHtml>
    .... Some Html
    <?php
}
?>
于 2013-08-12T11:47:09.613 に答える