2011-02-24 56 views
0

我在CodeIgniter中只使用此代码获取一个特色项目。我想获得5个不同的特色项目。在CodeIgniter中加载数据

我的模型:

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

回答

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

这样,你将返回$数据查询的所有结果的数组,而不是重新分配它,仅仅结束了只有一个结果。

相关问题