我的网站上有9个AD,我用10分页。好吧,codeigniter用10个广告分页,但在第二页和最后一页它应该只显示3个AD,显示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,仅适用于此分页测试。
谢谢高级!
答案 0 :(得分:0)
您使用了$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);
希望这些代码可以解决您的问题