2013-10-21 4 views
-1

나는 퀴즈를 만들기 위해 노력하고 있습니다. 제대로 작동하지만 올바른 결과를주지 못합니다. 예를 들어 answer answer 1에 대한 올바른 답은 변수 rans가 1 씩 증가해야하지만 2 번째 질문을 제출하면 증가하므로 10 번째 현재 대답의 값이 전체 정답에 포함되지 않습니다.올바른 퀴즈 결과를 보여주는 방법

  <?php 
     require_once("global.inc.php");?> 
    <form name="test" method="post" action="test.php"> 
    <?php 
    $qid=(!isset($_POST['q_id'])) ? 0 : $_POST['q_id']; 
    $rans=(!isset($_POST["rans"])) ? 0 : $_POST["rans"]; 
    $totalquestion=(!isset($_POST["totalquestion"])) ? 
      0 : $_POST["totalquestion"]; 
    echo $rans; 

    if(isset($_POST["submit"])) 
    { 
    echo "<table align='center' style='border:1px solid silver' width='80%' 
    bgcolor='green'>"; 
    echo "<tr><td>Total Question Attempt</td><td>",$totalquestion,"</td><tr>"; 
    echo "<tr><td>Correct Answer</td><td>",$rans,"</td></tr>"; 
    echo "<tr><td>Wrong Answer</td><td>",$totalquestion-$rans,"</td></tr>"; 
    echo "<tr><td>Correct Answer Percentage</td> <td>",$rans/$totalquestion*100,"%</td></tr>"; 
    echo "<tr><td>Wrong Answer Percenntage</td><td>",($totalquestion-$rans)/$totalquestion*100,"%</td></tr>"; 
    echo "</table><br><br>"; 
    $query="select * from questions,answers 
      where questions.q_id=answers.q_id"; 

    echo "<table cellpadding='5px' align='center' style='border:1px 
    solid silver'>"; 
    echo "<tr><th colspan='4' id='heading'>Online Quiz Test 
    Question</td></tr>"; 
    $result=mysql_query($query); 
    while ($row = mysql_fetch_array($result)) { 
    echo "<tr><td>",$row['q_id'],"</td><td colspan='2'>",$row['question'],"</td></tr><tr><td></td>"; 
    echo "<td colspan='2'>A. ",$row['opt1'],"</td>"; 
    echo "<td colspan='2'>B. ",$row['opt2'],"</td></tr>"; 
    echo "<tr><td></td><td colspan='2'>C. ",$row['opt3'],"</td>"; 
    echo "<td colspan='1'>D. ",$row['opt4'],"</td></tr>"; 
    echo "<tr><td colspan='4' align='right' 
    style='color:orange'>Correct option is ",strtoupper($row['correct_ans']),"</td></tr>"; 
    echo "<tr><td colspan='4' align='right' 
    style='color:orange'><hr></td></tr>"; 

    } 
    echo "</table>"; 
    echo "<p align='right'><a href='#' onclick='window.print()'>Print</a></p>"; 
    echo "<div style='visibility:hidden;display:none'>"; 

    } 

    ?> 
     <form name="test" method="post" action="test.php"> 
    <?php 
     if(!isset($a)) 
     { 
      $a=0; 

     //unset($_SESSION['score']); 
     } 


     if(isset($_POST['next'])) { 
      $a=$_POST['a']; 
      $totalquestion=$_POST['totalquestion']; 
      if(isset($_POST['rans'])) 
      $rans=$_POST['rans'];  

      } 

     $sql1="SELECT * FROM questions,answers 
        where questions.q_id=answers.q_id limit 1 offset $a"; 
     $result=mysql_query($sql1); 
     $num = mysql_num_rows($result); 
     echo "<form method='post' action=''>"; 


     if($result) { 
     while ($row = mysql_fetch_array($result)) 

     { 

     $qid = $row["q_id"]; 

     $questions = $row["question"]; 

     $opt1 = $row["opt1"]; 

     $opt2 = $row["opt2"]; 

     $opt3 = $row["opt3"]; 

     $opt4 = $row["opt4"]; 

     $correct = $row["correct_ans"]; 
     echo $rans; 
    ?> 


     <p >Q.<?php echo $qid ?> <?php echo $questions;?></p> 
<input type="radio" value="<?php echo $opt1;?>" name="choice"/><?php echo $opt1;?> <br/> 
<input type="radio" value="<?php echo $opt2;?>" name="choice"/><?php echo $opt2;?><br/> 
<input type="radio" value="<?php echo $opt3;?>" name="choice"/><?php echo $opt3;?><br/> 
<input type="radio" value="<?php echo $opt4;?>" name="choice"/><?php echo $opt4;?><br/> 
<input type="hidden" value="$answer" name="rightanswer[$qid]"/> 


    <?php 

     $b=$a+1; 


     $sql2="SELECT * FROM questions where q_id=$qid-1 "; 
     $result2=mysql_query($sql2); 
     while ($row2 = mysql_fetch_array($result2)) { 
     $ans=$row2['correct_ans']; 

     }  


     if(isset($_POST['choice'])) { 
     if($ans==$_POST['choice']){ 
     //echo "<input type='hidden' name='rans' value='".($rans+1). "'>"; 
     $rans=$rans+1; 
     } 
     else { 
     //echo "<input type='hidden' name='rans' value='" . $rans . "'>"; 
     $rans=$rans; 
     } 
     } 

     //$query="select correct_ans from questions where q_id='$qid'"; 
     //$result=mysql_query($query); 
     //while ($row = mysql_fetch_array($result)) { 
     //echo $row['correct_ans']; 

    echo "<input type='hidden' value='$b' name='a'>"; 
    echo "<input type='hidden' value='count' name='count'>"; 
    echo "<input type='hidden' name=qid value='$qid'>"; 

    echo "<input type='hidden' name='totalquestion' value='".$totalquestion+1)."'>"; 

     echo "<input type='hidden' name='rans' value='" . $rans . "'>"; 

     echo "<input type='submit' name='next' value='next'> "; 

     echo "<input type='submit' name='submit' value='submit'><br><br>"; 

    echo "</form>"; 
    } 

    } 
    ?> 
