繁体   English   中英

未定义的变量getQuestion Codeigniter

[英]Undefined variable getQuestion Codeigniter

消息:未定义的变量:getQuestion

我正在使用codeigniter创建一个多项选择测验。 我正在尝试将getQuestion从模型传递到视图,但是我收到未定义的变量错误。 视图应显示问题

更新:我设法使其正常运行,共有7个问题,由于它们随机显示,因此有时会重复出现该问题。 如何在模型中解决此问题?

同样,在回答了7个问题之后,测验也结束了。

模型:

class Quiz extends CI_Model
{
    private $questionArray = array();
    private $answerArray = array();
    private $incorrectArray = array();
    private $incorrectArray1 = array();
    private $incorrectArray2 = array();

    function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    function startQuiz()
    {
    $this->db->select('*');
        $qres = $this->db->get('questions');
        $ares = $this->db->get('answer');

        foreach ($qres->result() as $row ) {
            $this->questionArray[] = $row->question;
        }


        foreach ($ares->result() as $row) {
            $this->answerArray[] = $row->c_answer;
        }

        foreach ($ares->result() as $row) {
            $this->incorrectArray[] = $row->i_answer;

        }

            foreach ($ares->result() as $row) {
            $this->incorrectArray1[] = $row->i_answer1;

        }
            foreach ($ares->result() as $row) {
            $this->incorrectArray2[] = $row->i_answer2;

        }

            //Retrieve question in random order
            $max = count($this->questionArray);
            $questionPos = rand(0, $max - 1);

            //retrieve question
            $getQuestion = $this->questionArray[$questionPos];
            //retrieve correct answer
            $getAnswer = $this->answerArray[$questionPos];
            //retrieve incorrect answers
            $getIncorrect = $this->incorrectArray[$questionPos];
            $getIncorrect1 = $this->incorrectArray1[$questionPos];
            $getIncorrect2 = $this->incorrectArray2[$questionPos];


            //retrieve wrong answer corresponding to the Question
            $wrong = $questionPos;
            while ($wrong != $questionPos) {
                $wrong = rand(0,$max-1);
            }
            $wronganswer = $this->incorrectArray[$wrong];
            $wronganswer1 = $this->incorrectArray1[$wrong];
            $wronganswer2 = $this->incorrectArray2[$wrong];

            //Random position of answers
            $choice = rand(0,1);
            if ($choice == 0) {
            $answer1 = $getAnswer;
            $answer2 = $wronganswer;
            $answer3 = $wronganswer1;
            $answer4 = $wronganswer2;

            }
           else 
             {
            $answer1 = $wronganswer;
            $answer2 = $getAnswer;
            $answer3 = $wronganswer1;
            $answer4 = $wronganswer2;

             }
        return array('id' => $questionPos,'getQuestion' =>      $getQuestion,'answer1' => $answer1,'answer2' => $answer2,'answer3' => $answer3, 'answer4' => $answer4);





    }
}

控制器:

 class Question extends CI_Controller
 {
     function __construct()
     {
         parent::__construct();
         $this->load->model('quiz');
     }

     function start()
     { 
         $option = $this->input->get('name', false);
         $questionid = $this->input->get('id', false);

         if ($option === false) {
             $start = $this->quiz->startQuiz();
             $this->load->view('quiz_view', $start);
         } else {
             $this->load->view('quiz_view', array('name'=>$option));
         }
     }
 }

视图:

   <h5><?php echo $getQuestion ?></h5>

在您的代码中,当$ option = false时,getQuestion不存在。

if ($option == false) {
     $start = $this->quiz->startQuiz();
         $this->load->view('quiz_view', $start);
 } else {
         $this->load->view('quiz_view', array('name'=>$option,'getQuestion'=>''));
 }

在您的控制器中

更改:

     if ($option === false) {
         $start = $this->quiz->startQuiz();
         $this->load->view('quiz_view', $start);
     } 

至:

     if ($option === false) {
         $data['start'] = $this->quiz->startQuiz();
         $this->load->view('quiz_view', $data);
     } 

然后在您的视图页面上打印print_r($start);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM