Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么分页会在下一页中重复某些数据?_Php_Codeigniter_Pagination - Fatal编程技术网

Php 为什么分页会在下一页中重复某些数据?

Php 为什么分页会在下一页中重复某些数据?,php,codeigniter,pagination,Php,Codeigniter,Pagination,我正在使用分页对页面中的数据进行分页,该数据是一个照片名称(例如:11abf76631b0c9daf2284825c3b6ade7.jpg) 问题是在下一页中频繁显示照片。 数据库中的总数据是30个元素,这里显示40个元素 第1页 第2页 控制器:照片\u相册 $this->load-> library('pagination'); $config['base_url'] = base_url()."admin/photos_album/display"; $config['tot

我正在使用分页对页面中的数据进行分页,该数据是一个照片名称
(例如:11abf76631b0c9daf2284825c3b6ade7.jpg)

问题是在下一页中频繁显示照片。
数据库中的总数据是30个元素,这里显示40个元素

第1页 第2页

控制器:
照片\u相册

$this->load-> library('pagination');
$config['base_url'] = base_url()."admin/photos_album/display";
$config['total_rows'] = $this->photos_album_model->count_all();
$config['per_page'] = 20;
$config['num_links'] = 5;
$config['uri_segment'] = 4;
$config['use_page_numbers'] = TRUE;
$config['full_tag_open'] = "<div id='pagination' class='clear'>";
$config['full_tag_close'] = "</div>";
$config['prev_link'] = "<span class='pe-7s-angle-right fontSize_20'></span>";
$config['prev_tag_open'] = "<div id='prev' class='float_right'>";
$config['prev_tag_close'] = "</div><div id='counter'>";
$config['cur_tag_open'] = "<div class='float_right current'>";
$config['cur_tag_close'] = "</div>";
$config['num_tag_open'] = "<span class='float_right'>";
$config['num_tag_close'] = "</span>";
$config['next_link'] = "<span class='pe-7s-angle-left fontSize_20'></span>";
$config['next_tag_open'] = "<div id='next' class='float_right'>";
$config['next_tag_close'] = "</div>";
$config['first_link'] = "";
$config['last_link'] = "";
$this->pagination->initialize($config);
$page = ($this->uri->segment(4)) ? $this->uri-> segment(4) : 0;
$data['db_data'] = $this->photos_album_model->get_all($config["per_page"], $page);
$data['pagination_links'] = $this->pagination->create_links();
查看

<div class="main_block">
   <div class="title"><span class="pe-7s-browser fontSize_18"></span> <h2 class="font_2"></h2></div>
    <div class="content fontSize_18 font_1">
        <div id="images" class="clear gallery clearfix">
            <?php
            if ($db_data->num_rows() > 0) {
                foreach ($db_data->result() as $photo) {
                    ?>
                    <div class="float_right"><a href="<?php echo base_url(); ?>assets/uploads/<?php echo $photo->image;?>" class="hyperlink" rel="photofly"><img src="<?php echo base_url(); ?>assets/uploads/thumbs/<?php echo $photo->image;?>" alt="" /></a><div class="tools"> <a href="#"><span class="pe-7s-note editBtn"></span></a><a href="<?php echo base_url() . 'admin/photos_album/delete_processing/' . $photo->photo_id ?>" onclick="return confirm('Do you want to delete this item ?')" ><span class="pe-7s-close-circle delBtn"></span></a></div></div>
                    <?php
                }
            }
            ?>
        </div>
    </div>
    <?php echo $pagination_links; ?>
</div>


注意:我的分页页面从0开始,而不是从1开始,我不知道这是否正确。

您在这里的逻辑有错误:

$page = ($this->uri->segment(4)) ? $this->uri-> segment(4) : 0;
$data['db_data'] = $this->photos_album_model->get_all($config["per_page"], $page);

...

public function get_all($limit, $start) {
    return $this-> db-> limit( $limit, $start)-> get('photo_album');
}
您正在向函数发送两个参数:每页的项目数和页码。然而,在您的方法中,您将它们视为限制(正确)和开始(错误)

您将需要以下内容:

public function get_all($limit, $page) {
    return $this-> db-> limit($limit, ($page * $limit) )-> get('photo_album');
}

您还应该添加一个固定的
orderby
子句,以确保每个请求的顺序相同。

问题的原因很简单

问题出在这片土地上

改变

$config['use_page_numbers'] = TRUE;

$config['use_page_numbers'] = FALSE;

就是这样。

查询是否有
或rder BY
@Dagon:不,我没有使用
或rder BY
。除了下面jeroen的伟大答案之外,你应该知道,因为数据库中没有继承顺序。我这样做了,但有一个新问题。第一页包含20个图像,但下一页为空,请注意,仍有10个图像未显示
public function get_all($limit,$start){return$this->db->limit($limit,($start*$limit))->order_by('photo_id','desc')->get('photo_album');}
@LionKing你检查过变量的值了吗?@LionKing如果你想避免这种情况并使用第1、2页等,只需使用
($page-1)*$limit
。那么您的第1页将是第一页,依此类推。@LionKing而不是
($page*$limit)
谢谢您的帮助。问题解决了,问题的原因很简单。
$config['use_page_numbers'] = FALSE;