2016-02-26 122 views
0

我在使用foreach循环时遇到了问题,它始终显示警告:为foreach()提供的无效参数,您可以查看并帮助我解决此问题。 这是我的控制器:无法运行foreach循环

function prod_detail($id_sp){ 
    $this->load->model('product_model'); 
    $data['prod_detail'] = $this->product_model->getProdDetailByProdId($id_sp); 
    $data['prod_errors'] = $this->product_model->getProdDataError($id_sp); 
    $data['error_repairing'] = $this->product_model->getProdDataErrorRepairing($id_sp); 
    $data['rows']= $this->membership_model->getUserData(); 
    $data['main_content'] = 'backend/home/manproduct/prod_detail_view'; 
    $this->load->view('includes/admin/template', $data); 
} 

这是我的模型:

function getProdDataError($id_sp){ 
    $this->db->where('id_sp', $id_sp); 
    $this->db->where('status', 0); 
    $query = $this->db->get('loi'); 
    if($query->num_rows()>0){ 
     foreach ($query->result() as $row){ 
      $data[]=$row; 
     } 
     return $data; 
    } 
} 
function getProdDataErrorRepairing($id_sp){ 
    $this->db->where('id_sp', $id_sp); 
    $this->db->where('status', 1); 
    $query = $this->db->get('loi'); 
    if($query->num_rows()>0){ 
     foreach ($query->result() as $row){ 
      $data[]=$row; 
     } 
     return $data; 
    } 
} 

这是我的观点:

if($ud->status==0){ 
       echo 'Hoạt động'; 
      }else if($ud->status==1){ 
      echo '<b>Lỗi<br><ul></b>'; 
      foreach ($prod_errors as $err) { 
       echo '<li>'.$err->ten_loi.'</li>'; 
      } 
      echo '</ul>'; 
     }else if($ud->status==2){ 
      echo '<b>Đang sửa lỗi<br><ul></b>'; 
      foreach ($error_repairing as $err) { 
       echo '<li>'.$err->ten_loi.'</li>'; 
      } 
      echo '</ul>'; 
     }else if($ud->status==3){ 
      echo 'Chưa lắp đặt'; 
     } 

这是确定的时候$ud->status==1但它表明,当$ud->status==2一条警告消息。顺便说一句,我使用codeigniter来开发我的网站,你能帮忙吗?

回答

3

试试这个(添加上$ prod_errors/$ error_repairing检查试图重复之前)

if($ud->status==0) 
{ 
       echo 'Hoạt động'; 
}else if($ud->status==1) 
{ 
    echo '<b>Lỗi<br><ul></b>'; 
    // first check $prod_errors exists and is not null before iterating it 
    if (isset($prod_errors)) 
    { 
     foreach ($prod_errors as $err) 
     { 
      echo '<li>'.$err->ten_loi.'</li>'; 
     } 
    } 
    else{ 
     echo "No Data found"; 
    } 
    echo '</ul>'; 
}else if($ud->status==2) 
{ 
    echo '<b>Đang sửa lỗi<br><ul></b>'; 
    // first check $error_repairing exists and is not null before iterating it 
    if (isset($error_repairing)) 
    { 
     foreach ($error_repairing as $err) 
     { 
      echo '<li>'.$err->ten_loi.'</li>'; 
     } 
    } 
    else{ 
     echo "No Data found"; 
    } 
    echo '</ul>'; 
}else if($ud->status==3) 
{ 
    echo 'Chưa lắp đặt'; 
} 
+0

哦,也没有任何数据现在发现,我却用'$状态插入数据==在1'我的数据库,有什么问题,你能帮助 –

+0

谢谢你,我确实发现我的问题。我忘记为我正在寻找的产品插入数据,这很难解释,因为这里的问题没有数据显示。 anw我修好了,谢谢 –

+0

我希望你不介意我编辑你的答案,以强调你所介绍的改动;-) – VolkerK