2016-06-11 6 views
-1

私はこのクイズアプリを使って、codeigniterフレームワークを使用していますが、正しい答えに対して選択した答えをチェックするのに問題があります。質問は、データベースから移入され、データベースは、以下の通りです:pHPのクイズで正解と選択された回答を確認

id | questions | opt1 | opt2 | opt3 | opt4 | correctAns 

してください。この構造を与える最善の方法を私はクイズの最後に候補者を獲得するために、再び正しい答えを確認するために取得することができますし、また、彼らが正しいと間違っている質問を表示します。私Questions_modelに

public function displayQuestions() 
{ 
    $this->load->model('questions_model'); 

    $classLevel = $this->input->post('class_level'); 
    $subject = $this->input->post('subject'); 

    $result = $this->questions_model->selectQuestions($classLevel, $subject); 

    if ($result == false) { 
     redirect('users/home'); 
    } 

    $data['questions'] = $result; 

    // $this->load->view('layouts/header'); 
    $this->load->view('users/questions', $data); 
    // $this->load->view('layouts/sidebar'); 
    // $this->load->view('layouts/footer'); 
} 

A selectQuestions():

public function selectQuestions($classLevel, $subject) 
{ 
    $query = $this->db 
        ->where('class_level', $classLevel) 
        ->where('subj_code', $subject) 
        ->get('questions'); 

    if ($query->num_rows() > 0) { 
     return $query->result(); 
    } 

    return false; 
} 

そして、これは私の見解では、それを表示しています方法です: は、私は私の質問のコントローラでdisplayQuestionsを()持って

<div id="questions"> 
<?php 
    // declare counter 
    $i = 1; 

    // array to hold correct answer 
    $correctAns = []; 

?> 
<form method="POST" action="result/check"> 
    <fieldset> 
     <legend> 
      <h2>Answer the following questions</h2> 
     </legend> 
     <ol class="question"> 
      <?php foreach ($questions as $question): ?> 
       <?php if ($i <= 5): ?> 
        <li><?php echo $question->ques; ?> </li> 
        <ol type="A"> 
         <li><input type="radio" name="option" value="<?php echo $question->ansOpt1 ?>"><?php echo $question->ansOpt1 ?></li> 
         <li><input type="radio" name="option" value="<?php echo $question->ansOpt2 ?>"><?php echo $question->ansOpt2 ?></li> 
         <li><input type="radio" name="option" value="<?php echo $question->ansOpt3 ?>"><?php echo $question->ansOpt3 ?></li> 
         <li><input type="radio" name="option" value="<?php echo $question->ansOpt4 ?>"><?php echo $question->ansOpt4 ?></li> 
        </ol> 
       <?php endif ?> 

       <!-- increase $i --> 
       <?php $i++; ?> 
      <?php endforeach ?> 
     </ol> 
     <input type="hidden" name="correct_ans"> 
    </fieldset> 
</form> 
</div> 

答えて

0

実際に正解をチェックする機能はありません。フォームの検証ルールでコールバックを使用する必要があります。お使いのコントローラで

CodeIgniter Form Validation Callbacks

private function verify_answer($q, $a) { 
    $sql = "SELECT id FROM table WHERE id = ? AND correctAns = ?"; 
    $query = $this->db->query($sql, array($q, $a); 
    if ($query->num_rows() > 0) { 
     return TRUE; 
    } else { 
     return FALSE; 
} 

あなたは、あなたがどうかに基づいて出力を処理する方法に応じて、正しいおよび/または不正解の配列を作成する必要があります真または偽の値が返されます。たぶんあなたはキーとして質問番号を持つ連想配列としてそれらを保存し、それとクイズの最後をループします。

これは決して最も効率的な方法ではありません。ちょうど "方法"。

0

ハイパーテキスト転送プロトコル(HTTP)は、WebブラウザとWebサイトとの間の、平文のデータを使用する通信プロトコルです。 1つを選択: 真正い 偽

関連する問題