代码如下:<?php 
$query0=mysql_query("select * from tb_kt where kt_lb='$kt_lbes' and kt_lx='0' and kt_small_lb='$kt_small_lb'");
$x=1;
$fen0=0; 
while($myrow0=mysql_fetch_array($query0)){
?>
 <tr>
    <td width="443" height="20" bgcolor="#FFFFFF" class="STYLE1">&nbsp;&nbsp;<?php echo $x.".".$myrow0["kt_nr"]?> </td>
<td bgcolor="#FFFFFF" class="STYLE1"><span class="STYLE4"><?php echo $myrow0[kt_fs];?>分</span></td>
</tr>
<?php 
    $array0=explode("*",$myrow0["kt_daan"]);
             if($_POST[Submit]!=""){
                for($a=0;$a<count($array0);$a++){
                    if($array0[$a]!=""){
                       if($array0[$a]==$_POST[$myrow0[kt_id]]) {
                       $str0=$_POST[$myrow0[kt_id]];               
       }
                    }
                }
             }
    for($a=0;$a<count($array0);$a++){
      if($array0[$a]!=""){
?>
  <tr>
    <td height="20" bgcolor="#FFFFFF" class="STYLE1">&nbsp;&nbsp;
    <input type="radio" name="<?php echo $myrow0[kt_id];?>" value="<?php echo $array0[$a];?>"><?php echo $array0[$a];?></td>
    <td bgcolor="#FFFFFF" class="STYLE1"> &nbsp; <?php
if($_POST[$myrow0[kt_id]]==true){
        
      if($myrow0["kt_zqdaan"]==$str0){
        echo "您输入的答案&nbsp;";
        echo "<font color='#FF0000'>".substr($str0,0,1)."</font>";
echo "&nbsp;正确&nbsp;&nbsp;分数:";
echo "<font color='#FF0000'>".$myrow0[kt_fs]."</font>"; 
          $fen0+=$myrow0["kt_fs"];
         }else{
         echo "您输入的答案&nbsp;";
echo "<font color='#FF0000'>".substr($str0,0,1)."</font>";
echo "&nbsp;错误&nbsp;&nbsp;";
         echo "正确答案:&nbsp;<font color='#FF0000'>".substr($myrow0[kt_zqdaan],0,1)."</font>" ;
      }}
   ?></td>
<?php
 }
 }
?>
<?php 
$x++;
}
  ?>数据库表如下:
浏览器运行如下: 有几个问题:
1.选A的时候就会显示该选项,但有些题A是正确答案,却还是显示错误
2.选其他选项如:BCD,就没有显示出来该选项
这个问题一直解决不了,新手,望大神路过可以帮下,谢~

解决方案 »

  1.   

    选项在数据库用json格式存,比如{"A":"开放的","B":"封闭的","C":"需购买的","D":"完全不可见的"},答案就存A,取的时候json转数组,单选框的value=键
      

  2.   

    你代码没变色没什么的,看不懂。用你的这段json来处理。
    假定1条数据是一题,包含题目和正确答案,和分数。DB操作就自己写了,我这里只是写一下逻辑。
    id title  answer  correct   ID,题目,答案,正确答案。
    1  题目   json       A           
    2  题目  json        B
    //form.php
            $data = DB->select();  //取得这套题的所有的数据。数据库操作就不写了。
            echo '<form method="post" action="post.php"><table>';
            foreach($data as $key=>$vo){
                echo '<tr><td>'. $vo['title'] .'</td></tr>';
                $answer = json_decode($vo['answer'],true);
                foreach($answer as $k=>$v){
                    echo '<tr><td style="padding-left:20px;"><input type="radio" name="title_'.$vo['id'].'" value="'. $k .'" />'. $k.'. '.$v.'</td></tr>';
                }
            }
            echo '<tr><td><input type="submit" value="提交"></td></tr></table></form>';//post.php
            $data = DB->select(); 
            $post= $_POST;
            $title_num = count($data);
            $user_answer_num = count($post);
            echo '<table>';
            foreach($data as $key=>$vo){
                echo '<tr><td colspan="2">共'. $title_num .'题,回答了'.$user_answer_num.'题</td></tr>';
                echo '<tr><td colspan="2">'. $vo['title'] .'</td></tr>';
                $answer = json_decode($vo['answer'],true);
                $correct = strtolower($vo['correct']);  //正确答案
                $user_answer = strtolower($post['title_'.$vo['id']]);  //这道题回答的答案
                $str = '正确答案是'.$vo['correct'].',您回答的是'.$post['title_'.$vo['id']].','.(($correct==$user_answer) ? '正确,加2分' : '错误');
                foreach($answer as $k=>$v){
                    $checked = ($user_answer == strtolower($k) ) ? 'checked' : '';
                    echo '<tr><td style="padding-left:20px;"><input type="radio" name="title_'.$vo['id'].'" value="'. $k .'"  ' .$checked. ' disabled/>'. $k.'. '.$v.'</td>';
                    echo '<td>'.$str.'</td></tr>';
                }
            }
            echo '</table>';