Foros del Web » Programando para Internet » PHP »

CodeIgniter Problema al paginar resultados

Estas en el tema de Problema al paginar resultados en el foro de PHP en Foros del Web. Hola nuevamente, estoy intentando hacer una paginación de resultados que obtengo de una consulta a la base de datos, pero tengo una dificultad, pues el ...
  #1 (permalink)  
Antiguo 19/10/2010, 11:27
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Pregunta Problema al paginar resultados

Hola nuevamente, estoy intentando hacer una paginación de resultados que obtengo de una consulta a la base de datos, pero tengo una dificultad, pues el paginador como tal navega, osea, cambia de link pero los resultados se mantienen en el mismo lugar.

El código del modelo users_query.php
Código PHP:
Ver original
  1. <?php
  2. class Users_query extends Model{
  3.  
  4.     function Users_query()
  5.     {
  6.         parent::Model();
  7.     }
  8.  
  9.     // Mostrar Usuarios
  10.     function users_query_select()
  11.     {
  12.         $this->db->limit(10, 0);
  13.         return $this->db->get('gd_usuarios');
  14.     }
  15.     function users_query_select_count()
  16.     {
  17.         return $this->db->count_all('gd_usuarios');
  18.     }
  19. }

Controlador users.php
Código PHP:
Ver original
  1. <?php
  2. class Users extends Controller{
  3.  
  4.     function __construct()
  5.     {
  6.         parent::Controller();
  7.     }
  8.  
  9.     function index()
  10.     {
  11.         $this->load->model('/cpanel/Users_query');
  12.        
  13.         $config_pagination['base_url']        = base_url().'/cpanel/users/index';
  14.         $config_pagination['total_rows']    = $this->Users_query->users_query_select_count();
  15.         $config_pagination['per_page']        = '10';
  16.         $config_pagination['num_links']        = '3';
  17.         $config_pagination['uri_segment']    = '4';
  18.         $this->pagination->initialize($config_pagination);
  19.  
  20.         $users_show['users_query_get'] = $this->Users_query->users_query_select($config_pagination);
  21.         $this->load->view('/cpanel/users', $users_show);
  22. }

Y la vista users.php
Código PHP:
Ver original
  1. <?php
  2. $this->table->set_heading(array(
  3.                         'ID',
  4.                         'Nombre de Usuario',
  5.                         'Correo Electr&oacute;nico',
  6.                         'Nombre de Login',
  7.                         'Nivel de Acceso',
  8.                         'Editar',
  9.                         'Eliminar'));
  10. foreach($users_query_get->result_array() as $users_row):
  11.     $this->table->add_row(array(
  12.                         $users_row['usuario_ID'],
  13.                         $users_row['usuario_nombre'],
  14.                         mailto($users_row['usuario_email'], $users_row['usuario_email']),
  15.                         $users_row['usuario_login'],
  16.                         $users_row['usuario_roll'],
  17.                         anchor('/cpanel/#', 'Editar'),
  18.                         anchor('/cpanel/#', 'Eliminar')));
  19. endforeach;
  20.  
  21. echo $this->table->generate();
  22. echo $this->pagination->create_links();
  23. ?>

Puede ser que el problema esté en la consulta (modelo), por la manera del LIMIT, pero la verdad que no doy con el asunto, como dije antes, el paginador navega, si estoy en el index pasa esto: 1 2 3 4 > Last › y si navego hasta la página 4: < 1 2 3 4 5 6 >... pero los resultados se mantienen del 1 al 10 en la tabla que muestra la vista...

¿Qué es lo que estoy haciendo mal ahora?

Gracias de antemano
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #2 (permalink)  
Antiguo 19/10/2010, 11:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al paginar resultados

el método users_query_select() no acepta argumentos, y tu le pasas la configuración de $config_pagination a dicho método...

quizá el problema es que no usas aún el objeto de paginación para extraer los resultados...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/10/2010, 14:45
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: Problema al paginar resultados

Cita:
Iniciado por pateketrueke Ver Mensaje
el método users_query_select() no acepta argumentos, y tu le pasas la configuración de $config_pagination a dicho método...

quizá el problema es que no usas aún el objeto de paginación para extraer los resultados...
En efecto, eso es justo lo que estoy haciendo, de otra manera no funciona la paginación.

Increíble, pero tenía razón, el problema estaba en la manera que planteaba el "LIMIT", después de toda una tarde el modelo users_query.php ha quedado así:
Código PHP:
Ver original
  1. // Mostrar Usuarios
  2. function users_query_select()
  3. {
  4.     $limit = 0;
  5.     if($this->uri->segment(4))
  6.     {
  7.         $limit = $this->uri->segment(4);
  8.     }
  9.     $this->db->limit($limit);
  10.     return $this->db->get('gd_usuarios', 10, $limit);
  11. }
y en el controlador le eliminé la linea:
Código PHP:
Ver original
  1. $config_pagination['per_page'] = '10';
pues ya no cumplía ninguna función... Ufff estoy sofocado...

Gracias de todas maneras pateketrueke, un saludo
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 25/10/2010, 11:20
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Exclamación Respuesta: Problema al paginar resultados

Retomo el tema, yo sé que mi problema es puro php, pero como estoy trabajando sobre éste mismo archivo, prefiero no abrir otro post.

El asunto es que en el mismo modelo tengo una función que me devuelve los resultados de una búsqueda:
Código PHP:
Ver original
  1. <?php
  2. // Buscar Usuarios
  3. function users_query_search($count_all)
  4. {
  5.     $limit = 0;
  6.     if($this->uri->segment(5))
  7.     {
  8.         // valor inicial $limit = 10
  9.         $limit = $this->uri->segment(5);
  10.     }
  11.     $this->db->limit($limit);
  12.     $search = $this->input->post('buscar');
  13.     $this->db->where("MATCH(usuario_nombre, usuario_email, usuario_login)
  14.                    AGAINST('$search' IN BOOLEAN MODE)", NULL, FALSE);
  15.     return $this->db->get('gd_usuarios', 10, $limit);
  16.     $count_all = $this->db->count_all('gd_usuarios');
  17.     return $count_all;
  18. }
  19. ?>
y en el controlador tengo lo siguiente:
Código PHP:
Ver original
  1. <?php
  2. function users_search()
  3. {
  4.     $this->load->model('/cpanel/Users_query');
  5.    
  6.     $config_pagination['base_url']        = base_url().'/cpanel/users/users_search';
  7.     $config_pagination['total_rows']    = $this->Users_query->users_query_search($count_all);
  8.     $config_pagination['num_links']        = '3';
  9.     $config_pagination['uri_segment']    = '4';
  10.     $this->pagination->initialize($config_pagination);
  11.  
  12.     $users_show['users_query_search'] = $this->Users_query->users_query_search($config_pagination);
  13.     $this->load->view('/cpanel/users_search', $users_show);    
  14. }
  15. ?>

Al hacer la búsqueda me retorna los resultados esperados con el límite esperado (10) pero me da un mensaje de error diciendo que la variable $count_all no está definida en controlers/cpanel/users.php en esta linea $config_pagination['total_rows'] = $this->Users_query->users_query_search($count_all); y me imagino que por esa causa es el otro error que me da, pues el paginado no funciona, pero creo que debo resolver esto antes y ya too marchará... Ojalá...

Gracias de antemano...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose

Etiquetas: paginar, resultados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:35.