2013-06-06 48 views
0

我是codeigniter的新手,并遵循指南,但似乎缺少一些东西。我有一个简单的数据库,其中包含客户记录。我在codeigniter中的第一个目标是简单列出我所有的客户。codeigniter从数据库抓取数组

这里是我的控制器:

public function index() 
{ 
    $this->load->model('HomeModel'); //loads the HomeModel model 
    $data = $this->HomeModel->function1();  //loads the function (function1) from the model 

    $this->load->view('index', $data);  
} 

这里是我的模型:

public function function1() 
{ 
$query = $this->db->get('work_orders'); 
return $query->result(); 

} 

这里是我的看法:

<table class="table table-bordered table-striped table-highlight" id="invoice-details"> 
    <thead> 
    <tr> 
     <th>Work Order ID</th> 
     <th>Status</th> 
     <th>Description</th> 
    </tr> 
    </thead> 
    <?php 
    foreach ($data->result() as $row);?> 
     <tr class="even gradeC"> 
     <td><a href="/WorkOrders/viewWo/<?php echo $row['id']; ?>"> 
     <?php echo $row['id']; ?></a></td> 
     <td><?php echo $row['status']; ?></td> 
     <td><?php echo Logic\System\Lib\Helper::trunc(htmlentities($row['description']), 8); ?></td> 
     </tr> 
    <?php endforeach; ?> 
    </table> 
+1

那么问题是什么?你得到的结果是什么?它们与预期结果有什么不同? –

回答

0

变化模型:

public function function1() 
{ 
    $query = $this->db->get('work_orders'); 
    //return $query->result(); 
    return $query->result_array(); 
} 

变化控制器:

public function index() 
{ 
    $this->load->model('HomeModel');  
    //$data = $this->HomeModel->function1(); 
    $data['result'] = $this->HomeModel->function1(); 
    $this->load->view('index', $data); 
} 

变化视图:

//foreach ($data->result() as $row); 
    if(is_array($result)&&!empty($result)) 
     foreach ($result as $row); 

数据从所述控制器通过一个阵列的方式或在视图装载功能的第二个参数的对象传递给视图。下面是一个使用数组的例子:

$data = array(
       'title' => 'My Title', 
       'heading' => 'My Heading', 
       'message' => 'My Message' 
     ); 

$this->load->view('blogview', $data); 

Views : Codeigniter User Guide

因为你正在使用你的观点一样$row['id']数组,你必须使用result_array型号来返回结果集阵列:

这函数将查询结果作为纯数组返回,或在未产生结果时返回空数组。通常你会在foreach循环使用,像这样:

$query = $this->db->query("YOUR QUERY"); 

foreach ($query->result_array() as $row) 
{ 
    echo $row['title']; 
    echo $row['name']; 
    echo $row['body']; 
} 

Generating Query Results : Codeigniter

您可以使用$this->db->join();

$this->db->select('*'); 
$this->db->from('blogs'); 
$this->db->join('comments', 'comments.id = blogs.id'); 
$query = $this->db->get(); 

产地:

SELECT * FROM blogs 
JOIN comments ON comments.id = blogs.id 

去通过活动记录班级指导。 Active Record Class

+0

感谢您的更新。它开始有意义。我尝试了您的建议,并得到: 解析错误:语法错误,意外的T_ENDFOREACH在D:\ Users \ bnelson \ Documents \ My Web Sites \ project1 \ application \ views \ index.php上行57 – bnelsonjax

+0

可能是您的$结果数组为空,检查数组是否为空。检查更新的答案。 – hsuk

+0

nvm工作,我有索引页面上的错字。谢谢你的帮助! – bnelsonjax

0

在乌尔控制器,U必须通过值数组阵列$data['result']的子阵列。之后,您可以简单地将它称为$result

控制器

$data['result'] = $this->HomeModel->function1(); 

并在视图中,

foreach ($result as $row){ 
<?php echo $row->id; ?> 
.. 
}