Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/03/2009, 06:42
Avatar de sirguy
sirguy
 
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 6 meses
Puntos: 12
Respuesta: como funciona un formulario en flash??

En realidad es más sencillo de lo que parece, con un par de tutoriales el tema se saca. Lo primero es comprender el tema de loadvars, este tutorial lo explica bien:

http://www.cristalab.com/tutoriales/...-loadvars-c7l/

Vamos a ver el tema de el envío, luego ya validaremos. Nosotros enviamos unas variables a un archivo, éste será php, asp,... yo uso php. Por qué enviarlos a un php? Porque si no los los valores de los campos del formulario se van a limbo (a ningún lado). El php coge esos valores y los envía al mail especificado:

//Declaro las variables para enviar y para recibir
var envio_lv:LoadVars = new LoadVars();
var recibir_lv:LoadVars = new LoadVars();
//Función que envia el forumlario
function enviarMail() {
envio_lv.asunto = asunto_txt.text;
envio_lv.email = email_txt.text;
envio_lv.cuerpo = cuerpo_txt.text;
envio_lv.sendAndLoad("email.php", recibir_lv, "POST");
//Aqui ustedes pueden cambiar de form.php a form.asp dependiendo del servidor
//que usen
}
//Función que procesa los datos recibidos del servidor
recibir_lv.onLoad = function(exito) {
if (exito) {
estado_txt.text = this.estado;
} else {
//Muestra un mensaje de error en negrita
estado_txt.text = "Error en la aplicación de correo";
}
};

En este caso el form cuenta con tres campos: asunto, correo y comentarios (asunto,email,cuerpo), por ejemplo:envio_lv.asunto = asunto_txt.text;

Declaras las variables con un nombre: envio_lv.
El php recibirá dicha variable con un nombre: asunto.
El valor es el valor del texto cuyo n. de instancia es asunto_txt

Esto sirve para cada uno de los campos.

Si lees el código un par de veces verás que no es difícil, auqnue seas diseñadora.

Ahora vamos al php:

Código PHP:
<?php
    $sendTo 
"[email protected]";
    
$subject $_POST["asunto"];
    
$headers "From: " "El nombre de la empresa";
    
$headers .= "<" $_POST["email"] . ">\r\n";
    
$headers .= "Reply-To: " $_POST["email"]; 
    
$message $_POST["cuerpo"];
    
mail($sendTo$subject$message$headers);
    echo 
"estado=Mensaje enviado :D";
?>
Poner $algo, en php es el nombre de la variable, le pone sendto,subject,... porque es adecuado para este caso. Lo que viene después no se puede cambiar:

$_POST["asunto"];

¿te acuerdas antes que hemos llamado asunto a la variable? (envio_lv.asunto...) Pues esto recoge ese valor, lo mismo para el correo al que responder y el cuerpo.

Variables como $sendto (que se podría llamar $enviara...o como queramos) las definimos aquí a mano puesto que las ponemos nosotros y no vienen desde el formulario. Lo mismo para el origen, que viene desde el formulario de la empresa.

Si quieres más campos los añades en el flash, por ejemplo:envio_lv.edad=edad_txt.text

Y los recibes en el php:

$edadcliente=$_POST["edad"]. Eso sí los tendrás que añadir en el mensaje de esta manera, jugando un poco con html y php:

$message = $_POST["cuerpo"]."<br>Edad:".$edadcliente;

Fiíjate que lo empalmas con puntos en lugar del signo + ("formato html".$variableenphp."mas html".$otravariablephp."<br>Salto de líea con html").

De esta manera puedes meter de todo en el mensaje.

Por último nos queda enviar el mensaje, usando la función mail():
mail($sendTo, $subject, $message, $headers);

Esto envía todo al correo especificado.

echo "estado=Mensaje enviado :D";

Esta línea envía una variable al flash con valor estado:

recibir_lv.onLoad = function(exito) {
if (exito) {
estado_txt.text = this.estado;
}

Esta variable se recibe y pasa el valor al campo de texto.

Esto es relativamente sencillo. En cuanto a validar este tutorial te ayudará mucho:

www.tutoriales-flash.com/tutorial.asp?id_tuto=21, olvida un poco todo y céntrate a partir de esta línea:

// función para validar el email ------------------------------------------
...

Te muestra un poco como validar, en tu caso debes usar en lugar de arg el nombre de instancia de tus campos:

if (asunto_txt.text== "" || asunto_txt.text == null || asunto_txt.text == "null" || asunto_txt.text == undefined || asunto_txt.text == "undefined") {...

En lugar de hacer un trace envías el valor a estado_txt para notificar el fallo. Si está todo bien hace un return true, pues ahí llamas a la función del primer tutorial:

return true;
enviarMail();

Una cosa piensa que el botón del primer ejemplo llama directamente enviarmail(), debes cambiarlo por el nombre de la función de validación que no es como en el segundo tutorial, sería algo así:

function validar(){
if (arg == "" || arg == null || arg == "null" || arg == undefined || arg == "undefined") {
return false;
// trace("cadena vacía");
// compruebo si hay una arroba y solo una
} else if (arg.indexOf("@") == -1 || arg.indexOf("@") != arg.lastIndexOf("@")) {
return false;
...
return true;
enviarmail()
}

En el botón de enviar:

on (release) {
validar();
}


A grandes rasgos es esto. Quizá debas especificar más las dudas.


Un saludo
__________________
Chanante!