Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mvc测验-检查答案_Php_Codeigniter - Fatal编程技术网

php mvc测验-检查答案

php mvc测验-检查答案,php,codeigniter,Php,Codeigniter,我正在尝试使用Codeigniter2.2.4做一个简单的测试,但是我在检查答案时遇到了一些问题。 我的结构如下: 管制员:猜猜看 模特:人 视图:猜测视图、结果 在我的人员课程中,我有一个方法从数据库中获取所有问题,并随机获取一个问题。我在检查答案是否正确时遇到了一些问题。结果总是错的 function getQuestions() { if(!isset($questions)) { $this->db->select("id, name, cho

我正在尝试使用Codeigniter2.2.4做一个简单的测试,但是我在检查答案时遇到了一些问题。 我的结构如下: 管制员:猜猜看 模特:人 视图:猜测视图、结果

在我的人员课程中,我有一个方法从数据库中获取所有问题,并随机获取一个问题。我在检查答案是否正确时遇到了一些问题。结果总是错的

function getQuestions()
{
    if(!isset($questions))
    {
        $this->db->select("id, name, choice1, choice2, correctAnswer");
    $this->db->from('questions');
    $query = $this->db->get();
    foreach ($query->result() as $row) {
    $questions[] = $row;
    }
    }

    return $questions;
}

function getRandomQuestion()
{
    $max = count($this->getQuestions());
    $randpos = rand(0, $max-1);
    $question = $this->getQuestions()[$randpos];

    return $question;
}
在我的控制器中:

function guess()
{
    $answer = $this->input->get('answers',false);
    //$questionId = $this->input->get('id',false);

        //this will generate random questions.
        $newQuestion = $this->people->getRandomQuestion();
        $this->load->view('guessview',$newQuestion);
        //this is always false
       if($answer == $newQuestion->correctAnswer)
       {
           //do something
       }
}
在我看来,我只有一个表格,一次只显示一个问题

//更新 使用您提供的函数时,我的控制器和视图中出现了一些错误。我试着在控制器中抓住一个问题

 $question = $this->people->getRandomQuestion();
//这给了我未定义的索引correctAnswer,但它不应该有,因为数据库表具有以下结构:id、name、choice1、choice2、correctAnswer

if($question['correctAnswer'] == $answer)
{
}
另外,当我想将数据传递给视图时,例如

$question = $this->people->getRandomQuestion();
$data['question'] = $question;
$this->load->view('guessview',$data);
在我看来,对于我尝试过的表单值:$question['name'],$question['id'],我得到了未定义的索引名,id等等

来自guessview.php的我的表单

<form id= "form1" class="form"  action="<?php echo base_url();?>guess/people" method='POST'>
                <input type=hidden name=id value="<?php echo $question['id'] ?>"> 
                <label><?php echo $question['name'] ?>
                <div class="radio">
                  <label>
                    <input type="radio" id='rad1' name="answers" value="<?php echo $question['choice1'] ?>">
                    <?php echo $question['choice1'] ?>
                  </label>
                </div>
                <div class="radio">
                  <label>
                    <input type="radio" name="answers"  value="<?php echo $question['choice2'] ?>">
                    <?php echo $question['choice2'] ?>
                  </label>
                </div>
                <div class="radio">
                <label>
                <input type="radio" name="answers"   value="<?php echo $question['correctAnswer'] ?>">
                <?php echo $question['correctAnswer'] ?>
                </label>
                <div>
                    <input type=submit name="sub" value="Answer">
                </div>
</form>

我为什么发布的问题被认为是控制器功能的问题。当我试图检查用户的回答是否正确时,似乎总是错误的。与用户回答的前一个问题一样,将其与当前问题的正确答案进行比较

我试着输入单选按钮和id(放在一个隐藏的字段中)
如果返回false,则表示不显示任何问题,并显示第一个问题。否则,如果有输入,则根据id获取问题,并将问题的正确答案与用户选择的答案进行比较(但就像我上面所说的,它总是错误的)。我回家后会把方法贴出来

您可以在单一型号功能中完成

function getRandomQuestion()
{
    $sql = "SELECT * FROM questions ORDER BY RAND() LIMIT 1 )";
    $query = $this->db->query($sql);
    $result = $query->result_array();

    $count = count($result);

    if (empty($count) ||$count > 1) {
        echo "Inavliad Question";
    }
    else{
        return $result;
    }
}

您可以在单一模型功能中完成此操作

function getRandomQuestion()
{
    $sql = "SELECT * FROM questions ORDER BY RAND() LIMIT 1 )";
    $query = $this->db->query($sql);
    $result = $query->result_array();

    $count = count($result);

    if (empty($count) ||$count > 1) {
        echo "Inavliad Question";
    }
    else{
        return $result;
    }
}