在 CodeIgniter 中,您可以使用模型(Model)和查询构建器(Query Builder)来实现多重过滤器,并仅获取批准的产品。以下是一个详细的示例,展示如何在 CodeIgniter 中实现这一点。
假设您有一个名为 products
的数据库表,其中包含以下字段:
id
(int)name
(varchar)category
(varchar)price
(decimal)status
(varchar) - 用于存储产品的状态,例如 "approved" 或 "pending"首先,创建一个模型来处理产品数据。假设模型名为 Product_model
。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Product_model extends CI_Model {
public function __construct() {
parent::__construct();
$this->load->database();
}
// 获取所有批准的产品
public function get_approved_products($filters = array()) {
$this->db->select('*');
$this->db->from('products');
$this->db->where('status', 'approved');
// 应用过滤器
if (!empty($filters)) {
foreach ($filters as $key => $value) {
$this->db->where($key, $value);
}
}
$query = $this->db->get();
return $query->result();
}
}
接下来,创建一个控制器来处理请求并调用模型方法。假设控制器名为 Product_controller
。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Product_controller extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('Product_model');
}
// 显示批准的产品
public function approved_products() {
// 获取过滤器参数
$filters = array();
if ($this->input->get('category')) {
$filters['category'] = $this->input->get('category');
}
if ($this->input->get('price_min')) {
$filters['price >='] = $this->input->get('price_min');
}
if ($this->input->get('price_max')) {
$filters['price <='] = $this->input->get('price_max');
}
// 获取批准的产品
$data['products'] = $this->Product_model->get_approved_products($filters);
// 加载视图
$this->load->view('approved_products', $data);
}
}
最后,创建一个视图来显示批准的产品。假设视图文件名为 approved_products.php
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Approved Products</title>
</head>
<body>
<h1>Approved Products</h1>
<form method="get" action="<?php echo site_url('product_controller/approved_products'); ?>">
<label for="category">Category:</label>
<input type="text" name="category" id="category">
<label for="price_min">Min Price:</label>
<input type="number" name="price_min" id="price_min">
<label for="price_max">Max Price:</label>
<input type="number" name="price_max" id="price_max">
<button type="submit">Filter</button>
</form>
<ul>
<?php foreach ($products as $product): ?>
<li><?php echo $product->name; ?> - <?php echo $product->category; ?> - $<?php echo $product->price; ?></li>
<?php endforeach; ?>
</ul>
</body>
</html>
领取专属 10元无门槛券
手把手带您无忧上云