Foros del Web » Programando para Internet » PHP »

Paginar con PHP con otra alternativa a paginator

Estas en el tema de Paginar con PHP con otra alternativa a paginator en el foro de PHP en Foros del Web. Saludos... Que hay de nuevo amigos....estoy tratando de paginar unos datos que despliego en una tabla de html, mi problema radica en que utilizo una ...
  #1 (permalink)  
Antiguo 14/08/2008, 01:06
 
Fecha de Ingreso: junio-2008
Mensajes: 51
Antigüedad: 16 años, 5 meses
Puntos: 0
Pregunta Paginar con PHP con otra alternativa a paginator

Saludos...
Que hay de nuevo amigos....estoy tratando de paginar unos datos que despliego en una tabla de html, mi problema radica en que utilizo una clase de php en donde implemento todas las funciones que me permiten hacer querys a mi BDD....utilizo funciones...en las cuales solo les paso los parametros, y la funcion se encarga de devolverme los resultados es decir la funcion se encarga de realizar la consulta por ejemplo:
consultar_user(id_user) la funcion ejecutaria "mysql_query("Select, Update, Delete,Insert...o el query que sea.etc")" y me retorna el resultado
....despues despliego los registros con un while con mysql_fetch_array(consultar_user(id_user))...el problema es que para usar paginator...se requiere pasarle el query como tal, pero no quiero diseñarlo de esa manera...lo que quiero hacer es solo pasarle el resultado del query...y que paginator se encargue de organizar la informacion solamente...bueno amigos de cualquier forma mil gracias por su ayuda.
  #2 (permalink)  
Antiguo 14/08/2008, 01:53
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años, 6 meses
Puntos: 13
Respuesta: Paginar con PHP con otra alternativa a paginator

Buenas

Seguramente te ayuden otros foreros que sepan más de esto, pero si quieres yo te digo mi forma chapucera (debería haberme puesto el nick de Kamae_Chapuzas) xD

Yo lo que hago simplemente es hacer una query

Código PHP:
$maxPag=15;
     
// Numero de registros que seran mostrados por pagina
$query=mysql_query("SELECT count(cualquier_campo) FROM tabla");
     
// Numero de registros existentes en la BBDD
$cont=mysql_fetch_row($query);
$cont=$cont[0];
     
// Con esto ya tenemos guardado cuantas hay en la variable cont
$pagTotal=$cont/$maxPag;
if (
$pagTotal!=(int)$pagTotal){
     
$pagTotal=(int)$pagTotal+1;
          
// Esta variable sera la que determinara cuantas paginas habra segun el numero
          // de registros existentes y el numero de registros que queremos mostrar por pagina
          // Si el número $pagTotal no ha quedado como un entero sin decimales,
          // lo redondeamos al alza
}
echo 
"< Pagina ";
$i=0;
while((
$pagTotal-$i)>0){
    
$pag[($pagTotal-$i)]=$pagTotal-$i;
    
$i++;
             
// Esto solo es para que muestre las paginas de forma ascendente luego
}
$i=1;
while(isset(
$pag[$i])){
    if(isset(
$pag[($i+1)])){
        echo 
'<b><a href="tu_pagina.php?page='.$pag[$i].'">'.$pag[$i].'    </a></b> - ';
             
// Si existe otra pagina, separalas por guion -
    
}else {
        echo 
'<b><a href="tu_pagina.php?page='.$pag[$i].'">'.$pag[$i].'</a></b>'
             
// Si ya es la ultima pagina no le pongas ningun guion detras
    
}
    
$i=$i+1;
}
echo 
' >'
Luego haces tu consulta como si fueras a mostrarla, y antes de mostrarla de verdad dentro del while, pones una condición if:

Código PHP:
mysql_query(...blabla...);
mysql_fetch_row(...blabla...);
$cont=0;
while(...
blabla...){
     
$cont++;
     if((
$cont<=$_GET["page"]*$maxPag)and($cont>(($_GET["page"]*$maxPag)-$maxPag))){
          
// Aqui puedes poner el codigo para mostrar
          // La condicion esta lo que comprueba es que si el numero de pagina multiplicado por
          // el numero de registros permitidos por pagina (por ejemplo, 2*15=30)
          // es menor o igual al numero de registro actual (por ejemplo 22, que es menor)
          // y a la vez es mayor que lo anterior restándole el número de registros por pagina
          // (por ejemplo, permitimos 15 por pag, estamos en la pagina 2 (2*15=30)
          // pues 30-15=15). 22 es más grande que 15 y más pequeño que 30, lo mostraría.
     
}


Lo sé, es muy chapuzas habiendo una función que te lo haga (que yo desconocía ), además que sacas todos los registros para sólo aprovechar unos pocos. Debo decir que el rendimiento va bien pero en intranet, no lo he probado en un servidor internet.

Bueno no sé, lo pongo por si quieres adaptarlo en un momento y ver si de rendimiento te anda bien.

Saludos

Última edición por Kamae; 14/08/2008 a las 02:00
  #3 (permalink)  
Antiguo 14/08/2008, 14:04
 
Fecha de Ingreso: mayo-2005
Mensajes: 64
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Paginar con PHP con otra alternativa a paginator

Cita:
Iniciado por IngDaemonK Ver Mensaje
Saludos...
Que hay de nuevo amigos....estoy tratando de paginar unos datos que despliego en una tabla de html, mi problema radica en que utilizo una clase de php en donde implemento todas las funciones que me permiten hacer querys a mi BDD....utilizo funciones...en las cuales solo les paso los parametros, y la funcion se encarga de devolverme los resultados es decir la funcion se encarga de realizar la consulta por ejemplo:
consultar_user(id_user) la funcion ejecutaria "mysql_query("Select, Update, Delete,Insert...o el query que sea.etc")" y me retorna el resultado
....despues despliego los registros con un while con mysql_fetch_array(consultar_user(id_user))...el problema es que para usar paginator...se requiere pasarle el query como tal, pero no quiero diseñarlo de esa manera...lo que quiero hacer es solo pasarle el resultado del query...y que paginator se encargue de organizar la informacion solamente...bueno amigos de cualquier forma mil gracias por su ayuda.
Podrias modificar el paginator asterisqueando este código
/*
if(empty($_pagi_sql)){
// Si no se definió $_pagi_sql... grave error!
// Este error se muestra sí o sí (ya que no es un error de mysql)
die("<b>Error Paginator : </b>No se ha definido la variable \$_pagi_sql");
}
*/

Para que no te de el error de que no le pasaste la consulta

También tenes que modificar estas líneas con tus datos

$_pagi_sqlConta = eregi_replace("select[[:space:]](.*)[[:space:]]from", "SELECT COUNT(*) FROM", $_pagi_sql);
$_pagi_result2 = mysql_query($_pagi_sqlConta);

Pasale directamente el resultado de tu query.

Espero qeu te sirva
__________________
Damián
Diseño y desarrollo web
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 12:55.