CodeIgniter在视图中选择并显示结果

时间:2012-09-16 11:01:14

标签: php codeigniter

我有以下简单的代码: 模特:

function get_last_ten_entries()         
{
    $this->db->get('property');
}

控制器:

public function load_recent()
{
    $data['info'] = $this->propertymodel->get_last_ten_entries();
    $this->load->view('load_property', $data);
}

视图:

<?
echo $data['id'];
?>

这不起作用。我确定我做错了,因为显示的错误是

  

遇到PHP错误

     

严重性:注意

     

消息:未定义的变量:数据

     

文件名:views / load_property.php

     

行号:2

属性是数据库中的一个表,其中有一个名为id的字段。出了什么问题?

谢谢大家

2 个答案:

答案 0 :(得分:4)

要修复错误,您需要在视图中使用$info,而不是$data,因为控制器中的数组索引对应于视图中的变量。

$this->db->get('property')返回表property中的所有行,但是您的函数名称表明您正在尝试获取最后10个条目。我建议你阅读CodeIgniter's Active Record documentation了解更多信息。您还需要return您的查询。

您需要从查询中生成结果。 CodeIgniter's Query Results documentation提供了有关如何使用查询结果的有用信息。你想要实现的是有点模糊但你的代码看起来像这样:

<强>模型

function get_last_ten_entries()         
{
    return $this->db->get('property');  //Perform query (you'll need to update to select what you actually want from you database)
}

<强>控制器

public function load_recent()
{
    $data['last_entries'] = $this->propertymodel->get_last_ten_entries();
    $this->load->view('load_property', $data);
}

查看

foreach ($last_entries->result_array() as $entry)
{
   echo $entry['id'];
}

或者,如果您更喜欢使用对象而不是数组:

foreach ($last_entries->result() as $entry)
{
   echo $entry->id;
}

答案 1 :(得分:2)

首先,你在模型中的功能不会返回任何东西。试试这个:

function get_last_ten_entries()         
{
    $result = $this->db->get('property');
    return $result->result_array();
}

当你修复它时,你的视图中会有变量$ info,因为Codeigniter会将给定数组计算为load->view( $view, $givenarray);上的不同变量

例如

$data['variable1'] = 'first var';
$data['array'] = array('id' => 1, 'name' => 'myname' );
$this->load-view('view', $data);

允许您在视图文件中使用变量,如下所示

echo $variable1; // echoes 'first var';
echo $array['name']; // echoes myname