我在CodeIgniter中只获得了一个带有此代码的特色项目。我想获得5种不同的特色商品。
我的模特:
// GET THE FEATURED PRODUCTS
function getMainFeature(){
$data = array();
$this->db->select("id, a_title, a_description, a_image");
$this->db->where('a_featured', true);
$this->db->where('a_status', 'active');
$this->db->order_by("rand()");
$this->db->limit(5);
$Q = $this->db->get('articles');
if($Q->num_rows() >0){
foreach($Q->result_array() as $row){
$data = array(
"id" => $row['id'],
"a_name" => $row['a_title'],
"a_description" => $row['a_description'],
"a_image" => $row['a_image']
);
}
}
$Q->free_result();
return $data;
}
我的控制器:
function index(){
//get featured
$data['mainfeature'] = $this->MArticles->getMainFeature();
$data['main'] = 'template/main/home';
//load data and template
$this->load->vars($data);
$this->load->view('template/main/main_template');
}
我的观点:
<li>
<?php
foreach($mainfeature as $feat){
echo "<img src='".$mainfeature['a_image']."' border='0' align='left' width='320' height='320'/> \n";
}
?>
</li>
答案 0 :(得分:7)
原因是这个......
if($Q->num_rows() >0){
foreach($Q->result_array() as $row){
$data = array( //<-----------HERE
"id" => $row['id'],
"a_name" => $row['a_title'],
"a_description" => $row['a_description'],
"a_image" => $row['a_image']
);
}
}
每次迭代循环时,您都会覆盖(重新分配)$data
变量。
而不是上述内容,试试这个......
$data = array(); //declare an empty array as $data outside the loop
if($Q->num_rows() >0){
foreach($Q->result_array() as $row){
$data[] = array( //using square brackets will push new elements onto the array $data
"id" => $row['id'],
"a_name" => $row['a_title'],
"a_description" => $row['a_description'],
"a_image" => $row['a_image']
);
}
}
通过这种方式,您将返回$ data作为查询所有结果的数组,而不是重新分配它,只会以单个结果结束。