I have 15 ADs on my site and I did the paging for 10 ADs per page. Ok, CodeIgniter is doing paging with 10 ADs / Page, but on the second and last page CodeIgniter is showing 10, when it should only show 5. This is the Controller code:
function index($offset = 0) {
// load pagination library
$this->load->library('pagination');
$limit = 10;
$config = array();
$config['base_url'] = base_url('');
$config['uri_segment'] = 1;
$config['total_rows'] = $this->classificados_model->somarTodos($f_estado, $f_cidade);
$config['per_page'] = $limit;
$config['use_page_numbers'] = TRUE;
$config['num_links'] = 2;
$config['first_link'] = 'Primeiro';
$config['last_link'] = 'Último';
$config['next_link'] = '»';
$config['prev_link'] = '«';
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$config['prev_tag_open'] = '<li>';
$config['prev_tag_close'] = '</li>';
$config['next_tag_open'] = '<li>';
$config['next_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="active"><a href="javascript:">';
$config['cur_tag_close'] = ' <span class="sr-only">(current)</span> </a></li>';
$config['full_tag_open'] = '<nav>
<ul class="pagination">';
$config['full_tag_close'] = '</ul>
</nav>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$this->pagination->initialize($config);
$dados['anuncios'] = $this->classificados_model->buscaAnuncios($limit, $offset, $f_estado, $f_cidade);
$dados['paginacao'] = $this->pagination->create_links();
}
Model: Classifieds_Model
function buscaAnuncios($limit, $offset, $f_estado, $f_cidade) {
$this->db->limit($limit, $offset);
$where = array(
'estados.sigla' => $f_estado,
'cidades.nome' => $f_cidade,
'anuncios.anuncio_ativo' => '1',
'usuarios.bloqueado_usuario' => '0',
'usuarios.ativado_usuario' => '1'
);
$this
->db
->select("*")
->from("usuarios")
->join("anuncios", "anuncios.usuario_anuncio_id = usuarios.id_usuario", "inner")
->join("estados", "estados.id = usuarios.estado_usuario", "inner")
->join("cidades", "cidades.id = usuarios.cidade_usuario AND estados.id = cidades.id_uf", "inner")
->order_by("anuncios.data_anuncio","desc");
$query = $this->db->get_where('', $where);
return $query->result_array();
}
Query procedure result from page 2:
SELECT *
FROM ('usuarios')
INNER JOIN 'anuncios' ON 'anuncios'.'usuario_anuncio_id' = 'usuarios'.'id_usuario'
INNER JOIN 'estados' ON 'estados'.'id' = 'usuarios'.'estado_usuario'
INNER JOIN 'cidades' ON 'cidades'.'id' = 'usuarios'.'cidade_usuario' AND estados.id = cidades.id_uf
WHERE 'estados'.'sigla' = 'rj'
AND 'cidades'.'nome' = 'rio de janeiro'
AND 'anuncios'.'anuncio_ativo' = '1'
AND 'usuarios'.'bloqueado_usuario' = '0'
AND 'usuarios'.'ativado_usuario' = '1'
ORDER BY 'anuncios'.'data_anuncio' desc
LIMIT 2, 10
Prints:
Page 1:
prntscr.com/6n4t5x
prntscr.com/6n4sra
Page 2:
prntscr.com/6n4tat
prntscr.com/6n4tg4
Thank you in advance!