php

时间:2018-07-29 22:07:34

标签: php jquery html css

我仍然是开发Web App的新手。 我已经成功地用php设计了一个在线考试Web应用程序。但是我一直在想,我如何制作一组框,以帮助向用户指示他回答的问题以及用户没有回答的问题。这些框也可以用于浏览Web应用程序上的一系列问题 A web app with eah question status

我的解释的一个简单示例是上图的圆圈部分。 我非常想知道如何使界面的一部分成为可能,然后如何使其成为所有问题的状态。 我使用以下代码查询问题的状态

     <?
$sql= "SELECT * FROM questions order by rand() LIMIT 20 ";
          $_SESSION['questions'] = array();
          $i=0;
          foreach ($db_con->query($sql) as $rows) {

    ++$i;
        $_SESSION['questions'][$i]=0;
    echo "<span  id='s". $i ."'>". $i ."</span> ";
    }?>
    <tr>    

<td coLspan=”2”>
<h3>Question <?php $qnum=$rows['quesNo'];  echo $i ?>: <label class="rchk" for="<?php echo $i ?>"> <?php echo $rows['ques']; ?> </label></h3>           </td>
</tr>
<?php                       
$sqla= "SELECT * FROM answers where quesNo='$qnum'order by rand()";
                    foreach ($db_con->query($sqla) as $rowsa) {
?>
<tr>
<td>
<input type="radio" name="<?php echo  $i ?>" id="<?php echo  $i ?>" class="rchk"  onclick='anstatus()' value="<?php  echo $rowsa['ans_id']; ?>"/> <?php  echo $rowsa['ans']; ?>
</td>
</tr>

上面的代码将为可用问题的数量生成跨度,对于每个已回答的问题,我希望该问题编号的标签将颜色更改为红色。所以我尝试下面的Jquery代码

    function  anstatus(){
   // #qcount is an hidden tag to keep the numbers of questions
    var counter = $('#qcount').val();
    j=1;
    while (j<=counter){
        if( $("input[name='"+j+"']:checked")){
          // $(this).css("color", "red");
         $('#s'+j+'').css("color", "red");

     }else {
          $('#s'+j+'').css("color", "blue");
     }

     j++;
    }
    }

尝试while循环后。我尝试了一个for循环。但是面临的问题是,当回答一个问题而不是仅回答问题时,所有标签的颜色都会改变。 请帮帮我

2 个答案:

答案 0 :(得分:0)

我的第一个想法是使用$ _SESSION数组。当用户加载测验时,设置:

$_SESSION['questions'] = array(0,0,0,0,0);

然后,当用户回答问题时,将数组中的相应元素设置为1(请记住,第一个问题是数字0,第二个问题是数字1,依此类推)。 例如,如果用户回答问题3:

$_SESSION['questions'][2] = 1;

这样,您可以使用循环和数组函数来处理数据。

答案 1 :(得分:0)

我使用以下方法解决

首先,我使用以下代码创建了span标签

<?php 
$sql= "SELECT * FROM questions order by rand() LIMIT 20 ";
$_SESSION['questions'] = array();
$i=0;
foreach ($db_con->query($sql) as $rows) {               
++$i;
$_SESSION['questions'][$i]=0;
echo "<span class='border' id='s". $i ."' syle='color:white'>". $i ."</span> ";
}

我为问题列表输入了以下代码

<tr>    
<td coLspan=”2”>
<h3>
Question <?php $qnum=$rows['quesNo'];  echo $i ?>: 
<label class="rchk" for="<?php echo $i ?>"> 
<?php echo $rows['ques']; ?> 
</label>
</h3></td>
</tr>
<?php 
$sqla= "SELECT * FROM answers where quesNo='$qnum'order by rand()";
foreach ($db_con->query($sqla) as $rowsa) {
?>
<tr>
<td>
<input type="radio" name="<?php echo  $i ?>"  d="<?php echo  $i ?>"  id="<?php echo  $i ?>" class="rchk"   value="<?php  echo $rowsa['ans_id']; ?>"/> <?php  echo $rowsa['ans']; ?>
</td>
</tr>

第三,然后添加一个外部脚本,并使用html标记将其添加到文档中。 脚本的内容如下

$(function() { 
       $(".rchk").click(function(){
       var id = $(this).attr("d");   
       if( $("input[name='"+id+"']:checked")){ 
           $('#s'+id+'').css("color", "red");
              };
          });
      });