2016-07-29 124 views
0
function mostViewedTracks() { 
    $this->load->database();   
    $this->db->select("*"); 
    $this->db->from("file"); 
    $this->db->order_by("views", "desc"); 
    $this->db->limit(8); 
    $query = $this->db->get(); 
    if($query->num_rows() > 0) 
    { 
     $results = $query->result(); 
    } 
    return array(); 
} 

当我运行这个模型给出了错误的的foreach()提供的无效参数无效参数

这是我的看法代码:

<?php if(!empty($most_viewed)) { ?> 
    <?php foreach($most_viewed as $row): ?> 
    <a href="<?php echo base_url('index.php/home/track');?>/<?php echo $row->id;?>" class="list-group-item"> 
    <img class="track-list-img" src="<?php echo base_url('assets/img/music');?>/<?php echo $row->id;?>.jpg"> 
    <div class="list-track-infoo"> 
    <h4 class="list-group-item-heading"><?php echo $row->title;?><span class="badge"><?php echo $row->views;?><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span></span> </h4> 
    <p class="list-group-item-text"><?php echo $row->singer;?></p> 
    </div> 
    </a> 
    <?php endforeach; ?> 
    <?php} ?> 

更新

控制器

function track() { 
    $id = $this->uri->segment(3); 
    $data1['track'] = $this->view_models->track($id); 
    $data1['most_viewed'] = $this->view_models->mostViewedTracks(); 
    $this->load->view('includes/header'); 
    $this->load->view('track', $data1); 
    $this->load->view('includes/footer'); 
} 

我已经尽了全力来解决这个问题,但一切都是徒劳

+1

提供适当的代码 –

+0

我已经更新了我的问题 –

+0

您返回数组使用return $结果,请再次检查;在 –

回答

1

而不是return array();你必须返回结果集从模型文件

if($query->num_rows() > 0) 
    { 
     return $query->result();// return result set 
    }else{ 
      return FALSE;// 
    } 

控制器中你有打电话给你的模型功能

$data1['most_viewed'] = $this->view_models->getFeaturedTracks();// change mostViewedTracks to getFeaturedTracks 

鉴于使用它作为

<?php foreach($most_viewed as $row): ?>// remove $row1 to $row 
+0

最好不要从if语句返回......该方法需要返回一些东西,把数组放在一个变量中并返回。 –

+0

当没有结果表单查询时返回false!那么OP忘记调用模型函数'getFeaturedTracks' @ M.I。 – Saty

+0

做出这些更改后出现同样的问题。 –

1

你需要改变两个错误,

You should return the `$result` array in your model like, 

$results = $query->result(); 
return $results; 

而在变化的foreach对$row1其中$row产生错误。看,

<?php foreach($most_viewed as $row): ?> 
+0

返回$结果,你错过了“s”...也实例化$结果为空或空数组,并检查是否为空或空,然后在foreach中使用它 –

+0

@ M.I。谢谢,我编辑:) –

+0

做出这些更改后出现同样的问题 –

0

功能应该喜欢这个....

function getFeaturedTracks() { 
    $results = array(); 
    $this->load->database();   
    $this->db->select("*"); 
    $this->db->from("file"); 
    $this->db->order_by("views", "desc"); 
    $this->db->limit(8); 
    $query = $this->db->get(); 
    if($query->num_rows() > 0) 
    { 
     $results = $query->result(); 
    } 
    return $results; 
}