cakephp:cakephp分页条件

时间:2016-02-16 18:25:07

标签: php cakephp pagination

是否可以在分页条件下使用以下查询?

$data = $this->Product->query("select * from product_tbls where price >".$this->request->data["min"]." and price <".$this->request->data["max"]);

我试过这个

$data = $this->Product->find('all');
    if(isset($this->request->data["min"]))
    {
        $this->paginate = array(
                            'conditions' => array('Product.price >' => $this->request->data["min"] ,'Product.price <'=>$this->request->data["max"]),
                            'limit' => 6,
                            'order' => array('id' => 'desc')
                            );
        $data = $this->paginate('Product');
    }

这是表格

<form method="post">
    <table>
        <tr>
            <td><h5><b>Enter Price</b></h5></td>
            <td><input type="text" name="min" placeholder="Min" size="4"></td>
            <td><h5>To</h5></td>
            <td><input type="text" name="max" placeholder="Max" size="4"></td>
        </tr>
        <tr>
            <td><input type="submit" name="b1" value="Search"></td>
        </tr>
    </table>
</form>

我正在使用此代码。 什么时候使用正常的php查询并且不使用分页我从我的文本字段中执行搜索时获取所有正确的数据

如果我搜索20000到30000

,我会在debug($data);上收到此消息
array(
(int) 0 => array(
    'Product' => array(
        'id' => '43',
        'category_tbls_id' => '3',
        'subcategory_tbls_id' => '22',
        'brands_tbls_id' => '0',
        'product_description' => 'product desc',
        'name' => 'Utsav Fashion Pink Net Saree',
        'price' => '22000',
        'photo' => '145500138232.jpg'
    ),
    'brands_tbls' => array(
        'id' => '0',
        'name' => 'no brand'
    )
),
(int) 1 => array(
    'Product' => array(
        'id' => '26',
        'category_tbls_id' => '2',
        'subcategory_tbls_id' => '11',
        'brands_tbls_id' => '4',
        'product_description' => 'Product description here.',
        'name' => 'Spykar Jeans',
        'price' => '2400',
        'photo' => '14544135633.jpg'
    ),
    'brands_tbls' => array(
        'id' => '4',
        'name' => 'spykar'
    )
)

1 个答案:

答案 0 :(得分:0)

由于您在表单中使用 POST 方法,因此在转到下一页时可能会丢失数据。

如果您仍想使用POST方法,则需要在会话中保存表单中的数据并在下一页上使用它们。

你也可以使用GET方法,(Read more)生成一个网址,如:

products?min=2000&max=3000

在这种情况下,不是使用$this->request->data,而是 您需要使用$this->request->query['min']$this->request->query['max'],并确保阻止SQL注入。

但为什么不试试这个插件:https://github.com/CakeDC/search