Paginacion PHP

Iniciado por Sinedra, 22 Enero 2011, 17:40 PM

0 Miembros y 1 Visitante están viendo este tema.

Sinedra

Estoy en pleno desarrollo de un sistema de usuarios en PHP/MySQL y he llegado a un punto en que necesito una paginacion de resultados (para mostrar los usuarios registrados), el punto es que no se cual es la mejor forma de hacerlo, he buscado en google pero ninguna se acomoda mucho a la que quiero. para que entiendan mejor:

<< Anterior 1 2 3 4 5 6 7 8 ... 101 Siguiente>>
<< Anterior 1 2 3 4 5 6 7 8 ... 101 Siguiente>>
<< Anterior 1 2 3 4 5 6 7 8  ... 101 Siguiente>>
<< Anterior 1 2 3 4 5 6 7 8  ... 101 Siguiente>>
<< Anterior 1 2 3 4 5 6 7 8  ... 101 Siguiente>>
.
.
.
<< Anterior 1 ... 3 4 5 6 7 8 9  ... 101 Siguiente>>
<< Anterior 1 ... 4 5 6 7 8 9 10 ... 101 Siguiente>>
.
.
.
<< Anterior  1 ... 92 93 94 95 96 97 98 ... 101 Siguiente>>
<< Anterior  1 ... 93 94 95 96 97 98 99 ... 101 Siguiente>>
.
.
.
<< Anterior  1 ...  94 95 96 97 98 99 100 101 Siguiente>>
<< Anterior  1 ...  94 95 96 97 98 99 100 101 Siguiente>>
<< Anterior  1 ...  94 95 96 97 98 99 100 101 Siguiente>>
<< Anterior  1 ...  94 95 96 97 98 99 100 101 Siguiente>>
<< Anterior  1 ...  94 95 96 97 98 99 100 101 Siguiente>>

Porfavor alguien orienteme como puedo hacer algo de este estilo.

Si alguien me quiere ayudar porfavor envienme un PM con su msn para hablar mas rapido. Gracias

RedZer

Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

Sinedra

Gracias, me sirvio de algo.

Diabliyo

Cita de: Sinedra en 22 Enero 2011, 19:20 PM
Gracias, me sirvio de algo.

Men, si has echo un sistema de usuarios, la paginacion es pan comido, vaya.... asumiendo que programaste ya un sistema.

La cosa es usar consultar con LIMIT y utilizar una variable que te sirva como punto de referencia para saber que rango mostrar ( $_GET["pagina"] )...

saludos !

tragantras

[asumiendo una conexión pre-establecida]

Código (php-brief) [Seleccionar]

$query = mysql_query("SELECT COUNT(*) FROM `my_tabla`");
$query_result = mysql_fetch_array($query);



$count = $query_result[0];
$max_results = 20;
$pages = ceil($count/$max_results);

if(isset($_GET["pagina"])){
$pagina = intval($_GET["pagina"]);
else{
$pagina = 0;
}

$query = mysql_query("SELECT * from `my_tabla` limit {$pagina},{$max_results}";
$query_result = mysql_fetch_assoc($query);
foreach($query_result as $key => $val)
{
echo "{$key} : {$val}".PHP_EOL;
}
echo "</br></br>";
echo "<b>&gt;</b>";
for($i=0;$i<$pages;$i++)
{
echo "<a href='./index.php?pagina={$i}'> {$i} </a>&nbsp;";
}
echo "<b>&lt;</b>";







es solo el esqueleto de lo que tu quieres, pero plasma la idea
Colaboraciones:
1 2

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Sinedra

#6
Muchas gracias a todos por la ayuda!, muy amables, les cuento que tras un largo dia de programacion la paginacion me quedo de lujo =) gracias por ayudarme.

Saludos


Shell Root

Podrías poner el código para verlo...
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Sinedra

jeje esque tiene unas 305 lineas, sin contar las funciones extras. pronto cuando estrene el proyecto en que ando les dejo un link aqui para que lo vean. Saludos.

Diabliyo

Cita de: Sinedra en 23 Enero 2011, 00:25 AM
jeje esque tiene unas 305 lineas, sin contar las funciones extras. pronto cuando estrene el proyecto en que ando les dejo un link aqui para que lo vean. Saludos.

Wow 305 lineas es mucho, entonces me imagino que tienes un mezcladero horrendo no ?... porque una buena paginacion no hiria mas haya de las 100 lineas :S...

Te recomiendo uses 2 funciones:

paginacion()

paginacion_rollout()

La funcion paginacion() toma argumentos que le sirven para hacer la paginacion segun el limite de inicio y fin, toma la bdd y genera una consulta que despues puedes usar con mysql_fetch_array().

Y paginacion_rollout() crea el roll out de las paginas, tomandos los mismos argumentos que le paseste a paginacion(), esta deduce las paginas, Y podra retornarte el HTML a pegar (ya tu le concatenas una capa) o que lo imprima directo dentro de la funcion (aunque seria poco recomendable).

Saludos !