Foros del Web » Programando para Internet » PHP » CodeIgniter »

Paginar resultados

Estas en el tema de Paginar resultados en el foro de CodeIgniter en Foros del Web. Buenas Estoy intentando usar el paginador de CI pero no logro dar justo para que me funcione, solo me muestra los 1ros 5 resultados, luego ...
  #1 (permalink)  
Antiguo 10/09/2013, 09:00
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Paginar resultados

Buenas

Estoy intentando usar el paginador de CI pero no logro dar justo para que me funcione, solo me muestra los 1ros 5 resultados, luego cualquier cosa, es un buscador y necesito paginar los resultados

En el controlador:

Código PHP:
$this->load->library("pagination");
            
$config = array();
            
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
            
            
$config["base_url"] = base_url() . "index.php?/home/paises/".$page."/";
            
$config["total_rows"] = $this->search->record_count();
            
$config["per_page"] = 5;
            
$config["uri_segment"] = 4;
            
$this->pagination->initialize($config);
            
$data["results"] = $this->search->fetch_countries($keyword,         $config["per_page"], $page);

              
//esto lo imprimo en la view...
              
echo $this->pagination->create_links(); 
El modelo:

Código PHP:
public function record_count() {
        return 
$this->db->count_all("paises");
    }
 
    public function 
fetch_countries($searchterm$limit$start) {
        
$this->db->select("miscampos");
        
$this->db->like('pais'$searchterm);
        
$this->db->limit($limit$start);
        
$query $this->db->get("paises");
 
        if (
$query->num_rows() > 0) {
            foreach (
$query->result() as $row) {
                
$data[] = $row;
            }
            return 
$data;
        }
        return 
false;
        } 
Veo el paginador, me tira los 1ros 5 resultados, luego muestra todos, sin el like que le hago a la consulta....y ademas no funciona muestra siempre lo mismo...
  #2 (permalink)  
Antiguo 10/09/2013, 10:34
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Paginar resultados

yo te recomiendo que hagas esa paginacion a punta de php html y algoritmia, yo en mi caso hice la paginacion asi, te la dejare para que te veas si te sirve, aunque se ve algo fea de todas maneras funciona y eso es lo importante

la vista Factura_view:

Código HTML:
<table>
<tr>
	<td><a href="<?php echo site_url('Factura_controller/administracion?principio=0')?>"><b>Principio</b></a></td>
	<?php
	if($pag_actual>0){
	?>
	<td><a href="<?php echo site_url('Factura_controller/administracion?anterior='.$pag_actual)?>"><b>Anterior</b></a></td>
	<?php
	}
		for($i=$comienzo; $i<$fin; $i++)
		{

			$k=$i+1;
			if($i!=$pag_actual)
			{
			?>
				<td><a href="<?php echo site_url('Factura_controller/administracion?inicio='.$i)?>"><font color="blue"><b><?php echo $k ?></b></font></a></td>
				<td>-</td>
			<?php
			}
			else
			{
				echo "<td>".$k."</td>";
				echo "<td>-</td>";
			}

		}
	$comparador=$i-1;
	if($pag_actual<$comparador)
	{
	?>
		<td><a href="<?php echo site_url('Factura_controller/administracion?siguiente='.$pag_actual)?>"><b>Siguiente</b></a></td>
	<?php
	}
	?>
<td><a href="<?php echo site_url('Factura_controller/administracion?final='.$i)?>"><b>Final</b></a></td>	
</tr>
</table> 

el controlador Factura_controller


