Foros del Web » Programando para Internet » PHP »

Paginación

Estas en el tema de Paginación en el foro de PHP en Foros del Web. holas a todos, como hago paginacion con php y postgre? he visto varios ejemplos con mysql y los he adaptado pero no me funcionan, (quizas ...
  #1 (permalink)  
Antiguo 04/07/2006, 09:34
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
Paginación

holas a todos,

como hago paginacion con php y postgre?

he visto varios ejemplos con mysql y los he adaptado pero no me funcionan, (quizas este haciendo algo mal) pero queria saber si existia algun ejemplo con postgre y no con mysql...
__________________
.-._.-. [email protected]_.-.
  #2 (permalink)  
Antiguo 04/07/2006, 10:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En principio PostgreSQL soporta "LIMI" al igual que Mysql (creo que el orden de los parámetros es alreves? en PostgreSQL) ... En ese caso no te resultaría muy complicado adaptar sistemas ya hechos tipo "Paginator de Jpinedo" o similares.

Un artículo que te podría ayudar:
http://www.petefreitag.com/item/451.cfm

Por lo demás .. lo que hay mucho son capas de abstracción de BBDD con soporte para paginación .. por ejemplo:

ezSQL y su "ezResult" (que es la classe para paginado)
http://www.jvmultimedia.com/portal/

ADOdb, etc...

Sé que si tienes el proyecto en un estado de avance considerado no vas a usar algúna de estas "capas de abstracción de BBDD" .. pero deberías planterarte usar una de este estilo para otros proyectos pues ya incorporan y solucionan este tipo de problemas típicos como "paginado" y además te permitirá migrar tus aplicaciones de un motor de BBDD a otros sin muchos cambios.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 04/07/2006, 11:16
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
ok fijate yo con eso q me pasast es = q cuando adapto mi ejemplo,

Código PHP:
<?


include("Conectarse1.php");
$conn=Conectarse1();

$TAMANO_PAGINA 5;
$pagina "";
if (!
$pagina) {
    
$inicio 0;
    
$pagina=1;
}
else {
    
$inicio = ($pagina 1) * $TAMANO_PAGINA;

$ssql="select * from maestro";
$rs=pg_query($conn,$ssql);
$num_total_registros pg_num_rows($rs);
$total_paginas ceil($num_total_registros $TAMANO_PAGINA);

echo 
"Numero de registros encontrados: " $num_total_registros .
"<br>";
echo 
"Se muestran paginas de " $TAMANO_PAGINA " registros
cada una<br>"
;
echo 
"Mostrando la pagina " $pagina " de " $total_paginas .
"<p>"

$query="SELECT * FROM maestro LIMIT '$inicio' OFFSET '$TAMANO_PAGINA'";
$rs pg_query($conn,$ssql);

echo 
"<form name='modificar' method=post action='borrar.php'>";
echo 
"<center><TABLE width='500' BORDER=5 CELLPADDING=1 CELLSPACING=1 bordercolor='#003399'>
        <TR>
          <TD><div id='ta'> Cedula</div></TD>
          <TD><div id='ta'> Actividad </div></TD>
          <TD><div id='ta'> Descripcion </div></TD>
          <TD><div id='ta'> Horas </div></TD>
          <TD><div id='ta'> Fecha </div></TD>
          <TD><div id='ta'> Contrtato </div></TD>
        </TR>"
;

$num_fila 0;
$in=1+(($pagina-1)*5);
while(
$arr pg_fetch_array($rs)){

    echo 
"<tr";
    if (
$num_fila 2!=0)
       {echo 
"bgcolor=#d2e6ff"; }
    else
     {  echo 
"bgcolor=#e9f1ff"; }
    echo 
">";

        echo 
"<td>",$arr["cedula"],"</b>";
        echo 
"<td>",$arr["actividad"],"</b></td>";
        echo 
"<td>"$arr["descripcion"],"</b></td>";
        echo 
"<td>"$arr["horas"],"</b></td>";
        echo 
"<td>"$arr["fecha"],"</b></td>";
        echo 
"<td>"$arr["contrato"],"</b></td></tr>";
    
$num_fila++;
    
$in++;
    }
echo 
"
</form>"
;
echo 
"</TABLE></center>";



if (
$total_paginas 1){

    for (
$i=1;$i<=$total_paginas;$i++)
       if (
$pagina == $i)
          echo 
$pagina " ";
   }

pg_close($conn); 
?>
ese es el codigo q utilizo pero me siguen apareciendo todos los registros en una sola hoja, podrias ayudarme y revisarlo q ver q estoy haciendo mal, o q es lo q no entiendo...
__________________
.-._.-. [email protected]_.-.
  #4 (permalink)  
Antiguo 04/07/2006, 13:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo siento ... no domino PostgreSQL .. (y no tengo oportinidad para probar el código) ..

De todas formas te recomendaría probar la sentencia SQL que propones que supuestamente "pagina" (o mejor dicho te entrega un rango de registros desde uno dado): $query .... cuando obtengas lo que necesitas con el SQL adecuado y datos de prueba ahí revisas el código PHP por si hay algún otro tipo de error. (o por lo menos así revisaría yo este problema).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 04/07/2006, 13:36
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
gracias sos un sol, lo voy a revisar a ver q hago.. un besote...
__________________
.-._.-. [email protected]_.-.
  #6 (permalink)  
Antiguo 06/07/2006, 10:56
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
ya lo hice y si funciona pero tengo u nproblemita

muestro el cogigo primero:

Código PHP:
<?
include("Conectarse1.php");
$conn=Conectarse1();

$TAMANO_PAGINA 15;

$pagina$_GET["pagina"];

if (!
$pagina) {
    
$inicio 0;
    
$pagina=1;
}
else {
    
$inicio = ($pagina 1) * $TAMANO_PAGINA;

$ssql="select * from maestro";
$rs=pg_query($conn,$ssql);
$num_total_registros pg_num_rows($rs);
$total_paginas ceil($num_total_registros $TAMANO_PAGINA);

echo 
"Numero de registros encontrados: " $num_total_registros .
"<br>";
echo 
"Se muestran paginas de " $TAMANO_PAGINA " registros
cada una<br>"
;
echo 
"Mostrando la pagina " $pagina " de " $total_paginas .
"<p>";

$query="SELECT * FROM maestro LIMIT '$TAMANO_PAGINA' OFFSET '$inicio'";

$result pg_Exec($conn,$query);
if(
$arr=pg_fetch_array($result))

{
echo 
"<form name='modificar' method=post action='borrar.php'>";
echo 
"<center><TABLE width='500' BORDER=5 CELLPADDING=1 CELLSPACING=1 bordercolor='#003399'>
        <TR>
          <TD><div id='ta'>Cedula</div></TD>
          <TD><div id='ta'>Actividad </div></TD>
          <TD><div id='ta'>Descripcion </div></TD>
          <TD><div id='ta'>Horas </div></TD>
          <TD><div id='ta'>Fecha </div></TD>
          <TD><div id='ta'>Contrtato </div></TD>
        </TR>"
;

do
 {

        echo 
"<tr><td>",$arr["cedula"],"</b>";
        echo 
"<td>",$arr["actividad"],"</b></td>";
        echo 
"<td>"$arr["descripcion"],"</b></td>";
        echo 
"<td>"$arr["horas"],"</b></td>";
        echo 
"<td>"$arr["fecha"],"</b></td>";
        echo 
"<td>"$arr["contrato"],"</b></td></tr>";
   }
 while(
$row=pg_fetch_array($result));
 
echo 
"</TABLE></center>";
echo 
"</form>";

}


if(
$num_total_registros) {
        
        echo 
"<center>";
        
        if((
$pagina 1) > 0) {
            echo 
"<a href='paginatorpostgre2.php?pagina=".($pagina-1)."'>< Anterior</a> ";
        }
        
        for (
$i=1$i<=$total_paginas$i++){ 
            if (
$pagina == $i
                echo 
"<b>".$pagina."</b> "
            else
                echo 
"<a href='paginatorpostgre2.php?pagina=$i'>$i</a> "
        }
      
        if((
$pagina 1)<=$total_paginas) {
            echo 
" <a href='paginatorpostgre2.php?pagina=".($pagina+1)."'>Siguiente ></a>";
        }
        
        echo 
"</center>";
        
    }

pg_close($conn); 
?>
ok abajo en las paginaciones yo envio un valor de pagina y funciona fino, el problema q tengo es cuando se abre por primera vez, como hago si recojo el valor enviado con el metodo get, pero en la primera no envio nada y me da un notice (obvio) de q la variable esta vacia..
__________________
.-._.-. [email protected]_.-.
  #7 (permalink)  
Antiguo 06/07/2006, 11:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usa en ese caso algo tipo:

Código PHP:
if (isset($_GET['variable'])){
  
$variable=$_GET['variable'];
} else {
  
$variable='';
}

y usas $variable cuando lo necesites ... 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 06/07/2006, 11:28
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
gracias si me funciono, sos un sol, besos amigo...
__________________
.-._.-. [email protected]_.-.
  #9 (permalink)  
Antiguo 07/07/2006, 07:22
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
oye tengo otro problemita...

en el codigo recivo con el metodo post unas variables q me son enviadas de un form para hacer la conslta, pero cuando hago esto:

codigo php de paginacion
Código PHP:
if(($pagina 1) > 0) {
            echo 
"<a href='horas_proyecto1.php?contrato=$contrato&fecha_al=$fecha_al&fecha_del=$fecha_del&pagina=".($pagina-1)."'>< Anterior</a> ";
        }
        
        for (
$i=1$i<=$total_paginas$i++){ 
            if (
$pagina == $i
                echo 
"<b>".$pagina."</b> "
            else
                echo 
"<a href='horas_proyecto1.php?contrato=$contrato&fecha_al=$fecha_al&fecha_del=$fecha_del&pagina=$i'>$i</a> "
        }
      
        if((
$pagina 1)<=$total_paginas) {
            echo 
" <a href='horas_proyecto1.php?contrato=$contrato&fecha_al=$fecha_al&fecha_del=$fecha_del&pagina=".($pagina+1)."'>Siguiente ></a>";
        }
        
        echo 
"</center>";
        
    } 
hay podemos ver q le debo enviar de nuevo las variables ya q hago llamado de la misma paagina (proyecto1) pero como recivo las variables con el metodo post me da error. no se q hacer como soluciono esto? gracias.. besos
__________________
.-._.-. [email protected]_.-.
  #10 (permalink)  
Antiguo 07/07/2006, 08:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usa $_REQUEST en lugar de $_POST .. así aceptaras las variables cuando lleguen por POST de tu formulario y por $_GET cuando las re-envies por los links que haces y donde propagas las variables en tus links de paginado.

O simplemente usa GET en tu formulario (y las tomas por GET en tu script de resultados) .. total .. en el paginado las vas a propagar por GET si o si ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 07/07/2006, 08:58
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
si bueno eso fue lo q se me ocurrio coloca el formulario con get y tomar todo con get, pero voy aprobar como es el $_REQUEST porq nunk lo he usado, con get en el form me funciono gracias amigo, besos

editado:Muy bien lo probe y funciona perfectamente, algo asi era q estba buscando gracias amigo...
__________________
.-._.-. [email protected]_.-.

Última edición por Mirovita; 07/07/2006 a las 09:12
  #12 (permalink)  
Antiguo 07/07/2006, 09:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En $_REQUEST tienes todo lo que venga de POST, GET y COOKIE .. no es recomendable usarlo arbitrariamente .. siempre es recomendable acceder a las variables por el método que lo esperas .. pero como en tu caso lo puedes "esperar" por dós métodos (GET y/o POST) .. para eso existe dicho array superglobal ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 07/07/2006, 09:16
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
umm gracias sos un sol, mientras mas trabaj con php mas cuenta me doy q no se nada del lenguaje o q se muy poso para las cosas maravillosas q tiene.. gracias master del php, besos amigo te adoro..
__________________
.-._.-. [email protected]_.-.
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:27.