Foros del Web » Programando para Internet » PHP »

Paginator para Postgres

Estas en el tema de Paginator para Postgres en el foro de PHP en Foros del Web. Hola amigos, estoy trabajando en un proyecto de php con postgres y bueno me tope con la clasica paginacion de registros, asi qe busque y ...
  #1 (permalink)  
Antiguo 20/06/2007, 09:29
Avatar de phprim  
Fecha de Ingreso: julio-2006
Ubicación: En mi trabajo
Mensajes: 90
Antigüedad: 17 años, 9 meses
Puntos: 0
Paginator para Postgres

Hola amigos, estoy trabajando en un proyecto de php con postgres y bueno me tope con la clasica paginacion de registros, asi qe busque y no encontre especificamente para postgres , asi que tuve qu realizar unos cambios al paginator de jpinedo y listo,algunos cambios de sintaxis, ahi se los dejo por si alguien lo necesita, saludos

pd:sorry por pegar todo el codigo

<?php
if(empty($_pagi_sql)){
die("<b>Error Paginator : </b>No se ha definido la variable \$_pagi_sql");
}

if(empty($_pagi_cuantos)){
$_pagi_cuantos = 15;
}

if(!isset($_pagi_mostrar_errores)){
$_pagi_mostrar_errores = true;
}

if(!isset($_pagi_conteo_alternativo)){
$_pagi_conteo_alternativo = false;
}

if(!isset($_pagi_separador)){
$_pagi_separador = " | ";
}
$_pagi_nav_estilo="enlace";
if(isset($_pagi_nav_estilo)){
$_pagi_nav_estilo_mod = "class=\"$_pagi_nav_estilo\"";
}else{
$_pagi_nav_estilo_mod = "";
}

if(!isset($_pagi_nav_anterior)){
$_pagi_nav_anterior = "&laquo; Anterior";
}

if(!isset($_pagi_nav_siguiente)){
$_pagi_nav_siguiente = "Siguiente &raquo;";
}

if(!isset($_pagi_nav_primera)){
$_pagi_nav_primera = "&laquo;&laquo; Primera";
}

if(!isset($_pagi_nav_ultima)){
$_pagi_nav_ultima = "&Uacute;ltima &raquo;&raquo;";
}

if (empty($_GET['_pagi_pg'])){
$_pagi_actual = 1;
}else{
$_pagi_actual = $_GET['_pagi_pg'];
}

$_pagi_conteo_alternativo
//En true acepta postgres
if($_pagi_conteo_alternativo == true){
$_pagi_sqlConta = eregi_replace("select[[:space:]](.*)[[:space:]]from", "SELECT COUNT(*) FROM", $_pagi_sql);
$_pagi_result2 = dbQuery($_pagi_sqlConta);
// Si ocurrió error y mostrar errores está activado
if($_pagi_result2 == false && $_pagi_mostrar_errores == true){
die (" Error en la consulta de conteo de registros: $_pagi_sqlConta. Mysql dijo: <b>".mysql_error()."</b>");
}
$_pagi_totalReg = pg_numrows($_pagi_result2);//total de registros
}else{
$_pagi_result3 = dbQuery($_pagi_sql);
if($_pagi_result3 == false && $_pagi_mostrar_errores == true){
die (" Error en la consulta de conteo alternativo de registros: $_pagi_sql. Mysql dijo: <b>".pg_last_error()."</b>");
}
$_pagi_totalReg = pg_Numrows($_pagi_result3);

}
$_pagi_totalPags = ceil($_pagi_totalReg / $_pagi_cuantos);

// La idea es pasar también en los enlaces las variables hayan llegado por url.
$_pagi_enlace = $_SERVER['PHP_SELF'];
$_pagi_query_string = "?";

if(!isset($_pagi_propagar)){
//Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
//Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
$_pagi_propagar = array_keys($_GET);
}elseif(!is_array($_pagi_propagar)){
// si $_pagi_propagar no es un array... grave error!
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
}
// Este foreach está tomado de la Clase Paginado de webstudio
// (http://www.forosdelweb.com/f18/para-paginar-con-php-65528/)
foreach($_pagi_propagar as $var){
if(isset($GLOBALS[$var])){
// Si la variable es global al script
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
}elseif(isset($_REQUEST[$var])){
// Si no es global (o register globals está en OFF)
$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
}
}

// Añadimos el query string a la url.
$_pagi_enlace .= $_pagi_query_string;

//------------------------------------------------------------------------


/*
* Generación de los enlaces de paginación.
*------------------------------------------------------------------------
*/
// La variable $_pagi_navegacion contendrá los enlaces a las páginas.
$_pagi_navegacion_temporal = array();
if ($_pagi_actual != 1){
// Si no estamos en la página 1. Ponemos el enlace "primera"
$_pagi_url = 1; //será el número de página al que enlazamos
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_ pagi_nav_primera</a>";

// Si no estamos en la página 1. Ponemos el enlace "anterior"
$_pagi_url = $_pagi_actual - 1; //será el número de página al que enlazamos
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_ pagi_nav_anterior</a>";
}

