2017-07-15 15 views
0

私はhttp://www.sqlquiz.com/のようなクイズシステムを作成していますが、結果ページに問題があります。 私は4ページデータベースレコードを1つ1つ別のページに転送する

のindex.php ---->私が使用welcomePage varible nは、クエリ文字列で

のindex.php

<p><a href="quizmain.php?n=1">Start SQL Quiz</a></p> 

2.quizmain.php-を作成しました----------->このページには質問とそのオプションが表示され、 の質問ごとに回答が得られたら、スコアが計算され、カウンタが1ずつインクリメントされるたびにprocess.phpページに移動します10番目の質問に達すると、最終結果ページが表示されます。

quizmain.php

<?php 
    session_start(); 
    require_once("connection.php"); 
    extract($_REQUEST); 

    $number = (int) $_GET['n']; //starting value 1 
    echo $number; 
    $n1=rand(1,100); 

    $_SESSION['RQuestionNumber']=$n1; 

    $q=mysql_query("select * from quiz WHERE qno = '".$n1."'"); 

    $a=mysql_fetch_array($q); 


    echo $a['qno']; 
    echo $a['ans']; 

    ?> 




<body> 
    <table> 
    <tr> 
     <td width="757" height="390"><div align="center"> 


      <form method="post" action="process1.php"> 

       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="radio" name="question" value="a" /> 
       <?php echo $a[2]?></label> 
      </p> 
     <p><br /> 
       <label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="radio" name="question" value="b" /> 
       <?php echo $a[3]?></label> 
      </p> 
     <p><br /> 
       <label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="radio" name="question" value="c" /> 
       <?php echo $a[4]?></label> 
      </p> 
     <p><br /> 
       <label> </label> 
       <label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="radio" name="question" value="d" /> 
       <?php echo $a[5]?></label> 
      </p> 

     <p>&nbsp; </p> 
     <p> 
      <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <input type="submit" value="Submit" name="Submit" /> 
      <input type="hidden" name="number" value="<?php echo $number; ?>" /> 
      </form> 
      </label> 
      <br /> 
      <br /> 
      <br /> 
     </p></td> 
    </tr> 
    </table> 
</body> 
</html> 

process.php

<?php 
    session_start(); 
    require_once('connection.php'); 
    extract($_REQUEST); 
     //Check to see if score is set_error_handler 
     if(!isset($_SESSION['score'])){ 
      $_SESSION['score'] = 0; 
     } 

     if($_POST) 
     { 
      $number = $_REQUEST['number']; //value of number is 1 initially 
      $selected_choice = $_REQUEST['question']; 
      $next = $number+1; // 

     $total=10; 
     $_SESSION['RQuestionNumber']; 


     $q = mysql_query("SELECT ans FROM quiz WHERE qno = '".$_SESSION['RQuestionNumber']."'"); 
     $result=mysql_fetch_array($q); 

     //$store=array(); 



      //Compare 
      if($result[0][0] == $selected_choice){ 
       //Answer is correct 
       $_SESSION['score']++; 
      } 


      //Check if last question 
      if($number == $total){ 
       header("location: resultTable.php"); 
       exit(); 
      } else { 
       header("location: quizmain.php?n=".$next); //now the value of n is 2 
      } 
     } 
     ?> 

resultTable.php

今このページでは私が表示されるすべての質問に印刷したいですクイズ中に(同じ質問のセット)m arked答えと正しいans 私はセッション変数を使用しようとしましたが、動作しません。

<?php session_start(); ?> 
      <p>Final Score: <?php echo $_SESSION['score']; ?></p> 

<?php session_destroy(); ?> 
+0

ライン '$ _SESSION [ 'RQuestionNumber']を破壊する必要があるデータを削除するにはss.php'は間違っています - 値は設定されていません - それは '$ _SESSION ['RQuestionNumber'] = $ number;' – RamRaider

答えて

0

セッションの値は毎回変更されますので、最後に最後のクエストIDを取得します。すべての質問IDが必要な場合は、配列を使用してください。これを試してみてください:

quizmain.php

