2017-04-01 5 views
1

質問を1つずつ表示したいページ(exam.php)を作成しました。一度に1つの行を表示するには、次の行を次にクリックすると、PHPで表示されますか?

生徒が回答を提出した後に次のボタンをクリックすると、次の質問が表示されます。

<?php 
    if(!isset($_SESSION['qno'])) 
     $_SESSION['qno'] = 1; 
    else{ 

     if(isset($_POST['next'])) 
     { 
       $_SESSION['qno'] += 1; 
     } 

    } 


    $sql ="select * from question where question_id= ' ".$_SESSION['qno']." ' "; 
    $query=mysql_query($sql); 
    while($row = mysql_fetch_assoc($query)) 
    { 
     $question =$row['question']; 
     $op1 = $row['option1']; 
     $op2 = $row['option2']; 
     $op3 = $row['option3']; 
     $op4 = $row['option4']; 


    } 

    ?> 

これは動作しますが、このコードではquestion_idを使用してデータを表示しています。管理者がいくつかの質問を削除するとき、question_idのギャップのために機能していないという問題があります。

私はquestion_id = 1を初期化します。だから、この問題の最良の解決策は何ですか?

+0

あなたはまた、代わりにmysqli_機能の使用に切り替える必要があります。 –

答えて

0

質問IDではなく質問を選択するのにLIMITを使用できます。

select * 
from `question` 
ORDER BY `question_id` 
LIMIT $SESSION[$q_no],1; 
+0

okですが、前の質問を送信した後に次の質問を表示するにはどうすればよいですか? – brij

+0

表示されたページまたはそれを生成するコードで、$ q_noをインクリメントします。元に戻るには、それを減らしてください。 –

0

まず、各ページの現在のIDを次のページに転送する必要があります。あなたは$_SESSION["qno"]でそれをしました。

今すぐあなたのクエリを変更して、このプログラムを実行する必要があります。

$sql ="select top 1 * from question where question_id>{$_SESSION['qno']} order by question_id"; 
$query=mysql_query($sql); 
while($row = mysql_fetch_assoc($query)) 
    { 
    $_SESSION['qno']=$row["question_id"]; 
    $question =$row['question']; 
    $op1 = $row['option1']; 
    $op2 = $row['option2']; 
    $op3 = $row['option3']; 
    $op4 = $row['option4']; 
    } 
+0

ohhh!great working working thanksssss – brij

+0

正しい答えとして投票して受け入れることを忘れないでください。 –

関連する問題