使用代码点火器将控制器中的sql查询结果传递给视图

Bil*_*ill 5 php codeigniter

所以我遇到了这个问题,它应该很简单,但我不知道为什么我无法解决这个问题.我对MVC的整个想法不熟悉,我正在尝试将数据库查询从我的控制器传递到视图中并在视图中显示结果.我现在这样做的方式是"未定义的变量,sql"当我加载视图时.这就是我所拥有的:

CONTROLLER

function make_login()
{
    //Select list of departments for dropdown
    $this->load->database();
    $sql = $this->db->query('SELECT departmentName FROM department ORDER BY departmentName ASC');



    $this->load->view('siteheader.php');
    $this->load->view('makelogin.php', $sql->result_array());
    $this->load->view('sitefooter.php');
}
Run Code Online (Sandbox Code Playgroud)

视图

<?php
 foreach($sql->result_array() as $row)
    {
        echo $row['departmentName'];
    }
    ?>
Run Code Online (Sandbox Code Playgroud)

(如果我只是在控制器中回显它,它会显示结果)

任何帮助都会很棒......谢谢!

Ros*_*oss 16

几点提示〜

你的make_login应该在一个模型中.控制器将寻找的东西是这样的:

function make_login
{
    $this->load->model('login_model'); // whatever you call it

    $data['departments'] =  $this->login_model->get_departments();

    /* note - you don't need to have the extension when it's a php file */
    $this->load->view('siteheader');
    $this->load->view('makelogin', $data);
    $this->load->view('sitefooter');
}
Run Code Online (Sandbox Code Playgroud)

现在在你的模型中,有类似的东西:

function get_departments()
{
    $sql = $this->db->query('SELECT departmentName FROM department ORDER BY departmentName ASC');
    return $sql->result();
    /* you simply return the results as an object
     * also note you can use the ActiveRecord class for this...might make it easier
     */
}
Run Code Online (Sandbox Code Playgroud)

最后,你的观点:

<?php
    foreach($departments as $store)
    {
        echo  $store->name . '<br />'; // your fields/whatever you want to output.
    }
?>
Run Code Online (Sandbox Code Playgroud)