通过CodeIgniter中的控制器将参数传递给模型

时间:2017-01-20 09:27:57

标签: php mysql codeigniter

我创建了一个小项目,显示来自CodeIgniter中数据库的服装项目。数据来自数据库并且它正在工作,我已经在where where条件下检查类别以及条件不起作用。它不显示特定结果,而是显示所有数据库表结果。我通过url传递category参数。我已经自动加载了数据库。

当用户点击Men's链接

时,这是我在主页中传递参数的方式
<a class="dropdown-item" href="<?php echo base_url();?>index.php/Products/view/mens">Men's</a>

这是控制器

<?php
 if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Products extends CI_Controller {
     public function __construct()
{
    parent::__construct();
    $this->load->model('GetData');
}   


    public function view()
    {
        $category_name = $this->uri->segment(3);
        $this->GetData->get_data($category_name);
        $result = $this->GetData->get_data();
        $data['result'] = $result;
        $this->load->view('products',$data);
    }

}

/* End of file Products.php */
/* Location: ./application/controllers/Products.php */

?>

这是模型

<?php
 if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class GetData extends CI_Model {


    public function __construct()
    {

        parent::__construct();

    }

    public function get_data($category_name=0){
        $query = $this->db->get_where('mens', array('category' => $category_name));
        return $query->result();
    } 


}

/* End of file GetData.php */
/* Location: ./application/models/GetData.php */
?>

数据库表字段 - id,category,category_name,img_path,item_name

我使用where条件来检查类别是否等于男性以及是否显示结果......并且表中有一行class = women。但不是显示特定结果,而是显示所有结果。

1 个答案:

答案 0 :(得分:1)

型号:

public function get_data($category_name){
        $query = $this->db->get_where('mens', array('category' => $category_name));
        return $query->result();
    } 

控制器:

 public function view()
    {
        $category_name = $this->uri->segment(3);           
        $result = $this->GetData->get_data($category_name);
        $data['result'] = $result;
        $this->load->view('products',$data);
    }

检查一下。

请检查$ category_name的第一个值是否存在。

//删除$this->GetData->get_data($category_name);来自控制器,因为您已经再次定义了这个。不知道你在控制器中两次调用相同功能的原因。