【问题标题】:codeigniter pagination url and display issuecodeigniter 分页 url 和显示问题
【发布时间】:2014-09-12 19:50:47
【问题描述】:

我在 CI 中的分页存在问题。 我的第一页网址:http://example.com/products/page 第二页:http://example.com/products.page/12比24等+12

控制器:

$config = array();
$config["base_url"] = base_url() . "shop/page";
$config["total_rows"] = $this->shop_model->products_count();
$config["per_page"] = 12;
$config["uri_segment"] = 3;
$choice = $config["total_rows"] / $config["per_page"];
$config["num_links"] = round($choice);

$this->pagination->initialize($config);

$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$data['products'] = $this->shop_model->
getProducts($config["per_page"], $page);

如果我插入和:

$config['use_page_numbers'] = TRUE;

型号:

function getProducts($limit, $start)
{
    $this->db->select('*');
    $this->db->from('products');
    $this->db->join('products_img', 'products_img.i_product_id = products.id', 'left');
    $this->db->order_by("products.id", "desc");
    $this->db->limit($limit, $start);
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        foreach ($query->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
    return false;
}

它向我显示了正确的网址,但它显示的产品几乎与第一页上的相同。

我查看了有关此类问题的其他帖子,但无法解决。请帮忙!谢谢!

【问题讨论】:

    标签: php codeigniter pagination


    【解决方案1】:

    Limit 不关心页面,它关心开始的结果:

    function getProducts($limit, $start)
    {
        $this->db->select('*');
        $this->db->from('products');
        $this->db->join('products_img', 'products_img.i_product_id = products.id', 'left');
        $this->db->order_by("products.id", "desc");
        $this->db->limit($limit, ($start * $limit));
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                $data[] = $row;
            }
            return $data;
        }
        return false;
    }
    

    它显示“几乎相同”的结果,因为如果页码为 1、2 或 3,您仅偏移 1、2 或 3..

    上面假设第 1 页实际上是 0,第 2 页是 1,等等。这样做是因为您默认为零。如果不是这种情况,您应该进行调整以反映您所代表的页码。

    【讨论】:

    • 但我该如何更改以使第 2 页仍然是第 2 页?
    • $default page 到 1 而不是 0.. 然后 $this->db->limit($limit, (($start-1) * $limit));而不是上面的代码
    • 您在 if 语句中设置它: $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
    • 天哪,我把这一切搞砸了,没有注意到一件简单的事情。非常感谢你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多