Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2006, 14:53
Avatar de kalolo
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