2010-03-30 14 views
5

Ok, seguí las instrucciones del ejemplo a la perfección. En definitiva, la paginación funciona, más o menos.Paginación Codeigniter - Estoy perplejo

Obtengo todas las páginas enumeradas: 1 | 2 | > | Último. Etc.

El primero está activo, como debería ser. Hice las consultas correctamente también, porque cada enlace dará como resultado la consulta correcta.

Sin embargo, cuando hago clic en el número 2, me mostrará el siguiente conjunto de productos correctamente, pero se mostrará la paginación de la primera página.

Cualquiera que sea el botón de paginación en el que haga clic, devolverá el conjunto de paginación principal: 1 (seleccionado) | 2 | > | Último. ¡Nunca cambia! Pierdo la paciencia, ¿alguien puede ayudar?

+1

Puede usted publique su código para la paginación para que podamos tener una idea de lo que está sucediendo. – Cory

Respuesta

9

Creo que podría saber qué está pasando. Debe indicarle a la biblioteca de paginación qué segmento de la URL contiene el desplazamiento.

Por ejemplo, si su URL es/productos/Navegación/all/20, tiene que decirle a CodeIgniter que el cuarto segmento tiene el

compensar
$config['uri_segment'] = 4; 

El valor predeterminado de la biblioteca se URL segmento # 3. Si el desplazamiento en su URL no está en la posición 3 y se le olvida informar a la biblioteca de paginación de esto, interpretará el segmento incorrecto como el desplazamiento. Esto puede llevar al tipo de comportamiento que describe arriba, donde la paginación no parece cambiar.

+0

¡Lo hiciste! ¡No encontré esa configuración en la documentación, pero la hizo funcionar bien! ¡WOOHOO! Tu rock – willbeeler

+2

Eso es genial. Solo lo sé porque sufrí el mismo dolor cuando comencé a usar la paginación :-) Recuerdo haber tenido el mismo comportamiento y preguntarme qué demonios estaba pasando. –

0

¿Qué ejemplo?

echo $this->pagination->create_links(); 

^^ ¿Esto es en su opinión?

1

También me encontré con el mismo error y finalmente pude arreglarlo. Solo pensé compartir el script del código, puede ser que alguien pueda usarlo.

=====> Controlador

// Default function 
function index() 
{ 
    // Display listing  
    $this->listing();   
} 

function listing($argDataArr = array()) 
{ 

    // Initialize pagination 
    $pageArr['base_url'] = $this->config->item('categoryBeAction')."/listing"; 
    $pageArr['total_rows'] = 15; //assume 
    $pageArr['per_page'] = 5; //assume 
    //You need to tell the pagination library which segment of the URL holds the offset.   
    $pageArr['uri_segment'] = 4; //URL eg: http://localhost/myproject/index.php/backend/category/listing/5 
    $this->pagination->initialize($pageArr); 

    // Get list of categories 
    // Create data array and pass data to get function 
    $dataArr['limitRows'] = $pageArr['per_page']; 
    $dataArr['limitOffset'] = $this->uri->segment(4); //the dynamic value from this segment will be used as offSet 
    $viewArr['listArr'] = $this->category_model->get($dataArr); 

    //rest of the code... 

} 

======> Modelo

function get($argDataArr = array()) 
{ 

    //Select the fields required 
    $this->db->select('id, name, parent_id, status'); 
    $this->db->from($this->config->item('tbl_category','dbtables')); 

    $this->db->where('parent_id', $parentId); 
    $this->db->limit($argDataArr['limitRows'], $argDataArr['limitOffset']); 
    $this->db->order_by("name", "asc"); 
     $query_result = $this->db->get(); 

    return $query_result; 
} 

======> Ver página

  <!-- Pagination -->      
      <tr> 
      <td align="right"> 
       <?php echo $this->pagination->create_links(); ?>       
      </td> 
      </tr>