Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: [T]Killer en Junio 01, 2011, 01:45:31 PM

Título: [SOLUCIONADO] [Taller de PHP] Ejercicio III
Publicado por: [T]Killer en Junio 01, 2011, 01:45:31 PM
No entiendo nada del ejercicio tres, y me lo han explicado un poco por IRC pero cada persona lo entiende de una forma distinta y aquí no se aclara nadie, ni ellos ni yo, ¡jajaj!

A ver si alguien que sepa SEGURO que entiende el ejercicio puede explicármelo o ponerme un ejemplo (sin code, para evitar copiarme).

$4lu2
Título: Re:[Duda] [Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 01, 2011, 01:55:05 PM
Cita de: Taller de PHP - Unidad I - Ejercicio IIIIII.   Hacer un script con un formulario que te pida un mensaje y un número, comprobar que ese número realmente lo sea y si lo es, mediante un bucle mostrar el mensaje esa misma cantidad de números.

En un formulario tu tienes dos casillas de texto, una para un mensaje y otra para un carácter numérico, en ésta ingresas un carácter, una vez enviado el formulario comprobarás que el carácter enviado sea numérico, en caso de no ser númerico muestre un error diciendo que no es numérico, por caso contrario (si sí es numérico) muestre el mensaje ingresado "x" cantidad de veces, ejemplo:

Caso 1
Mensaje: Hola
Numero: 2
Imprime>
Hola
Hola

Caso 2
Mensaje: Hola
Numero: T
Imprime>
Error, no es un número

Saludos.
Título: Re:[Duda] [Taller de PHP] Ejercicio III
Publicado por: [T]Killer en Junio 01, 2011, 02:00:15 PM
¡Perfecto!

Muchas gracias, me pongo a ello ahora mismo.

$4lu2
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 01, 2011, 04:24:09 PM
Perfecto, cualquier duda comentas.
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: [T]Killer en Junio 01, 2011, 04:46:36 PM
Bueno, tengo hechos el 1 y el 2, pero el 3 eso del bucle como que no voy a saber hacerlo... incluso he buscado + info por Google y nada, ¿estoy suspendido? Jajajaj :P
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 02, 2011, 10:52:58 AM
Código (php) [Seleccionar]

<?php
if(isset($_POST['go'])): //Si se envio el formulario
$msg $_POST['msg']; //Mensaje
$num $_POST['num']; //Numero
  
if(!is_numeric($num)): //Si no es numerico
    
echo 'Error, no es numerico';
  else: 
//Si es numerico 
    
for($asdf 0$asdf<$num$asdf++): //Comenzamos el bucle
      
echo $asdf.' - '.$msg//Mostramos mensaje
    
endfor; //Cerramos el bucle
  
endif; //Cerramos if de comparacion numerica
endif; //Cerramos if de envio de formulario
?>

<form action="" method="POST">
Mensaje: <input type="text" name="msg" /><br />
Numero: <input type="text" name="num" /><br />
<input type="submit" name="go" value="Enviar" />
</form>


La variable $asdf no tiene que tener ese nombre, comúnmente se utiliza $i así que no te confundas con eso, ese solo sería un método en un solo .php, saludos :)
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: [T]Killer en Junio 02, 2011, 03:26:24 PM
Buuff, las primeras líneas hasta el comienzo del bucle lo tenía yo bien! Y ahora qué hago si me has hecho ya el ejercicio jajaj lo hago igualmente y te lo envio tambien?

Gracias!!

EDITO: He probado tu código para tomarlo como ejemplo y no funciona, no paran de salir errores :S
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 02, 2011, 04:40:09 PM
No tiene ningún error más que el de endfor; pero es porque en la línea 10:

Código (php) [Seleccionar]
<?php
for($asdf 0$asdf<$num$asdf++)
?>



Se me olvido ponerle los dos puntos finales quedando así:

Código (php) [Seleccionar]
<?php
for($asdf 0$asdf<$num$asdf++): 
?>



Tambien en:

Código (php) [Seleccionar]
<?php
echo $asdf.' - '.$msg;
?>



Cambialo por (esto es por estética):

Código (php) [Seleccionar]
<?php
echo $asdf.' - '.$msg.'<br />';
?>



Y el resultado sería:

