[ Foro de PHP ]

Ejercicios de repaso (1): el ejercicio número 2

11-Jan-2007 10:15
Iulius E.
8 Respuestas

Hola a todos:
Sigo dispuesto a dar la tabarra ;O). Esta es mi resolución del ejercicio de repaso número 2 (crear una tabla de 10 filas y 2 columnas que muestre en la primera columna los números del 1 al 10 y en la segunda el texto "Prueba"):

<html>
<head>
<title>Crear tabla</title>
</head>
<body>
<table border>
<?php
for ($numero=1; $numero<=10; $numero++) {
echo "<tr><td>$numero</td><td>Prueba</td></tr>";
}
?>
</table>
</body>
</html>

He comprobado que "funciona" :OD, pero igual hay una manera mejor de hacerlo o se puede depurar algo esta solución, como hizo Nacho con mi solución al primer ejercicio.

Un saludo cordial a todos y mi agradecimiento por anticipado:
Iulius

11-Jan-2007 23:03
Nacho Cabanes (+84)

Está perfecto así.

Como reto, por si te atreves a investigar algo más sobre HTML que lo que hemos comentado en el curso (o por si ya lo conoces): ¿Y si queremos que la segunda columna no tenga 10 casillas que repitan la palabra "prueba", sino una única casilla que ocupe la altura de las 10 filas, y que contenga sólo una vez la palabra "prueba"? ;-)



12-Jan-2007 10:10
Iulius E.

Mmm... me ha costado dar con algo que funcione. Esta solución no me parece muy elegante, pero... ¡funciona! :O).

<html>
<head>
<title>Crear tabla</title>
</head>
<body>
<table border>
<?php
$numero=1;
echo "<tr><td>$numero</td><td rowspan=10>Prueba</td></tr>";
$numero=$numero+1;
for ($numero=2; $numero<=10; $numero++) {
echo "<tr><td>$numero</td></tr>";
}
?>
</table>
</body>
</html>

Mirando por ahí he encontrado que es posible parar en un punto dado el bucle for, ordenar algo, y que luego siga ejecutándose con la orden "continue". He intentado hacer algo así pero sólo obtengo bucles "infinitos" :O(. Por ejemplo:
<table border>
<?php
for ($numero=1; $numero<=10; $numero++) {
if($numero=1) {
echo "<tr><td>$numero</td><td rowspan=10>Prueba</td></tr>";
$numero=$numero+1;
continue;
}
}
?>
</table>
(no lo ejecutéis en el navegador: a mí se me vuelve loco...).

Graaaaaaaacias1000,
Iulius

12-Jan-2007 18:29
Nacho Cabanes (+84)

Es más sencillo que eso, pero porque no es algo de PHP, sino de HTML. Busca ayuda sobre "rowspan"... Y no pierdas de vista que PHP es una herramienta, pero no es la solución a todo, hay cosas que se hacen mejor "desde fuera" ;-)



15-Jan-2007 12:45
Iulius E.

Lo más sencillo que he logrado hacer funcionar es:

<table border>
<tr><td>1</td><td rowspan="10">Prueba</td></tr>
<?php
for ($numero=2; $numero<=10; $numero++) {
echo "<tr><td>$numero</td></tr>";
}
?>
</table>

mmm... ¿puede ser más sencillo aún, Nacho?????
Gracias1000 :O)
Iulius

27-Jan-2007 14:04
Nacho Cabanes (+84)

No me extraña que obtengas un bucle infinito ;-)

Cuidado con esto:

if($numero=1)

Recuerda que en los lenguajes que derivan de C (como es el caso de PHP), para comprobar la igualdad en una condición se debe usar == :

if($numero==1)

Por cierto, en el caso de tu segundo programa, indicas lo que quieres que haga cuando "numero" vale 1, pero... ¿y en el resto de los casos? Posiblemente necesitarías un "else" para conseguir lo que buscas.


27-Jan-2007 19:49
Iulius E.

oooops :O), jusjusjus, vaya fallo, gracias Nacho, intentaré rehacerlo :O) Voy a tener que apuntarme al curso de C ;O)
03-Feb-2007 14:26
Iulius E.

bueno, bueno, bueno... después de ir cometiendo uno a uno todos los errores de principiante posibles ;O), parece que esto va funcionando... de momento esta forma funciona:

<table border>
<?php
for ($numero=1; $numero<=10; $numero++) {
if($numero==1) {
echo "<tr><td>$numero</td><td
rowspan=10>Prueba</td></tr>";
$numero=$numero+1;
continue;
}
echo "<tr><td>$numero</td></tr>";
}
?>
</table>

Voy a probar también a hacerlo con un "else" :O)


03-Feb-2007 14:30
Iulius E.

heyheyhey, funciona :O):

<table border>
<?php
for ($numero=1; $numero<=10; $numero++) {
if($numero==1) {
echo "<tr><td>$numero</td><td
rowspan=10>Prueba</td></tr>";
$numero=$numero+1;
}
else {
echo "<tr><td>$numero</td></tr>";
}
}
?>
</table>

:O)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)