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

时间:2013-02-20 15:03:56

标签: php mysql codeigniter

我是codeigniter的新手。我按照视频教程成功创建了一个登录注册系统。注册或登录后,用户会到达名为members.php的页面。

members.php是一个观点。

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

我希望members.php显示/拥有数据库中的内容,以便用户在登录或注册后可以读取它?

我在网上关注了一些资源,说不要从视图中调用控制器。如何在不这样做的情况下同谋上述内容?

由于

5 个答案:

答案 0 :(得分:10)

我认为CodeIgniter documentation实际上非常清晰,而且非常容易理解。不过,这里有一个如何构建应用程序的示例。

<强>控制器

<?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);

要访问上述页面,您需要访问http://yoursite.com/index.php/members

您可以使用.htaccess文件从URI中删除index.php段。运行控制器时会自动调用index()方法。

答案 1 :(得分:1)

我没有任何代码示例,但是当您可以显示成员的姓名时,我会写一个简单的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>

型号:

function get_list() {
   // query in database
   return $query = $this->db->get('members'); //table name members
}

这是简短形式的简单示例。我希望你能理解它。

答案 2 :(得分:1)

我想我知道你的意思,这绝对不是解决这个问题的正确方法,但如果你真的必须从这样的观点中调用一个模型。
在视图中

<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>

答案 3 :(得分:0)

这是我的代码示例:

<强>的观点:

                <?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 } ?>

<强>模型:

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);
}

答案 4 :(得分:0)

首先连接项目文件中的数据库并连接视图页面中的模型页面并尝试此代码。 转到视图页面并尝试此代码

查看

20
21
<?php
	$get_data=$this->MyModel->get_table_data();
?>
<table class="table table-bordered">
	<thead>
		<tr>
			<th> Name </th>
			<th> Email </th>
			<th> Phone No </th>
		</tr>
	</thead>
	<tbody>
	<?php foreach($get_data as $val){ ?>
		<tr>
			<td><?php echo $val->name; ?></td>
			<td><?php echo $val->email; ?></td>
			<td><?php echo $val->phone; ?></td>
		</tr>
	<?php } ?>
	</tbody>
</table>

<强>模型

public function get_table_data(){ $qry=$this->db->select('*')->from('Table Name')->get()->result(); return $qry; }