(http://imagengratis.org/images/testkf9zk.png)

Esto:

Código (php) [Seleccionar]

<?php
for($i$i<10$i++)
{
//Test
}
?>



Es igual que:

Código (php) [Seleccionar]

<?php
for($i$i<10$i++):
//Test
endfor;
?>



Pero como vez nos ahorramos una línea, saludos.
PD: Hazlo a tu manera.
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: [T]Killer en Junio 02, 2011, 06:17:46 PM
Aaaaaamigo, sabía que los dos puntos (:) y el endfor; equivalía a { y }, no sé cómo lo averigüé, pero me vino a la cabeza rápido y sin apenas saber de PHP jajaj

$4lu2!

EDITO: Hay una cosa que creo que no está explicada y no sé si lo entiendo: if(isset($_POST['go'])): //Si se envio el formulario

Eso para qué sirve? Porque es que yo eso lo entiendo como si fuera el botón SUBMIT :S para qué vale eso que determina si se ha enviado el formulario si de igual forma sin eso el botón ya se dirige al procesar.php y es lo mismo, no?? Es que no sé no lo entiendo mucho xD
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 02, 2011, 11:27:36 PM
Lo que pasa es que en mi código lo hago en un solo archivo y si no compruebo que se envió el formulario literalmente siempre tiraría error (error, no es numérico), entonces el isset es para saber si alguna variable, constante, etc, tiene algún valor y como sabemos, value es de valor, entonces el botón tiene de valor Enviar en este caso, con isset (como dije anteriormente) comprobamos que tenga algo ese botón para de esta manera y con lógica saber que se envió.
No necesariamente debes comprobar el botón, puedes utilizar la casilla de texto:

Código (php) [Seleccionar]

<?php
if(isset($_POST['msg'])): //Si se envio el formulario
//Bla bla bla
endif; //Cerramos if de envio de formulario
?>

<form action="" method="POST">
Mensaje: <input type="text" name="msg" /><br />
<input type="submit" name="go" value="Enviar" />
</form>


En resúmen, comprobamos con isset que algun ítem del formulario tenga valor (te recomendaría siempre utilizar el del botón) ya que si no lo hacemos (y lo ponemos en un solo archivo o inclusive en diferente página) tirará algo que no queremos, ejemplo:

Código (html) [Seleccionar]

<form action="test.php" method="POST">
Mensaje: <input type="text" name="msg" /><br />
<input type="submit" name="go" value="Enviar" />
</form>


Código (php) [Seleccionar]

<?php
if($_POST['msg'] == 'xt3mp'):
  echo 
'Es Xt3mP';
else:
  echo 
'No es Xt3mP';
endif;
?>



Si tu entras por el formulario y lo envías con el valor Xt3mP (se enviará a test.php) te dirá "Es Xt3mP", pero si tu entras directamente a test.php siempre te tirará "No es Xt3mP" porque no se comprueba que se envió algo.

Esto mismo pasaria si pusieramos todo en un solo archivo .php, siempre tirará "No es Xt3mP", por eso compruebo que se haya envíado literalmente el formulario.

Es solo un ejemplo, saludos.
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: [T]Killer en Junio 03, 2011, 06:05:17 AM
Ah, es que yo tengo los dos archivos por separado, el formulario.html y el procesar.php, entonces no sé si eso tengo que dejarlo o qué, aunque de momento está ahí.

Por cierto, me va gustando eso de los dos puntos (:), te ahorras unas cuantas líneas en realidad y es más cómodo jeje...
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 03, 2011, 03:15:57 PM
Tu script trabaja bien si entras a formulario.html y posteriormente envias los datos a procesar.php, pero que pasa si entras directamente a procesar.php? Te tirara el error ya que no se envio el formulario por lo tanto la comprobacion seria nula literalmente, por eso recomiendo comprobar que se haya enviado realmente el formulario, saludos.
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: [T]Killer en Junio 03, 2011, 03:20:53 PM
Vale, ya lo he entendido. Yo pensaba que sólo en tu caso, es decir, todo en un mismo archivo PHP, era necesario comprobar el envío, pero ya me acabas de aclarar que no es sólo en tu caso, sino también en el mío de los dos archivos por separado.

Una pregunta, ¿este código es correcto? Funcionar funciona, pero no sé yo si está bien planteado...

<?php
// Constantes
define('const1','valorconst1');
if(
defined('const1')) #Comprobamos si está definida y si lo está...
echo 'La constante <b>const1</b> está definida y su valor es <b>'.const1,'</b>.<br />';
else
echo 
'La constante <b>const1</b> no está definida.<br />';
if(
defined('const2'))
echo 
'La constante <b>const2</b> está definida y su valor es '.const2;
else
echo 
'La constante <b>const2</b> no está definida.';
?>


$4lu2
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 03, 2011, 08:11:11 PM
Si esta bien pero te recomendaría cerrar los if para evitar problemas de sintáxis en un futuro; simplemente es una recomendación.
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Mavis en Junio 03, 2011, 08:32:30 PM
El tema se ha marcado como solucionado, lo cierro.
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 03, 2011, 09:33:33 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
El tema se ha marcado como solucionado, lo cierro.

Lo siento por abrir de nuevo el tema pero si te das cuenta en este mismo tema le he resuelto varias dudas de mi taller a KR0N3N, el fue el que puso solucionado en el título del post, saludos.
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Mavis en Junio 04, 2011, 12:14:12 PM
Tema re-abierto a pedido del usuario para mas dudas del taller.
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: [T]Killer en Junio 04, 2011, 03:32:37 PM
Sí, gracias, y aquí va la siguiente duda: ¿el ejercicio 4 hay que hacer exactamente todos los temas que se han explicado en el paper, absolutamente todos? Es que son bastantes... yo de momento llevo hechos los más importantes :o
Título: Re:[Solucionado][Duda][Taller de PHP] Ejercicio III
Publicado por: Xt3mP en Junio 04, 2011, 10:31:13 PM
Pues no es obligatorio que utilizes todas las del taller, pero si al menos unas cuantas para que de esta manera vayas prácticando y tu aprendizaje sea mucho mejor; saludos.