Foros del Web » Programando para Internet » PHP »

Espero les sirva, paginado con postgresql

Estas en el tema de Espero les sirva, paginado con postgresql en el foro de PHP en Foros del Web. Buneo, hice una pequeña funcion, para paginado de registros usando postgresql: Espero les funciones: Código PHP: /*   **    Funcion para realizar paginado de consultas con stores proceudres **    **  ejemplo: **  @$Siguiente=$_GET['Siguiente']; **  $Rows=paginado($conn,$sp,$Siguiente,$menu); **    $conn <- Recurso de Conexion activa **    $menu <- Variable que contiene HTML del menu para mostrar la paginación. **    $sp   <- Store Procedure ejem: 'sp_bus_tblalumnogrupo([Parametros]) AS (.........)' ...
  #1 (permalink)  
Antiguo 12/04/2006, 14:53
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
Espero les sirva, paginado con postgresql

Buneo, hice una pequeña funcion, para paginado de registros usando postgresql:
Espero les funciones:
Código PHP:

/*  
**    Funcion para realizar paginado de consultas con stores proceudres
**   
**  ejemplo:
**  @$Siguiente=$_GET['Siguiente'];
**  $Rows=paginado($conn,$sp,$Siguiente,$menu);
**    $conn <- Recurso de Conexion activa
**    $menu <- Variable que contiene HTML del menu para mostrar la paginación.
**    $sp   <- Store Procedure ejem: 'sp_bus_tblalumnogrupo([Parametros]) AS (.........)'
**             o un string query, apartir de FROM.. ejm: '[tabla] WHERE [condiciones]'
**
**    Parametros extra:
**    $limit <- Cantidad de registros a mostrar por pagina.
*/
function paginado($conn,$sp,$offset,&$menu,$limit=20)
{
    
$Cant=count(pg_fetch_all(pg_query($sql "SELECT * FROM ".$sp." ")));
    if(
$offset>$Cant)
        
$offset=$Cant;
    
    if(
$offset==0)
        
$offset=10;
            
    if(
$offset=='all')
        
$sql="SELECT * FROM ".$sp."";
    else  
       
$sql="SELECT * FROM ".$sp." LIMIT ".$limit." OFFSET ".$offset." ";
    
    
$result pg_query($conn$sql);    
    
$ciclos=floor($Cant/$limit);
    if(
$ciclos>8)
        
$ciclos=8;
        
    
$a=$limit;
    
$cont=0;    
    
$path=$_SERVER['QUERY_STRING'];    
    
    if(
ereg('Siguiente',$path))
        
$menu='<div class="Paginacion">| <a href="?'.str_replace("Siguiente=".$_GET['Siguiente'], "Siguiente=all"$path).'">Todos</a> | ';
    else
        
$menu='<div class="Paginacion">| <a href="?'.$_SERVER['QUERY_STRING'].'&Siguiente=all">Todos</a> |';    
        
        for(
$x=1;$x<$ciclos;$x++)
        {
             if(
ereg('Siguiente',$path))
                  
$menu.='<a href="?'.str_replace("Siguiente=".$_GET['Siguiente'], "Siguiente=".$a$path).'">Pagina '.$x.'</a> | ';
            else
                 
$menu.='<a href="?'.$_SERVER['QUERY_STRING'].'&Siguiente='.$a.'">Pagina '.$x.'</a> | ';
     
          
$a+=$limit;
          
$cont++;            
        }
    
$ultimo=$Cant-$limit;
    if(
ereg('Siguiente',$path))
        
$menu.='<a href="?'.str_replace("Siguiente=".$_GET['Siguiente'], "Siguiente=".$ultimo$path).'">Final</a> | ';
    else
        
$menu.='<a href="?'.$_SERVER['QUERY_STRING'].'&Siguiente='.$ultimo.'">Final</a> |';    
        
    
$menu.='</div>';
return 
$result;


Ejemplo:
Código PHP:

$sp
="StoreProcedure_Buscar_Usuarios($id) AS (id integer, nombre character varying,  ap character varying, am character varying, rfc character varying)";
@
$Siguiente=$_GET['Siguiente'];
$Alumnos=paginado($conn,$sp,$Siguiente,$menu);

echo
'<table width="700" border="0" cellspacing="0" cellpadding="0" id="Tabla1">
  <tr>
    <th>Tabla de Usuarios</th>
  </tr>
    <tr>
    <td>'
.$menu.'</td>
  </tr>
  <tr>
    <td><table width="100%" border="0" cellspacing="1" cellpadding="0">
      <tr>
        <td width="7%" class="SubTitulo">row</td>
        <td width="7%" class="SubTitulo">id</td>
        <td width="15%" class="SubTitulo">Mat</td>
        <td width="6%" class="SubTitulo">Rup_id</td>
        <td width="28%" class="SubTitulo">ap</td>
        <td width="11%" class="SubTitulo">am</td>
        <td width="16%" class="SubTitulo">nom</td>
        <td width="17%" class="SubTitulo">curp</td>
      </tr>'
;

$y=1;
while(
$row=pg_fetch_row($Alumnos))
    {
     
     echo
'<tr>
         <td class="'
.$b.'">'.$y.'</td>
        <td>'
.$row[0].'</td>
        <td>'
.$row[1].'</td>
        <td>'
.$row[2].'</td>
        <td>'
.$row[3].'</td>
      </tr>'
;
      
$y++;
     }
      
      
echo
'</table>
         <tr>
    <td>'
.$menu.'</td>
  </tr>
    </td>
  </tr>
</table>'

__________________
There is no place like 127.0.0.1

Última edición por kalolo; 18/04/2006 a las 17:06
  #2 (permalink)  
Antiguo 12/04/2006, 17:00
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 18 años, 1 mes
Puntos: 0
vale compare...se agradece

saludos
__________________
Share what you know...learn what you don't :si:
  #3 (permalink)  
Antiguo 12/04/2006, 18:59
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
oops!,.. nomas que permitanme tantito :$ ya salieron unos errorcisto a la hora de trabajar en modelos de vista, eem.... no respeta los valores del post, y quiero modificarlo para que cuando la tabla tenga no se digamo.. 1k de registros no te ponga 100 links de pagina,

Pero en cuanto tenga listo eso lo pongo :)
Igual he visto que ya tienen bastantes rutinas para paginacion, pero una mas no esta de "mas" xD

saludos!
__________________
There is no place like 127.0.0.1
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 00:00.