警告:为foreach()

时间:2017-01-17 16:48:24

标签: php mysql codeigniter foreach

我的产品细节有误,我不知道还有什么可以改变的地方。当我将$detail更改为$categories成功但与功能子菜单相同时。这不符合我的意愿

我的观点

<!-- navbar -->
<div class="row">
<?php foreach ($categories as $row) : ?>
     <div class="col-sm-3">
         <h5><?php echo $row->categoriesName; ?></h5>
         <ul><li><a href="<?php echo base_url();?>member/detail">
         <?php echo $row->productName; ?></a> </li></ul>
     </div>
<?php endforeach; ?>
</div>
     <!-- product detail -->
     <?php foreach ($detail as $details_new) : ?>
     <div class="box">
         <h1 class="text-center"><?php echo $details_new->productName;?></h1>
         <p class="price"><?php echo $details_new->price;?></p>
     </div>
     <?php endforeach; ?>

我的控制器

public function home() {
    $data=array('title'=>'Pasar Online | Ayo Belanja Sekarang',
          'username'=> $this->session->userdata('username'),
          'product' => $this->product_model->all(),
          'categories' => $this->categories_model->get_main(),
          'isi'  =>'member/index');    
    $this->load->view('template_home/wrapper',$data);
}
public function detail() {
    $data['username'] = $this->session->userdata('username');
    $data['categories'] = $this->categories_model->get_main();
    $data['detail'] = $this->categories_model->get_details();
    $this->load->view('member/coba',$data);
}

我的模特

public function get_main(){
    $this->db->select('product.*,categories.*');
    $this->db->from('product');
    $this->db->join('categories','product.categoriesID=categories.categoriesID');
    $this->db->limit(5);
    $query = $this->db->get();
    if($query->num_rows() > 0) {
        $results = $query->result();
    } return $results;
}       
public function get_details() {
    $query = $this->db->query("SELECT * FROM product WHERE productID");
    $row = $query->row();
}

enter image description here

仍然无法显示单品

enter image description here

我不知道我的错误在哪里...请帮助我,谢谢

3 个答案:

答案 0 :(得分:1)

您正在以错误的格式迭代详细信息数组。

public function get_details() {
    $query = $this->db->query("SELECT * FROM product WHERE productID");
    $row = $query->row();
    return $row;
}

这将只返回没有任何索引的单行,如-0,1,2 ......

在视图页面上你使用foreach循环和foreach循环使用索引来迭代你可以迭代的值 -

<div class="box">
         <h1 class="text-center"><?php echo $detail->productName; ?></h1>
         <p class="price"><?php echo $detail->price; ?></p>
     </div>

请用这种方式希望它能起作用..

答案 1 :(得分:0)

这是因为$ detail变量为空,此变量中没有数据可用,在循环之前总是检查变量中的数据

<?php if(!empty($detail)){    
     foreach ($detail as $details_new) : ?>
 <div class="box">
     <h1 class="text-center"><?php echo $details_new->productName;?></h1>
     <p class="price"><?php echo $details_new->price;?></p>
 </div>
 <?php endforeach; } ?>

答案 2 :(得分:0)

在codeigniter <div class="box"> <h1 class="text-center"><?php echo $detail->productName;?></h1> <p class="price"><?php echo $detail->price;?></p> </div> 中只选择对象格式的第一行结果。所以不需要使用foreach循环。只需尝试这样......

public function get_details() {
    $query = $this->db->query("SELECT * FROM product WHERE productID");
    $row = $query->row();
    return $row;
}

和 在模型中

org.hibernate.exception.GenericJDBCException: Cannot open connection
El controlador no pudo establecer una conexión segura con SQL Server con el cifrado de Capa de sockets seguros (SSL). Error: "Unsupported curveId: 29"