<?php 
    session_start(); 
    require_once("connection.php"); 
    extract($_REQUEST); 

    $number = (int) $_GET['n']; //starting value 1 
    echo $number; 
    $n1=rand(1,100); 

    $_SESSION['RQuestionNumber'][]=$n1; 

    $q=mysql_query("select * from quiz WHERE qno = '".$n1."'"); 

    $a=mysql_fetch_array($q); 


    echo $a['qno']; 
    echo $a['ans']; 

    ?> 




<body> 
    <table> 
    <tr> 
     <td width="757" height="390"><div align="center"> 


      <form method="post" action="process1.php"> 

       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="radio" name="question" value="a" /> 
       <?php echo $a[2]?></label> 
      </p> 
     <p><br /> 
       <label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="radio" name="question" value="b" /> 
       <?php echo $a[3]?></label> 
      </p> 
     <p><br /> 
       <label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="radio" name="question" value="c" /> 
       <?php echo $a[4]?></label> 
      </p> 
     <p><br /> 
       <label> </label> 
       <label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="radio" name="question" value="d" /> 
       <?php echo $a[5]?></label> 
      </p> 

     <p>&nbsp; </p> 
     <p> 
      <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <input type="submit" value="Submit" name="Submit" /> 
      <input type="hidden" name="number" value="<?php echo $number; ?>" /> 
      </form> 
      </label> 
      <br /> 
      <br /> 
      <br /> 
     </p></td> 
    </tr> 
    </table> 
</body> 
</html> 

process.php

<?php 
    session_start(); 
    require_once('connection.php'); 
    extract($_REQUEST); 
     //Check to see if score is set_error_handler 
     if(!isset($_SESSION['score'])){ 
      $_SESSION['score'] = 0; 
     } 

     if($_POST) 
     { 
      $number = $_REQUEST['number']; //value of number is 1 initially 
      $selected_choice = $_REQUEST['question']; 
      $next = $number+1; // 

     $total=10; 
     $last_que = $_SESSION['RQuestionNumber'][count($_SESSION['RQuestionNumber'])-1]; 
     // $_SESSION['RQuestionNumber']; 


     $q = mysql_query("SELECT ans FROM quiz WHERE qno = '".$last_que."'"); 
     $result=mysql_fetch_array($q); 

     //$store=array(); 



      //Compare 
      if($result[0][0] == $selected_choice){ 
       //Answer is correct 
       $_SESSION['score']++; 
      } 


      //Check if last question 
      if($number == $total){ 
       header("location: resultTable.php"); 
       exit(); 
      } else { 
       header("location: quizmain.php?n=".$next); //now the value of n is 2 
      } 
     } 
     ?> 

resultTable.php

<?php session_start(); ?> 
      <p>Final Score: <?php echo $_SESSION['score']; ?></p> 
      <?php 
      var_dump($_SESSION['RQuestionNumber']); //You will get all question number here 
      ?> 

<?php session_destroy(); ?> 
0

あなたがCA nは配列に配列を格納するので、process.phpを実行するたびに、質問番号と答えが返された配列をresultTable.phpに追加して、dbから10個の質問を選択し、指定された回答と比較することができます。

process.phpに追加します。

if(!isset($_SESSION['answers'])) { 
    $answers = new array(); 
} else { 
    $answers = $_SESSION['answers']; 
} 

$answers[] = array($_SESSION['RQuestionNumber'], $selected_choice); 

$_SESSION['answers'] = $answers; 

がそれではこのコードがないことは質問し、ユーザー与えられた答えを格納するための配列を作成し、セッションに保存し、あなたがresultTable上のループこの配列をすることができますこの方法をクイズに関するすべての質問を表示します。

PS:これは非常に基本的なコードです。クイズゲームで使用するためには、たくさんのことが必要です。配列は以前から設定されていない場合は、

+0

sir私は質問を得ます。数字とユーザーはすべての質問に対して答えを出しましたが、データベースからこの情報を使用して質問とその正しい選択を得る方法 –

0

あなたはセッションのその
単純な構文のためにセッションを使用することができます実行し確認する必要があります:
session_start(); $_SESSION['score'] = $data; 今、あなたはちょうどこのようにセッションを開始することにより、別のページであなたの$データを使用することができますproce `で`; session_start(); echo $_SESSION['score'];


は、セッション

session_destroy(); 
関連する問題