Ver Mensaje Individual
  #23 (permalink)  
Antiguo 03/12/2008, 20:47
kukamonga
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: el Formulario me llega vacio

Hola Drecker:

foreach es constructor que sirve para pasar por cada uno de los registros de una matriz(array).

Por ej: cuando haces clic en enviar formulario todos los campos que este contiene (nombre, telefono, comentario y cualquiera que hayas definido) son pasados en forma de array.

El array es una variable que dentro de si contiene varios valores. Para este caso la variable array donde llegan todos los datos del formulario se llama: $_POST(todos los valores pasados por el método de envío POST)
por ejemplo, si quisiéramos imprimir en pantalla el valor "nombre" que envió nuestro formulario y que ahora es parte en la matriz $_POST, tendríamos que hacerlo de la sig. manera:

Código PHP:
echo $_POST['nombre']; 
El resultado será el nombre que hayamos ingresado en el form. para este campo.

fijate que estoy usando la matriz $_POST agregándo corchetes[] al final, entre los corchetes indiqué cuál es el valor al que quiero acceder, para el caso anterior 'nombre'. Esto que va entre corchetes se llama key(llave).
Si ahora quisiéramos imprimir lo que nos envió el campo "comentario" sólo debemos cambiar el key(llave) por 'comentario' Ej.:

Código PHP:
echo $_POST['comentario']; 
Bien, volviendo a la pregunta original... foreach pasa por cada uno de los registros de esta matriz para realizar algo con los registros.
En el ejemplo que está a continuación verás que se define para todos los valores de
$_POST "devolver" su llave en la variable $key => y el valor de esa llave en va laviable $value.

por ej, nuestro primer ejempo $key='nombre' $value='pepe'(lo que hayamos ingresado en el formulario)
Código PHP:
foreach($_POST as $key=>$value){
   (
$key!='EnviarForm'?$StrMsj.="$key: $value\n":null);

Luego lo que ves dentro de foreach es una condición IF común, a continuación la escribo de otra forma:

Código PHP:
if($key!='EnviarForm'){ // Si $key es distinto a 'EnviarForm' hacer lo siguiente.
   
$StrMsj.="$key: $value\n"//Graba todos los valores como string(cadena) dentro de $StrMsj sin remplazar lo que anteriormente estaba, esto se define con un concatenador .=
}else{ //Sino
    //No hacer nada

Luego la variable $StrMsj es la que se envía por correo.
Intenta lo siguiente, agrega un texto(que no sea comillas o \) luego de $key o antes para probar cual sería el resultado.

Bueno, espero se entienda y te ayude a comprender un poco más el lenguaje.
Saludos,
Alejandro