Código PHP:
    public function administracion()
    {

            
//variable que indica cuantos registros se mostraran por link
            
$cant_reg 5;

            
//se obtiene del modelo el conteo de los registros en total
            
$total_registros $this->Factura_model->count();

            
//division para obtener el total de links (paginas) que se mostraran    en la paginacion
            
$datos['total_paginas'] = ceil($total_registros/$cant_reg);

            
/*condiciones y operaciones para la paginacion, las cuales se inician con una variable enviada via url desde la vista 
            Factura_view, para saber si se eligio algun numero depagina especifico, anterior, siguiente, primera, ultima y guardar
            la operacion en la variable $inicio, la cual se pasa al modelo (Factura_model), al metodo get_consulta y le indica 
            a la funcion LIMIT del query por cual registro debe empezar a mostrar, si no se cumple ninguna condicion, es decir si 
            el usuario no le dio click a ningun boton de la paginacion la variable $inicio queda en 0, diciendole al limit que
            comience con el registro numero 0
            */
            
if(isset($_GET['inicio']))
            {
                
$inicio=$_GET['inicio']*5;
                
$datos['actual']=$_GET['inicio'];
            }
            elseif(isset(
$_GET['anterior']))
            {
                
$datos['actual']=$_GET['anterior']-1;
                
$inicio=$datos['actual']*5;
            }
            elseif(isset(
$_GET['siguiente']))
            {
                
$datos['actual']=$_GET['siguiente']+1;
                
$inicio=$datos['actual']*5;
            }
            elseif (isset(
$_GET['principio']))
            {
                
$inicio=$_GET['principio'];
            }
            
            elseif (isset(
$_GET['final']))
            {
                
$inicio=floor($total_registros/$cant_reg)*$cant_reg;
                
$datos['actual']=$inicio/5;
            }
            else
            {
                
$inicio=0;
            }

            
//esta condicion va corriendo las posiciones de los enlaces de la paginacion

            
if((isset($datos['actual']))&&($datos['actual']>=5))
            {
                
$datos['comienzo']=$datos['actual']-4;
                
$datos['fin']=$datos['actual']+6;
            }
            else
            {
                
$datos['comienzo']=0;
                
$datos['fin']=10;
            }
            
//esta condicion.... no me acuerdo que hace pero bueeeno.

            
if($datos['fin']>=$datos['total_paginas'])
            {
                
$datos['fin']=$datos['total_paginas'];
                
$datos['comienzo']=$datos['fin']-10;
            }
            
//esta condicion es para saber, segun el usuario loggeado, cual es el campo que debe mostrar en la consulta que se 
            //encuentra en Factura_model en la funcion get_consulta

            
if($user->username=="fabian")
            {
                
$campo='nom_ciudad';
            }
            if(
$user->username=="mauro")
            {
                
$campo='nom_dpto';
            }
            
//hay que asignarle la posicion en un arreglo de lo que se quiere mandar a la vista

            //llamamos al metodo del modelo en donde esta la consulta de la factura, le pasamos los parametros que indican el nombre
            //de un campo definido arriba, y las variables cant_reg e inicio que ya indique para que sirven en laparte de arriba

            
$datos['sql'] = $this->Factura_model->get_consulta($campo,$cant_reg,$inicio);
     } 

y el modelo Factura_model


Código PHP:
    public function get_consulta($campo,$cant_reg,$inicio)
    {

            
$this->db->select(
             
'df.id,pr.nombre,es.nom_sede,df.no_factura,df.generada,df.vencimiento,df.concepto,df.descuento,df.valor,
              df.recibido,df.fecha_elab,'
.$campo);

            
$this->db->from('datos_factura df');
            
$this->db->join('proveedores pr','df.id_proveedor = pr.id');
            
$this->db->join('establecimientos es','df.id_estab = es.id');
            
$this->db->join('ciudades ci','es.id_ciudad = ci.id_ciudad');
            
$this->db->join('dptos dp','ci.id_dpto = dp.id_dpto');
            
$this->db->order_by('df.no_factura','asc');
            
$this->db->limit($cant_reg $inicio);

        
//el $this->db->get() es para retornar el query de arriba, y se lo asignamos a la posicion 'sql' de la variable $query
        
$this->consulta $this->db->get();

        return 
$this->consulta;

    }
    public function 
count()
    {
        
//esta consulta cuenta los datos de la factura para hacer el dropdown
        
return $this->db->count_all('datos_factura');
    } 

eso fue lo que yo hice, ojala te funcione, recuerda, lo importante es que funcione
  #3 (permalink)  
Antiguo 10/09/2013, 11:03
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: Paginar resultados

Hola rober, no es mi intencion modificar lo que tengo hecho.

Ademas de que el problema es:

1- No me toma el searchterm, ya que uso ajax, y envio el post del search por ajax y al clickear en otra pagina la pierdo.

2- No me toma el limit ni el offset, veo que lo toma mal y no me carga el limit y start....

Esos son mis problemas del cual no anda...

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:56.