2015-11-13 1 views
0

Первоначально, когда мой просмотр загружается, он должен отображать первый вопрос и ответ. Когда вы нажимаете следующую кнопку, мне нужно передать следующее значение модели и получить второй вопрос и ответить, и если следующая кнопка снова будет нажата, она должна отобразить третий вопрос и ответ. Следующая кнопка должна быть нажата, пока не появится последний вопрос. У меня есть следующий код:Обновить представление с разными значениями данных в Codeigniter

Модель

function getNextQuestions($quizID,$qusNo) { 

     $check = "SELECT * FROM question WHERE quiz_id = '$quizID' AND id='$qusNo'"; 
     $query = $this->db->query($check); 

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

Контроллер

public function index() 
    { 
     $this->load->model('Model_questions'); 

     $quizId = $_POST['quizID_click']; 

     $data['questions'] = $this->Model_questions->getNextQuestions($quizId,"1"); 

     $this->load->view('question_view', $data); 
} 

public function displayNextQuestions() 
    { 
     $this->load->model('Model_questions'); 

     $qusId = $_POST['question_nextClick']; 

     $data['questions'] = $this->Model_questions->getNextQuestions($quizId,$qusId); 

     $this->load->view('question_view', $data); 
} 

Посмотреть

<div id="body"> 

     <?php 


      echo $questions[0]->question . "<br>" 
        . $questions[0]->choice1 . "<br>" 
        . $questions[0]->answer. "<br>"; 
       echo '<form action="/Test/index.php/question_controller/displayNextQuestions" method="POST">     
         <input type="submit" value="Next"> 
         <input type="hidden" name="question_nextClick" value="2" /> 
        </form>'; 

     ?> 

Я не сделал GE t, который мне нужен, какие изменения я должен делать. Пожалуйста, помогите мне.

+0

контроллер пытается поймать несколько значений из quizID_click - но в соответствии с вашей формой имя question_nextClick – sintakonte

ответ

0

Модель выглядит хорошо. Пересмотренный ответ на пересмотренный вопрос.

Обратите внимание, что на этот раз я включил весь контроллер и загрузил базу данных в конструкторе, а не в каждой функции. Вы всегда используете модель, поэтому следите за ней с помощью одной строки кода.

Контроллер

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Quest_controller extends CI_Controller 
{ 
    function __construct() 
    { 
    parent::__construct(); 
    $this->load->database(); 
    $this->load->model('Model_questions'); 
    } 

    public function index() 
    { 
    /* 
    Rather than declare and initialize a bunch of different variables 
    only to reassign them to a structure passed to the view we use 
    that structure (`$data`) all the way through. 
    */ 

    $data["quizId"] = $_POST['quizID_click']; 
    //since this is the first time here we set question_num = 1 
    $data['question_num'] = 1; 
    $data['questions'] = $this->model_questions->getNextQuestions($data["quizId"], 
     "1"); 
    $this->load->view('question_view', $data); 
    } 

    public function displayNextQ() 
    { 
    $data['quizId'] = $_POST['quizId']; 

    //Notice how we increment the question number. 
    //The new number gets sent to the new view 
    $data['question_num'] = $_POST['question_num'] + 1; 

    $data['questions'] = $this->model_questions 
     ->getNextQuestions($data['quizId'], $data['question_num']); 

    //if the model returns null then the quiz is done 
    if(!isset($data['questions'])) 
    { 
     $this->load->view('test_done_view'); 
    } 
    else 
    { 
     $this->load->view('question_view', $data); 
    } 
    } 
} 

Посмотреть

Обратите внимание, как мы устанавливаем значения скрытых входов. Эти значения будут возвращены в массиве $ _POST для использования displayNextQ() на следующей странице.

В случае, если вы не знаете, это <?= $quizId; ?> является сокращенным способом написать <?php echo $quizId; ?>

<div id="body"> 
    <?php 
    echo $questions[0]->question."<br>".$questions[0]->answer."<br>"; 
    ?> 
    <form action="/testApp/index.php/quest_controller/displayNextQ" method="POST">     
    <input type="hidden" name="quizId" value="<?= $quizId; ?>" /> 
    <input type="hidden" name="question_num" value="<?= $question_num; ?>" /> 
    <input type="submit" value="Next"> 
    </form> 
</div> 
+0

Я редактировал мой вопрос. какие будут изменения? –

+0

, когда '$ quizId = 1;' программа работает нормально, но когда '$ quizId = 2', она показывает ошибку: Сообщение: ** Попытка получить свойство не-объекта ** –

Смежные вопросы