2016-05-15 6 views
1

私はオンライン試験を作成しています。私のレイアウトは、一度に1つの質問を表示することです、そして、それは複数の選択肢です。複数選択の一番下にある「次へ」ボタンをクリックすると、次の質問が表示されます。ボタンをクリックして行を呼び出すMYSQL/PHP

質問と複数の選択肢は、データベースに格納されています。

次のボタンは機能しますが、別のページにリダイレクトされるという問題があります。私が望むのは、前の質問を隠し、次の質問が表示されたときにそれを表示することだけです。

これは私のコードです: デシベル

CREATE TABLE `english` (
    `E_QueID` int(11) NOT NULL, 
    `Question` text NOT NULL, 
    `A` text NOT NULL, 
    `B` text NOT NULL, 
    `C` text NOT NULL, 
    `D` text NOT NULL, 
    `E` text NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

HTML

<div class="col-sm-8 bt-query"> 
     <br> 
     <h4><left>Question 1</left>&nbsp;<right><div class="timer" data-seconds-left="20"></div></right></h4> 
     <br> 
     <?php 
      $query="SELECT * FROM english ORDER BY RAND() LIMIT 1"; 
      $result = mysqli_query($conn, $query); 

      if (!$result) { // add this check. 
        die('Invalid query: ' . mysqli_error()); 
       } 

      while ($row = mysqli_fetch_array($result)) { 
       echo $row['Question']. "<br />"; 
       echo $row['A']. "<br />"; 
       echo $row['B']. "<br />"; 
       echo $row['C']. "<br />"; 
       echo $row['D']. "<br />"; 
       echo $row['E']. "<br />"; 
       } 
     ?> 
     <br> 
     <form action="englishq.php" method="get"> 
      <input type="submit" name="next" value="Next"> 
     </form> 
    </div> 

englishq.php

<?php 
    $hostname = "localhost"; 
    $user = 'root'; 
    $password = ''; 
    $db = 'questions'; 

//databse connection 
    $conn = mysqli_connect("$hostname", "$user", "$password", "$db")or die(mysqli_error()); 
    if(isset($_GET['next'])){ 

     $query="SELECT * FROM english ORDER BY RAND() LIMIT 1"; 
     $result = mysqli_query($conn, $query); 

     if (!$result) { // add this check. 
      die('Invalid query: ' . mysqli_error()); 
     } 

     while ($row = mysqli_fetch_array($result)) { 
      echo $row['Question']. "<br />"; 
      echo $row['A']. "<br />"; 
      echo $row['B']. "<br />"; 
      echo $row['C']. "<br />"; 
      echo $row['D']. "<br />"; 
      echo $row['E']. "<br />"; 
     } 
    } 
?> 
+0

この質問はすでに数時間前に尋ねられました。私は重複を検索します – davejal

+0

あなたは両方のPHPスクリプトを組み合わせて、 'form'の' action'属性を空にすることができます。同じスクリプトにデータを戻します。あなたのコードの ''要素はどこにありますか? '

' –

+1

@davejalの中にいくつか追加してください - 私はそれが本当の "重複"ではないと思います。なぜなら、このコードはPOの最後のより一般的な質問に基づいて開発されているからです。今、彼女はより具体的な問題に遭遇しました。彼女は現在解決しようとしています。それは、いくつかの段階でアドバイスを求める段階的学習プロセスです。 –

答えて

0

フォームのアクションパラメータを空白のままにしておくと、フォームは現在のページに戻されます。次に、PHPを使用して最後に送信された質問を読み込み、次の質問を読み込んでユーザーに表示します。どの質問が提出されたかを追跡するために、隠れた入力フィールドを使用することができます。

フォームコード:

<form action="" method="post"> 
    <input type="hidden" name="question_number" value="<?php echo $mynumber; ?>" /> 
    <input type="radio" name="answer" value="A." /><?php echo $answerA; ?> <br/> 
    <input type="radio" name="answer" value="B." /><?php echo $answerB; ?> <br/> 
    <input type="radio" name="answer" value="C." /><?php echo $answerC; ?> <br/> 
    <input type="radio" name="answer" value="D." /><?php echo $answerD; ?> <br/> 
    <input type="submit" name="next" value="Next"> 
</form> 

PHPコード:

if (isset($_POST['question_number'])) 
{ 
    // Record the last answer 
    $stmt = $db->prepare("INSERT INTO user_answer_table (answer_field) VALUES (':answer')"); 
    $stmt->bindParams(':answer', $_POST['answer']); 
    $stmt->execute(); 

    // Load the next question 
    $stmt = $db->prepare("SELECT * FROM question_table WHERE question_id = :questionid"); 
    $stmt_>bindParams(':questionid',$_POST['question_number']+1); 
    $stmt->execute(); 
} 
0

チェック$_POSTは答えが含まれている場合。はいの場合は、正しいかどうかを確認します。フィードバックを与える。間違った答えで同じ質問をもう一度尋ねるかもしれないし、そうでなければ新しいランダムなidを生成するかもしれません。

同じスクリプトにデータを戻すページコンテンツの周りにフォームを配置します。

<form action="" type="post"> 

クライアントに質問IDを渡します。ループ内

<input type="hidden" name="qid" value="<?php echo $row['E_QueID';?>"> 

データテーブルの上にいくつかのラジオボタンに

<div> 
    <input type="radio" id="ansA" name="answer" value="A"> 
    <label for="ansA"><?php echo $row['A'];?></label> 
</div> 
<div> 
    <input type="radio" id="ansB" name="answer" value="B"> 
    <label for="ansB"><?php echo $row['B'];?></label> 
</div> 

を生成し、送信ボタンを追加し、formタグを閉じます。

関連する問題