+1

$ Mysql_ *은 보안 문제로 인해 사용되지 않습니다. 사용자 mysqli 또는 pdo는 앞으로도 준비 문구를 사용하십시오! – Snowburnt

+0

어떻게해야할까요? $ rans = $ rans; – Snowburnt

+0

$ rans = $ rans는 잘못된 답변에 이전의 rans (정답) 값을 할당하는 것입니다. @ Snowburnt – user2745286

답변

0

좋습니다. 코드가 엉망입니다.

당신은 절대적으로 아무것도하지하지 않는 $rans=$rans; 같은 임의 tautologies을 (가. 답변자가 클릭 "다음"두 번 $totalquestion를 할당하는 경우. 확실히 좋은 하드를 살펴보고이 페이지를 리팩토링.

그러나 대답 귀하가 결과 나 다음 질문을 제시 한 후에 코드 하단에 올바른 답을 입력했는지 확인하고 있기 때문에 가능합니다.

스크립트 기능을 활용했습니다. 어떤 함수도 건드리지 않고 PHP를 위에서 아래로 평가할 것입니다.

나는 모든 것을 옮길 수있다. "next"에 대한 핸들러를 기본 변수 할당 아래의 맨 위로 이동시킨 다음, 바로 아래에 올바른 대답을 넣은 다음 다음 질문의 프레젠테이션을 한 다음 "submit" 매니저.

다른 단위를 가독성과 재사용을위한 함수로 분해 할 수도 있습니다. 예를 들어, 지정된 질문을 출력하는 기능을 만들고, 정답으로 입력 한 사용자의 유효성을 검사하기 위해 다른 질문을 만드십시오.

+0

Snowburnt에게 감사드립니다. 제안에 따라 코드 세그먼트를 재정렬하고 올바르게 작동합니다. @Snowburnt – user2745286

관련 문제