Como cortar con Break una tabla rellena mediante for en php?

  • Autor Autor verita022
  • Fecha de inicio Fecha de inicio
V

verita022

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola, espero poder explicarme, resulta que uso el bucle "for" para rellenar
una tabla de 4 celdas y 7 filas con el contenido proporcionado mediante un
array multidimensional, el tema es el siguiente, el array tiene muchisimo contenido
yo quiero rellenar tablas de 4 *7 en cada pagina y luego pasar a rellenar otra en
otra pagina, y no se como darle esa orden por ejemplo para rellenar la primera tabla
de la primera pagina uso este codigo

Insertar CODE, HTML o PHP:
<?php



for ($x=0; $x<29; $x++){


$buscador = file_get_contents('buscador.php');

$paginas = file_get_contents('paginas-naves.php');


echo('<table width="290" height="104" cellspacing="4"  style="float:left">');


echo('<center><tr>
<td background="imagenes/buscador1.png"colspan="4"><center>'.$buscador.'</center><br></td></tr></center>');


	for ($y=1; $y<=7; $y++){


echo('<tr class="juegoss1">');

	for ($j=1; $j<=4; $j++){




		echo('<td><a href="' . $juegos[0][$x] .'.php"><center><img src="imagenes/' . $juegos[1][$x] . '.jpg" height="123" width="166"></a><br><font size="2" color="black" style="text-decoration:none">'. $juegos[2][$x]  .'</font></center></td>' );


		$x=$x+1;


		}

echo('</tr>');




}

echo('<center><tr>
<td colspan="4"><center><br><br>'.$paginas.'</center><br></td></tr></center>');



echo ('</table>');




		}


?>



De esta manera, siendo $x la que me esta llamando el contenido, me muestra una tabla rellena con el primer valor y el valor numero 28,
pero cuando quiero hacer la q sigue arranco desde 29 pero resulta que no se como terminarla
por que el contenido que queda no termina de llenar la tabla, no se como indicarle que si el
array esta vacio no me muestre la celda... No se si me explique bien... Bueno cualquier ayuda
sera muy bienvenida! si no se entiende avisen!
 
Última edición:
ponele la etiqueta
Insertar CODE, HTML o PHP:
 pls
 
captura.webp

Aca te dejo la captura, fijate que en una parte la tabla se rellena con las imagenes y demas y en otra aparecen sin relleno
debido a q no hay mas contenido para meter pero no se como hacer q no siga imprimiendo als celdas si no hay contenido en el array
 
No se si he entendido el problema exactamente, pero si haces el bucle con FOREACH dejará de imprimir celdas cuando procese el último elemento. ¿Es eso lo que buscas? Si lo quieres hacer con FOR, deberías poner el límite dinámico recuperando la cantidad de elementos para que el FOR finalice con el último.
 
No se si he entendido el problema exactamente, pero si haces el bucle con FOREACH dejará de imprimir celdas cuando procese el último elemento. ¿Es eso lo que buscas? Si lo quieres hacer con FOR, deberías poner el límite dinámico recuperando la cantidad de elementos para que el FOR finalice con el último.


Si eso mismo es lo que quiero hacer!! como hago eso como le pongo el limite dinamico? usando count? probe pero no lo saco
 
No lo he visto a fondo pero no me cuadra el primer FOR. Si quieres mostrar los 28 elementos en 7 filas, el FOR hasta 7 y el FOR hasta 4 anidados debería ser suficiente. Lo que hace el código ahora mismo es mostrar 28 tablas de 28 elementos. Si no me equivoco. ¿Podrías indicar la página que es para verlo en vivo? ¿No tienes una base de datos con los juegos? Es lo más cómodo y funcional.

De todas formas, para saber cuantos elementos contiene tu array, puedes usar la función count.
 
No lo he visto a fondo pero no me cuadra el primer FOR. Si quieres mostrar los 28 elementos en 7 filas, el FOR hasta 7 y el FOR hasta 4 anidados debería ser suficiente. Lo que hace el código ahora mismo es mostrar 28 tablas de 28 elementos. Si no me equivoco. ¿Podrías indicar la página que es para verlo en vivo? ¿No tienes una base de datos con los juegos? Es lo más cómodo y funcional.

De todas formas, para saber cuantos elementos contiene tu array, puedes usar la función count.

Si tenes razón el primer for es innecesario, aun así si tengo q darle un valor a $x q es la que se relaciona con el valor del array, sino en todas las
paginas me mostraria solo los primeros 28 elementos del array... necesito darle un punto de partida, probe como me dijiste y anda de diez, poniendo obvio el valor inicial de $x igual. Pero sigo sin corregir esta cuestion de q la ultima tabla me sigue largando las celdas vacias esas q se ven ahi,
no la verdad no tengo en base de datos no se trabajar con mysql aun
 
¿Cómo haces la paginación? Necesitas una variable para guardar la página y el array deberá mostrar los elementos correspondientes a la página. Si cada página muestra 28 elementos, entonces solo queda calcular porque elemento debe empezar a mostrar según la página en la que esté el usuario.

Veamos:

En la pagina 1 se muestran del 1 al 28
En la página 2 se muestran del 29 al 56
En la página 3 se muestran del 57 al 84
En la página 4 se muestran del 85 al 112
...

Esto nos lleva a que el primer elemento que debe mostrar en cada página es igual al número total de elementos por el número de página menos uno. Y al resultado se le suma uno que será el primero.

$PrimerElemento = 28 * (NºPage -1) + 1

EJEMPLO: En la página 4 -> 28 * (4 - 1) + 1 = 85. El primer elemento a mostrar en la página 4 es el número 85 del array.

Si hacemos la cuenta "a mano" sería: 28 + 28 +28 + 1. Tres veces 28, que son las páginas 1,2 y 3.

Espero haberme explicado bien.:encouragement:

Cualquier duda, aquí estoy. Aunque ya mañana que por aquí son horas de dormir.
 
¿Cómo haces la paginación? Necesitas una variable para guardar la página y el array deberá mostrar los elementos correspondientes a la página. Si cada página muestra 28 elementos, entonces solo queda calcular porque elemento debe empezar a mostrar según la página en la que esté el usuario.

Veamos:

En la pagina 1 se muestran del 1 al 28
En la página 2 se muestran del 29 al 56
En la página 3 se muestran del 57 al 84
En la página 4 se muestran del 85 al 112
...

Esto nos lleva a que el primer elemento que debe mostrar en cada página es igual al número total de elementos por el número de página menos uno. Y al resultado se le suma uno que será el primero.

$PrimerElemento = 28 * (NºPage -1) + 1

EJEMPLO: En la página 4 -> 28 * (4 - 1) + 1 = 85. El primer elemento a mostrar en la página 4 es el número 85 del array.

Si hacemos la cuenta "a mano" sería: 28 + 28 +28 + 1. Tres veces 28, que son las páginas 1,2 y 3.

Espero haberme explicado bien.:encouragement:

Cualquier duda, aquí estoy. Aunque ya mañana que por aquí son horas de dormir.


Muchas Gracias!! Me ahorre un for con este dato desde tu comentario anterior, va de diez!
Me queda corregir la cuestion de las celdas vacias.... como podria hacer q las reconozca y no las muestre?
 
¿Te siguen saliendo celdas con el símbolo de la imagen perdida? Supongo que será en la última página. Puedes crear un contador de elementos mostrados y si cuando el array termina no hay llegado a 28, crear un FOR de X a 28 para que rellene con celdas en blanco o del color del fondo de tu web, para que no se vean. Necesitaría más info para pensar el algoritmo. ¿El array contiene las url's de las imagenes? Si es así, puedes comparar el contenido de cada elemento con '' (vacío) o la función "isset()" y en caso de no tener contenido no se mostrará la celda.

Me alegra haberte ayudado.
 
Atrás
Arriba