php - 无法将用户链接到相应的结果 CODEIGNITER

标签 php mysql codeigniter join

我有一个页面,显示所有学生的个人资料及其成绩。我放入“用户”表中的所有用户信息 然后我有另一个表“结果”,显示所有学生不同类(class)的分数。问题是我不知道如何编写查询或 Controller 函数来将学生与其相应的结果链接起来。我需要一些帮助,谢谢

Controller

        function students()  
        {  
            $data = array(); 
            $this->load->model('kdg_model');
            $query = $this->kdg_model->get_students();
            $query2 = $this->kdg_model->get_resultStudent();
                if ($query)
                {
                    $data['user'] = $query;
                    $data['results'] = $query2;
                }

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

        } 

型号

get_students 从数据库表 user 中获取所有行。 get_resultstudent 获取结果中的所有行。尝试将它们组合起来,但它只是在每个配置文件上返回所有相同的行。

         function get_students(){
            $this->db->where('admin', 0);
            $query = $this->db->get('user');  
            return $query->result();
         }
         function get_resultStudent(){
            $this->db->select('*');
            $this->db->from('results');
            $this->db->join('user', 'user.id_user = results.FK_student');
            $query = $this->db->get(); 
            return $query->result();
         }

最佳答案

我不确定你的数据库模式是什么样的,但从我能弄清楚的来看,我已经得到了这个。好的,在你的 Controller 中你想建立你的学生数组。让我们通过调用两个模型函数来完成此操作。我们要调用的第一个模型函数将获取“用户”表中的所有学生。该模型会将一个数组传回 Controller ,我们可以循环遍历该数组以获取各个学生。在循环的每次迭代中,我们可以将“id_user”传递给模型中的另一个函数来获取该学生的结果。

//This is where we will store the students and their results
$aData['aStudentResults'] = array(); 

//Load the model we need
$this->load->model('kdg_model');

//Get an array of students
$aStudents = $this->kdg_model->get_students();

//Now we have an array of student id's let loop through these and for each student
//let get their results
foreach($aStudents as $student)
{
    //Add the student to the array
    //The student id (id_user) is the key
    $aData['aStudentResults'][$student->id_user] = $this->kdg_model->get_resultStudent($student->id_user);
}

//Pass out array of students to the view
$this->load->view('students_view', $aData);

这些是我们在 Controller 中调用的模型函数

//Get all the students that are not admins
function get_students(){
    $this->select('id_user')
        -from('user')
        ->where('admin', 0);
    $query = $this->db->get();  
    return $query->result();
}

//Use the id_user we were passed by the controller to get the results
function get_resultStudent($id_user){
    $this->db->select('*');
    $this->db->from('results');
    $this->db->where('FK_student', $id_user);
    $query = $this->db->get(); 
    return $query->result_array();
}

此时我们已经拥有了所需的所有数据。我们只需要将它从控件传递到 View ,我们通过传递 View $aData 来完成此操作。在我们看来,我们可以像这样访问我们传递给它的内容

<? foreach($aStudentResults as $studentId => $aResults): ?>
    <p>Student id: <?= $studentId ?></p>

    <?foreach($aResults as $aResult): ?>
        //Do something with results
    <? endforeach; ?>
<? endforeach; ?>

这尚未经过测试,因此可能存在一些语法错误,但希望您应该了解我正在尝试做什么以及您需要做什么。

了解 MVC 的工作原理对您来说非常重要。在模型中练习从数据库中选择的数据,然后通过 Controller 将该数据传递到 View 。您很快就会掌握它的窍门。

如果您对此答案有任何不明白的地方,请发表评论并告诉我。

关于php - 无法将用户链接到相应的结果 CODEIGNITER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18339163/

相关文章:

mysql - 网球场预订系统的数据库表

javascript - jQuery .prependTo() 创建的表导致浏览器出现 "lag"

php - 如何根据数据库中的 csv 重新填充/重新选择/自动选择多个选择框值?

javascript - 无法获取页面显示的结果

php - 在新域/子域上复制 WordPress 站点

javascript - 比较左侧有空格的字符串

java - 将 JDateChoose 插入 MySQL

php - 如何用任何给定的文本替换变量获取表单数据库中的标记?

mysql - 如何使用 codeigniter 在 mysql 几何列中插入多边形点?

php - 使用 Cakephp 2.x 选择 id 不在另一个表中的所有记录