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>';