how?Listar tabla mysql en varias paginas con php

BLZKZ

Pues eso, realmente no se como hacerlo de una forma decente y mis conocimientos de php son reducidos (estoy aprendiendo)

cuando haces el SELECT * desde php hago un for hasta el valor que el usuario haya elegido como numero de filas haciendo que $fila = mysqli_fetch_row($resultado) (siendo resultado la tabla que devuelve el select).
Los elementos totales los saco con SELECT COUNT (*).

Lo que no tengo claro es como hacer que liste por ejemplo las 10 primeras filas y debajo pona un ir a la pagina 2, 3 ... ultima como enlaces xD

De momento lo hago de forma chustera con un boton y un select desplegable que indica la pagina y con $_POST me apaño, pero quiero hacer algo al estilo memberlist de phpbb(lo que he dicho arriba)

¿Alguna idea? he buscado manuales y tal, pero tampoco se exactamente qué buscar por lo que no he encontrado nada. Tampoco quiero que me deis el codigo, al menos no lo pido, solo ideas de como hacerlo xD

gracias :)

txandy

Bueno yo tengo un sistema tal que así:

Codigo

Y eso es todo, ya me dirás se te ha funcionado ;)

BLZKZ

Muchas gracias :) creo que me valdra al menos la manera de hacer las consultas, (de sql si que soy negado xD) y no sabia que se podia hacer asi :P

Luego lo pruebo y te comento :)

txandy

Bueno y queda más o menos así, le he puesto limite 1 para que veas que lo hace bien ;)

Ya se que la fecha es imposible, pero aun estoy liado con el código :P

BLZKZ

me he puesto a ello cuando lo termine lo pongo aqui :) podra ser una chapuza asi que no me lapideis xD

eXtreM3

Lo que tú buscas se llama paginación. La primera vez que tuve que usar algo parecido necesité un tutorial, ya que el concepto lo tenía pero se me escapaban algunas cosas.

Mírate esta web

http://www.desarrolloweb.com/articulos/1035.php

Espero que te sirva ;)

Lo que tienes que tener claro es una cosa, por ejemplo, digamos que el select count te devuelve 50 resultados vale? y por cada página quieres mostrar 10 resultados -> necesitarás 5 páginas (50 / 10) -> (select count / resultados por página)

El listado de los 10 primeros resultados estará almacenado en &pagina=1, y la consulta sql estará LIMITADA por un 0,10 (mínimo,máximo)

RaymaN

#6 el LIMIT 0,10 no indica mínimo y máximo, sino primer registro que se toma y total de registros a tomar. Un LIMIT 5,7 devolvería 7 registros a partir del 5º registro de la consulta.

NeB1

Utiliza en tu consulta SQL la cláusula "OFFSET" combinada con la de "LIMIT", Si le dices ("SELECT titulo FROM noticias ORDER BY fecha OFFSET 10") por poner un ejemplo, empieza por el número de registro 10 a coger las noticias, entonces si pones OFFSET 10 LIMIT 10 te cogerá de la noticia 10 a la 19.

Lo de #7 hace lo mismo

BLZKZ

prfff ya la cosa va saliendo xD pero la movida es que despues de hacerlo en php lo tengo que "traducir" a php-fusion (estoy haciendo un infusion para un proyecto que tenemos :P) y es un coñazo de la leche xD ya os enseñare el resultado, aunque he de decir que no solo lo usare ahi :)

BLZKZ

Tengo un pequeño problema (lo comento después de la imagen), y no, asi no dejare la tabla, simplemente queria hacer la parte de programación primero, diseño después :P
resultado:

El problema viene que al hacer $pag = $_GET['pag']; si no recibe en la url pag=X me tira un warning (notice de esos) de que pag no es un indice correcto. ¿Cómo puedo hacer que eso no salga? De momento lo que hago es no llamar nunca a la pagina sin pasarle ese parámetro :S

PD: exactamente dice esto:
Notice: Undefined index: pag in C:\xampp\xampp\htdocs\fusion\infusions\formulario_subida\admin\listapendientes.php on line 42

r2d2rigo

Haz una comprobacion de que si !isset la inicialice a 1.

NeB1

error_reporting(E_ALL | E_NOTICE);

al principio de tu fichero (o algo así);

r2d2rigo

#12 pero ahi le estas diciendo que ignore el error, el agujero sigue estando igual. Una de las primeras cosas que se aprende en PHP es a trabajar siempre con variables inicializadas, porque si no por ahi te pueden colar lo que quieran :/

BLZKZ

lo he solucionado como dijo #11 he puesto:

if (!isset($_GET['pag'])) {
	$_GET = array ('pag' => 1);
}

y arreando :P

Gracias por toda la ayuda, da gusto ^^

Si alguien quiere el infusion que me lo diga y lo pongo :P

EDIT: al final no fui tan chapucilla e hice esto:

if (!isset($_GET['pag'])) {
	$inicio = 0;
	$pagina = 1;
}
else {
	$pagina = $_GET['pag'];
	$inicio = ($pagina -1) * $tam_max;
}
1 mes después
eXtreM3

Aprovecho este thread porque tengo una cuestión que hacer.

Tengo hecha una paginación para que muestre salida de resultados. Muestro 10 registros por página. Ahora mismo tengo 90 registros y me muestra 9 números (del 1 al 9) para paginar.

Ahora mismo no me supone un problema, pero cuando haya 900 registros, si tiene que sacar 90 números sí que será un problema xD.

Lo que quiero hacer entonces es limitar el número de números de páginas, por ejemplo a 5, quedando algo así en la página inicial:

1 2 3 4 5 ... 90

Si hago clic en el 5 por ejemplo, quedaría así:

3 4 5 6 7 ... 90

Cómo puedo hacerlo? Cuál es la idea? No se me ocurre :(

EDIT: vale estoy apollardao jajaja, siempre digo que postear en mv es mano de santo para resolver problemas, y vaya que sí, ni 10 minutos he tardado en hacerlo ¬¬, era muy difícil eso de "acatar" un for jajaja, en fin, sorry por levantar el tema para nada.

Por si quereis ver el resultado...

Tiendeando paginación

Y el código, que no cuesta nada
SikorZ

Por dios en vez de esos arrays nada mas para que recorran los datos, usad mysql_fetch_array con un while

$datos="Select * from tabla;";
$select=@mysql_query($datos, $conexion) or die ("Fallo al ejecutar el select");
while($datos=mysql_fetch_array)
{
echo $Datos['Nombretabla'];
}

De nada xD!

BLZKZ

#16 claro y entonces como das estilo a las tablas? en fin...

eXtreM3

#16 pero qué demonios!? xD

Por cierto un aporte, para qué pones "or die" si haces @mysql_query?? Por si no lo sabías la @ omite la salida de errores, si esa consulta peta no te vas a enterar xD

0buS

Estilo a las tablas? cerrando y abriendo el php en el mismo while. Recorrer una consulta sin mysql_fetch_array + while es una verdadera chapuza.

#18 es un código de ejemplo, es un claro copy & paste xD. No le des importancia a la @.

Aunque ahora que me doy cuenta, el while está mal:

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Name: %s", $row[0], $row[1]);

}

mysql_fetch_array no puede ir sin parámetros.

Usuarios habituales

  • eXtreM3
  • BLZKZ
  • SikorZ
  • r2d2rigo
  • NeB1
  • RaymaN
  • txandy