2

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

members.php 是一个视图。

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

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

我关注了网络上的一些资源,这些资源说不要从视图中调用控制器。如果不这样做,我怎么能成为上述行为的同谋?

谢谢

4

5 回答 5

10

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

控制器

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

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

于 2013-02-20T15:18:14.763 回答
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
}

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

于 2013-02-20T15:14:53.027 回答
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>
于 2013-02-20T22:27:18.627 回答
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);
}
于 2015-12-16T09:14:15.973 回答
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; }

于 2017-06-30T11:15:38.477 回答