我的网站上有9个AD,我用10进行分页。好的,代码点火器用10个广告进行分页,但在第二页和最后一页中,它应该只显示3个广告,显示10(7另一页和应该单独显示的3个)。
这是我的代码:
(控制器)
class Classificados extends MY_Controller {
public function index($offset = 0) {
// load pagination library
$this->load->library('pagination');
$limit = 6;
$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();
(型号)
Classificados_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();
}
第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
我的路线php:
$route['(:num)'] = "classificados/index/$1";
Ps:现在我有19个AD,并将限制更改为6,仅用于此分页测试。
提前感谢!
您使用了$config['base_url']= base_url('');
。它将生成类似的链接
baseurl/1 it means 1 is controller name
baseurl/2 means 2 is controller name.
In that case you need to use router function.
或者你也可以使用这个。这将解决您的问题
$config['base_url'] = base_url().'YOUR_CONTROLLER/index';
$config['uri_segment'] = 3;
更新
你说你的路由器包含这个代码
$route['(:num)'] = "classificados/index/$1";
在这种情况下,除了模型限制查询之外,所有代码都可以
在您的模型的buscaAnuncios
功能
$this->db->limit($limit, $offset);//this line is wrong
实际上$offset
包含页码,所以您没有得到实际的偏移量。
用代码替换那行
$offset--;
if($offset<0)
{
$offset=0;
}
$this->db->limit($limit, $offset*$limit);
希望这些代码能解决您的问题