【问题标题】:CodeIgniter search query filter parametersCodeIgniter 搜索查询过滤器参数
【发布时间】:2011-10-30 22:29:52
【问题描述】:

我正在寻找一种使用 CodeIgniter 和带有复选框的多个过滤器参数进行搜索的好方法。为了简单起见,想象一下:

[X] T-shirts
    [ ] M
    [ ] L
    [X] XL
[ ] Pants
    [ ] M
    [ ] L
    [ ] XL

一个页面显示商店中所有可用的衣服 (get_all)。 您可以使用复选框仅显示 t-shitrs。 我已经用这样的东西走了这么远 /clothes/type/t-shirt 但现在我想在 T 恤中显示 L 和 XL 尺寸(两个选中的复选框)。

我不使用下拉菜单,因为我希望能够同时显示各种组合,例如 L 码 T 恤和 XL 裤子。

最终我希望这是一个基于 AJAX 的搜索,因此 POST 会比基于 URI 的搜索更好。

实现这样的最佳方式是什么?

【问题讨论】:

    标签: php codeigniter search


    【解决方案1】:

    创建此表单。为每种产品类型重复该字段集(此示例显示 tshirt):

    <form method="post" action="url/to/find_products">
    
        <!-- repeat for all product types -->
        <fieldset>
            <input type="checkbox" name="products[tshirt][active]" value="1" /> Tshirt
    
            <fieldset>
                <input type="checkbox" name="products[tshirt][size]" value="s" /> S
                <input type="checkbox" name="products[tshirt][size]" value="m" /> M
                <input type="checkbox" name="products[tshirt][size]" value="l" /> L
            </fieldset>
        </fielset>
        <!-- end repeat -->
    
    </form>
    

    不使用“活动”键,但它确保在未选择任何选项时产品类型键存在。

    无论您对每种产品类型使用单独的表,还是将它们全部放在一个表中,控制器方法都会有所不同。由于第一个比较困难,这里是:

    function find_products() {
        $products = $this->input->post('products');
        $results = array();
    
        foreach ($products as $product => $options) {
            $table_name = $product."s";
            $query = $this->db->from($table_name);
    
            if (count($options['size']) > 0) {
                $query->where_in('size', $options['size']);
            }
    
            $results = array_merge($results, $query->get());
        }
    
        return $results; # Or display view, or whatever.
    }
    

    请注意:这是非常不安全的。确保用户的输入有效。

    【讨论】:

    • 非常感谢!最终,除了我发布的示例之外,我还需要其他东西,但这让我开始了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多