Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 如何在codeigniter中显示数据库中的内容,而无需从视图调用控制器?_Php_Mysql_Codeigniter - Fatal编程技术网

Php 如何在codeigniter中显示数据库中的内容,而无需从视图调用控制器?

Php 如何在codeigniter中显示数据库中的内容,而无需从视图调用控制器?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我是codeigniter的新手。我遵循视频教程,成功创建了一个登录注册系统。注册或登录后,用户将进入名为members.php的页面 php是一个视图 我的控制器是main.php,模型是model-users.php 我想让members.php显示/拥有来自数据库的内容,以便用户在登录或注册后可以阅读它 我在网上查阅了一些资料,上面说不要从视图中调用控制器。如果不这样做,我怎么能实现上述目标 谢谢我没有任何代码示例,但我编写了一个简单的HTML示例,可以显示成员的姓名。 控制器: func

我是codeigniter的新手。我遵循视频教程,成功创建了一个登录注册系统。注册或登录后,用户将进入名为members.php的页面

php是一个视图

我的控制器是main.php,模型是model-users.php

我想让members.php显示/拥有来自数据库的内容,以便用户在登录或注册后可以阅读它

我在网上查阅了一些资料,上面说不要从视图中调用控制器。如果不这样做,我怎么能实现上述目标


谢谢

我没有任何代码示例,但我编写了一个简单的HTML示例,可以显示成员的姓名。 控制器:

function members(){
  $members = $this->model-user->get_list(); //array of members
  $this->load->view('members.php', $members); // load members in view
}
查看members.php

<html>
<body>
    <table>
      <tr>
        <th>Name</th>
        <th>Surname</th>
      </tr>
      <?php foreach($members as $m): ?>
      <tr>
        <tr><?php echo $m['name']; ?>
        <tr><?php echo $m['surname']; ?>
      </tr>
      <?php endforeach; ?>
    <table>
</body>
</html>
这是一个简短的例子。我希望你能理解

我认为这一点实际上非常清楚,也很容易理解。不过,这里有一个示例,说明了如何构建应用程序

控制器

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

class Members extends CI_Controller {
    function __construct() {
        parent::__construct();

        $this->load->model('members_model');
    }

    function index() {
        $data['members'] = $this->members_model->get_members();

        $this->load->view('header', $data);
        $this->load->view('members');
        $this->load->view('footer');
    }
}
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Members_model extends CI_Model {

    function get_members() {
        $query = $this->db->get('members');
        return $query->result_array();
    }
}
<?php

print_r($members);

我想我知道你的意思,这绝对不是正确的方法,但如果你真的必须这样做,你可以从这样的视图调用模型。
在视图中

<div>

    <?php 
    #You could load the model here or autoload it in config->autoload->models(i believe)
    $data = $this->model_name->model_function();?>
    foreach($data as $row): 
           echo '<pre>';
           print_r($row);
           echo '</pre>';
    endforeach; 
    ?>

</div>

foreach($行数据):
回声';
                <?php foreach($ecms as $i){ ?>
                    <tr>
                    <td><?php echo $i->accnum; ?></td>
                    <td><?php echo $i->crdnum; ?></td>
                    <td><?php echo $i->fname; ?></td>
                    <td><?php echo $i->bday; ?></td>
                </tr>
            <?php } ?>
打印(行); 回声';
                <?php foreach($ecms as $i){ ?>
                    <tr>
                    <td><?php echo $i->accnum; ?></td>
                    <td><?php echo $i->crdnum; ?></td>
                    <td><?php echo $i->fname; ?></td>
                    <td><?php echo $i->bday; ?></td>
                </tr>
            <?php } ?>
endforeach; ?>
以下是我的代码示例:

视图:

function masterHide()

{
    $sql =" select * from ecms";
    $query = $this->db->query($sql);
    return($query->num_rows() > 0) ? $query->result(): NULL;
}
    function search() {

//  $this->MasterListAccess();
    $this->load->model('navi_model');
    $query = $this->navi_model->masterHide();
    //check results or returned value of model
    //print_r($query);
    $data['ecms'] = $query;
    $data['main_content'] = 'search';
    $this->load->view('includes/template',$data);
}
控制器:

function masterHide()

{
    $sql =" select * from ecms";
    $query = $this->db->query($sql);
    return($query->num_rows() > 0) ? $query->result(): NULL;
}
    function search() {

//  $this->MasterListAccess();
    $this->load->model('navi_model');
    $query = $this->navi_model->masterHide();
    //check results or returned value of model
    //print_r($query);
    $data['ecms'] = $query;
    $data['main_content'] = 'search';
    $this->load->view('includes/template',$data);
}

首先,连接项目文件中的数据库,连接视图页面中的模型页面,然后尝试以下代码。 转到“查看”页面并尝试此代码

查看

20
21
名称
电子邮件
电话号码

如果我将函数members()放在一个单独的控制器中(即不在主控制器中),视图将如何识别它?我认为您缺少基本的功能。控制器调用视图。不是相反,我想我明白你的意思了。如果我错了,请告诉我:我可以从不同的控制器调用相同的视图并传递数据。视图将显示来自所有控制器的所有数据?@StacyJ,看,这里我写了一个CI的MVC模式。function members()是控制器函数,在这里调用model函数并获取成员,然后在视图中加载。函数get_list()在模型中,在这里您将执行查询以获取数组中的列表。在视图中,您只需将其加载到一个表中。这是一个简单的示例,向您展示如何执行查询、在视图中加载并显示它。我希望你们能理解我的观点。在这种情况下,页眉和页脚是两个独立的页面吗?它们是独立的模板。按照惯例,以这种方式分离模板,这样您就可以在整个网站上重复使用页眉和页脚部分,而不必在每个页面上都包含这些代码。如果答案对您有帮助,您应该将其标记为已接受。