// La variable $_pagi_nav_num_enlaces sirve para definir cuántos enlaces con
// números de página se mostrarán como máximo.
// Ojo: siempre se mostrará un número impar de enlaces. Más info en la documentación.

if(!isset($_pagi_nav_num_enlaces)){
// Si no se definió la variable $_pagi_nav_num_enlaces
// Se asume que se mostrarán todos los números de página en los enlaces.
$_pagi_nav_desde = 1;//Desde la primera
$_pagi_nav_hasta = $_pagi_totalPags;//hasta la última
}else{
// Si se definió la variable $_pagi_nav_num_enlaces
// Calculamos el intervalo para restar y sumar a partir de la página actual
$_pagi_nav_intervalo = ceil($_pagi_nav_num_enlaces/2) - 1;

// Calculamos desde qué número de página se mostrará
$_pagi_nav_desde = $_pagi_actual - $_pagi_nav_intervalo;
// Calculamos hasta qué número de página se mostrará
$_pagi_nav_hasta = $_pagi_actual + $_pagi_nav_intervalo;

// Ajustamos los valores anteriores en caso sean resultados no válidos

// Si $_pagi_nav_desde es un número negativo
if($_pagi_nav_desde < 1){
// Le sumamos la cantidad sobrante al final para mantener el número de enlaces que se quiere mostrar.
$_pagi_nav_hasta -= ($_pagi_nav_desde - 1);
// Establecemos $_pagi_nav_desde como 1.
$_pagi_nav_desde = 1;
}
// Si $_pagi_nav_hasta es un número mayor que el total de páginas
if($_pagi_nav_hasta > $_pagi_totalPags){
// Le restamos la cantidad excedida al comienzo para mantener el número de enlaces que se quiere mostrar.
$_pagi_nav_desde -= ($_pagi_nav_hasta - $_pagi_totalPags);
// Establecemos $_pagi_nav_hasta como el total de páginas.
$_pagi_nav_hasta = $_pagi_totalPags;

// Hacemos el último ajuste verificando que al cambiar $_pagi_nav_desde no haya quedado con un valor no válido.
if($_pagi_nav_desde < 1){
$_pagi_nav_desde = 1;
}
}
}

for ($_pagi_i = $_pagi_nav_desde; $_pagi_i<=$_pagi_nav_hasta; $_pagi_i++){
//Desde página 1 hasta última página ($_pagi_totalPags)

if ($_pagi_i == $_pagi_actual) {
// Si el número de página es la actual ($_pagi_actual). Se escribe el número, pero sin enlace y en negrita.
$_pagi_navegacion_temporal[] = "<span ".$_pagi_nav_estilo_mod.">$_pagi_i</span>";
}else{
// Si es cualquier otro. Se escibe el enlace a dicho número de página.
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_i."'>".$_ pagi_i."</a>";
}
}

if ($_pagi_actual < $_pagi_totalPags){
// Si no estamos en la última página. Ponemos el enlace "Siguiente"
$_pagi_url = $_pagi_actual + 1; //será el número de página al que enlazamos
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_ pagi_nav_siguiente</a>";

// Si no estamos en la última página. Ponemos el enlace "Última"
$_pagi_url = $_pagi_totalPags; //será el número de página al que enlazamos

$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_ pagi_nav_ultima</a>";
}
$_pagi_navegacion = implode($_pagi_separador, $_pagi_navegacion_temporal);

//------------------------------------------------------------------------


/*
* Obtención de los registros que se mostrarán en la página actual.
*------------------------------------------------------------------------
*/
// Calculamos desde qué registro se mostrará en esta página
// Recordemos que el conteo empieza desde CERO.
$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;

// Consulta SQL. Devuelve $cantidad registros empezando desde $_pagi_inicial
//$_pagi_sqlLim = $_pagi_sql." LIMIT $_pagi_cuantos";
//Cambio de sintaxis para postgressql
$_pagi_sqlLim = $_pagi_sql." OFFSET $_pagi_inicial LIMIT $_pagi_cuantos";


$_pagi_result = dbQuery($_pagi_sqlLim);
// Si ocurrió error y mostrar errores está activado
if($_pagi_result == false && $_pagi_mostrar_errores == true){
die ("Error en la consulta limitada: $_pagi_sqlLim. Mysql dijo: <b>".pg_last_error()."</b>");
}

//------------------------------------------------------------------------


/*
* Generación de la información sobre los registros mostrados.
*------------------------------------------------------------------------
*/
// Número del primer registro de la página actual
$_pagi_desde = $_pagi_inicial + 1;

// Número del último registro de la página actual
$_pagi_hasta = $_pagi_inicial + $_pagi_cuantos;
if($_pagi_hasta > $_pagi_totalReg){
// Si estamos en la última página
// El ultimo registro de la página actual será igual al número de registros.
$_pagi_hasta = $_pagi_totalReg;
}

$_pagi_info = "desde el $_pagi_desde hasta el $_pagi_hasta de un total de $_pagi_totalReg";
//------------------------------------------------------------------------
/**
* Variables que quedan disponibles después de incluir el script vía include():

* $_pagi_navegacion Cadena que contiene la barra de navegación con los enlaces a las diferentes páginas.
*/
?>
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 17:00.