【问题标题】:how to keep selected radio button values to next page in php?如何在php中将选定的单选按钮值保留到下一页?
【发布时间】:2023-03-17 16:55:01
【问题描述】:

我正在做一个在线测验应用程序,当我单击下一个按钮时,我需要将所有选定的单选按钮值保留到下一页,因为我正在使用分页。在下面的代码中,当我移动到下一页时,它显示未定义的偏移错误.我在这一行 />'.$optA[$i].' 中遇到了另一个语法错误,例如意外检查。 我需要解决这些问题,请帮助任何人,在此先感谢

 <?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].'" <?php echo '.$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].'" <?php echo '.$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].'"  <?php echo '.$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].'"  <?php echo '.$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> ';
        } 
    }

    ?>

<?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].'" <?php echo '.$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].'" <?php echo '.$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].'"  <?php echo '.$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].'"  <?php echo '.$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>
    </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"; ?>

          <div style="margin-left:58px; margin-right:58px; padding:6px; background-color:#FFF; border:#999 1px solid;"><?php echo $paginationDisplay; ?></div>
          <input type="submit" name="submit" id="submit" value="submit">

          </form>
          </div>

    </body>
    </html>

【问题讨论】:

  • cookie 是你想要的

标签: php javascript jquery


【解决方案1】:

嗯,你可以用PHP Sessions 和/或Cookies 来做(你的情况几乎相同),但如果在测验过程中出现任何问题......你将失去所有的进步并且用户必须重新开始。

如果测验很短,你可以这样做,但如果它是 >= 中间甚至长的...我建议使用 $_POSTForms 而不是分页链接。当然,同时保存进度。

有了这个,如果您想预先检查单选按钮、输入字段或任何东西...只需在下次打开该页面时调用正确的变量(也可能是另一天,因为这些值存储在您的服务器而不是用户机器。)
祝你好运

【讨论】:

  • 对不起,我没能找到你,我将每页使用 20 个问题
  • 使用会话或 cookie,您依赖于用户计算机,让他有机会继续已经开始的测验。如果您使用Form &amp; post 并将数据保存在每个页面中,则用户可以随时在任何计算机上继续。当然,您可以使用PHP var 预加载包括单选按钮在内的信息。
  • 我听不懂,请简单解释一下
  • 你有什么不明白的?你上面写的PHP 代码是你的还是从某个地方复制的?
【解决方案2】:

我检查了代码,发现你的变量 $output 列表数据不正确。替换为:

您正在使用 if 条件在 php 变量的字符串中回显:

<?php echo '.$optB[$i].' == $_POST[''.$Qid[$i].''] ? ' checked="checked"' : '';

您在 $output 变量中使用的上述行不正确。您需要将此行更改如下:

$output .= ....//other code
$output .= ($optB[$i] == $_POST[$Qid[$i]]) ? ' checked="checked"' : '';
$output .= ......

如上替换$output变量字符串中的每个&lt;?php echo

已编辑:

检查你下面的代码:

$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].'" 

<?php echo '.$optA[$i].' == $_POST[''.$Qid[$i].''] ? ' checked="checked"' : ''; ?>

//这里你在 php 标签内再次启动 php 标签。所以删除 php和 回声标签。并像我提到的那样使用 将此用作 $outputList .= ($optA[$i] == $_POST[$Qid[$i]]) ? ' 已检查 =“已检查”' : ''; 并在它之前关闭上面的刺。并为其他人做同样的事情。

/> 
                '.$optA[$i].'</td></tr>
                <tr> <td><input type="radio" name=" '.$Qid[$i].'" id="'.$Qid[$i].'" value="'.$optB[$i].'" <?php echo '.$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].'"  <?php echo '.$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].'"  <?php echo '.$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>';

注意:如果您没有得到我所说的,请告诉我,我会的 发布修改后的代码。并且会修改更多的你。

【讨论】:

  • 心:对不起……我没听懂你,请简单解释一下
  • '.$optA[$i].'我像上面一样编辑,再次出现语法错误未定义检查。如果有错请再次解释
  • @user1877928 不使用它。 &lt;input type="radio" name=" '.$Qid[$i].'" id="'.$Qid[$i].'" value="'.$optA[$i].'"'; //这里关闭字符串然后$output .= ($optA[$i] == $_POST[$Qid[$i]]) ? ' checked="checked"' : ''; //然后再次关闭字符串$output .= '/&gt; '.$optA[$i].'...
猜你喜欢
  • 2013-02-03
  • 2013-08-23
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多