Enviar Formulario de Contacto
Para poder enviar un formulario de contacto en Flash es necesario utilizar un lenguaje del lado del servidor que permita enviar el correo con los datos que el usuario introdujo en Flash. Algunos ejemplos de estos lenguajes del lado de servidor son PHP, JSP y ASP.
En este ejemplo veremos cómo enviar por mail un formulario de contacto usando PHP.
Para fines de este tutorial, se pondrán en el formulario algunos de los componentes que ya vimos en los post pasados. Estos componentes son ComboBox, RadioButton y CheckBox.
Para este tutorial usaremos Flash 8. El ejemplo y los archivos de este tutorial los encuentras al final de esta entrada.
Por razones de seguridad, el ejemplo que se encuentra al final de este post no enviará ningún correo electrónico (para evitar que se llene el buzón o llegue puro correo basura). En lugar de mandar el correo electrónico mostraré el resultado final de cómo se vería el correo electrónico (tanto en formato HTML como en formato de texto plano). Sin embargo, los archivos de esta entrada y el código aquí pegado, sí tienen la instrucción para enviar el correo electrónico.
Tutorial
I. Haciendo el formulario en Flash
1. Crea un nuevo documento de Flash de 420px por 380px.
2. Arrastra al escenario los siguientes componentes (recuerda que estos componentes están dentro de la sección User Interface del panel Components (Ctrl. + F7) :
- 2 Campos de texto (TextInput)
- 2 Botones de Radio (RadioButton)
- 1 ComboBox
- 5 CheckBoxes
- 1 TextArea
- 1 Botón (Button)
Además, crea 5 textos dinámicos con el (*) como texto (estos los usaremos para mostrar los campos obligatorios que el usuario debe llenar. Para este ejemplo, haremos que todos los datos sean obligatorios). A estos textos, ponles como nombre de instancia msj1, msj2, msj3, etc.
3. Selecciona cada componente que arrastraste al escenario y ponle los siguientes nombres de instancia (dentro del Panel Propiedades):
- 1er Campo de texto (TextInput) -> nombre_txt
- 2do Campo de texto (TextInput) -> correo_txt
- 1er Botón de Radio (RadioButton) -> radio1
- 2do Botón de Radio (RadioButton) -> radio2
- ComboBox -> pais_cb
- 1er CheckBox -> check1, 2do CheckBox -> check2, 3er CheckBox -> check3, 4to CheckBox -> check4, 5to CheckBox -> check5
- TextArea -> comentarios_txt
- Botón -> enviar_btn
4. Además, cambia los siguientes parámetros (tercera pestaña del panel Propiedades) a estos componentes:
- radio1: data = F, groupName = sexoGroup, label = Femenino
- radio2: data = M, groupName = sexoGroup, label = Masculino
- check1: label = Flash
- check2: label = Flex
- check3: label = AIR
- check4: label = PHP
- check5: label = Ajax
5. Acomoda todos los componentes anteriores para que te queden similar a la siguiente imagen:

6. Es momento de escribir el código. A la capa (layer) existente asígnale el nombre de Forma. Crea una nueva capa llamada Acciones. En el panel Actions de esta capa escribe lo siguiente:
-
// Importamos la librería del componente Alert
-
import mx.controls.Alert;
-
// Sólo por estética, cambiamos el color del tema (cambiamos el verde que aparece por default)
-
_global.style.setStyle("themeColor", 0xCCFFFF);
-
/* Esta línea es importante para que todo lo que el usuario escriba o seleccione tenga acentos, se muestren de forma correcta y no con caracteres raros (Ej. Ã) */
-
System.useCodepage = true;
-
/* Creamos un arreglo para guardar los temas seleccionados por el usuario (es decir, las opciones de los checkboxes que el usuario seleccionó) */
-
var temas:Array = new Array();
-
/* En el arrelgo paises gaurdaremos los datos que aparecerán en el combobox de países */
-
var paises:Array = new Array();
-
/* Creamos dos objetos de la clase LoadVars, uno para enviar los datos introducidos por el usuario y el otro para recibir la respuesta enviada por el archivo de PHP */
-
var enviar_lv:LoadVars = new LoadVars();
-
var resultado_lv:LoadVars = new LoadVars();
-
/* Hacemos la llamada a la función initForm, la cual a su vez llamará a otras funciones para, por ejemplo, llenar el combobox de los paises, cambiarle el estilo a los botones de radio, etc. El código de esta función está en el siguiente bloque de código ActionScript. */
-
initForm();
El código anterior muestra la declaración variables e importación de clases necesarias (en este caso sólo una clase). Ahora nos enfocaremos en las funciones que escribiremos en nuestro código.
-
/* Esta función llama a los métodos encargados de cambiar los estilos de los botones de radio, checkboxes, etc. */
-
function initForm() {
-
escondeMensajes();
-
setEstilosRadioButtons();
-
setEstilosCheckBoxes();
-
llenaComboPaises();
-
}
-
/* Escondemos (no mostramos) los mensajes que le indicarán al usuario qué campos le faltó introducir. Es decir, los campos obligarios marcados por (*). */
-
function escondeMensajes() {
-
for(var i = 1; i <7; i++) {
-
this["msj" + i]._visible = false;
-
}
-
}
-
/* Le cambiamos el formato a los botones de radio. Si no entiendes esta parte, por favor revisa el post sobre el componente RadioButton */
-
function setEstilosRadioButtons() {
-
for(var i = 1; i <3; i++) {
-
this["radio" + i].setStyle("color", 0x990000);
-
this["radio" + i].setStyle("fontWeight", "bold");
-
this["radio" + i].setStyle("marginLeft", 2);
-
}
-
}
-
/* Le cambiamos el formato a los checkboxes. Si no entiendes esta parte, por favor revisa el post sobre el componente CheckBox */
-
function setEstilosCheckBoxes() {
-
for(var i = 1; i <6; i++) {
-
this["check" + i].setStyle("color", 0x990000);
-
this["check" + i].setStyle("fontWeight", "bold");
-
this["check" + i].setStyle("marginLeft", 2);
-
}
-
}
-
/* Esta función llena el arreglo países con las opciones que nos interesa mostrar en el combobox de países. Después de llenar el arreglo se lo asignamos como dataProvider al combobox pais_cb y le decimos que ordene las opciones de acuerdo a su etiqueta (label). Si no entiendes esta parte, por favor revisa el post sobre el componente ComboBox */
-
function llenaComboPaises() {
-
paises.push({label:"-- Selecciona --", data:0});
-
paises.push({label:"México", data:"MEX"});
-
paises.push({label:"España", data:"ESP"});
-
paises.push({label:"Colombia", data:"COL"});
-
paises.push({label:"Argentina", data:"ARG"});
-
paises.push({label:"Chile", data:"CHI"});
-
paises.push({label:"Perú", data:"PER"});
-
paises.push({label:"Venezuela", data:"VEN"});
-
-
paises.push({label:"Ecuador", data:"ECU"});
-
paises.push({label:"Costa Rica", data:"COS"});
-
paises.push({label:"Uruguay", data:"URU"});
-
paises.push({label:"Bolivia", data:"BOL"});
-
paises.push({label:"Estados Unidos", data:"EUA"});
-
paises.push({label:"Guatemala", data:"GUA"});
-
paises.push({label:"Brasil", data:"BRA"});
-
paises.push({label:"Cuba", data:"CUB"});
-
paises.push({label:"Panamá", data:"PAN"});
-
paises.push({label:"El Salvador", data:"SAL"});
-
paises.push({label:"Nicaragua", data:"NIC"});
-
paises.push({label:"Otro", data:"Otr"});
-
pais_cb.dataProvider = paises;
-
pais_cb.sortItemsBy("label");
-
}
Las siguientes funciones son vitales para el tratamiento del formulario:
-
/* Asignamos las acciones al botón de Enviar. En este caso, el botón de Enviar hará el llamado a la función validaForma para verificar que el usuario haya llenado los campos obligatorios. Como lo dije anteriormente, para este ejemplo haremos que el usuario tenga que llenar todos los campos. */
-
enviar_btn.onRelease = function() {
-
validaForma();
-
}
-
/* Esta función se encarga de validar que todos los campos obligatorios fueron llenados. Primero hacemos llamamos a la función escondeMensajes para no mostrar los campos dinámicos (msj1, msj2, etc.) en caso de que sea la segunda vez que se llama a la función validaForma. */
-
function validaForma() {
-
escondeMensajes();
-
if(nombre_txt.text == "") { // Vemos si el campo de texto del nombre está vacío
-
msj1._visible = true; // Como el campo del nombre no fue llenado, mostramos el primer mensaje
-
nombre_txt.setFocus(); // Colocamos el foco o cursor en el campo del nombre
-
} else if(correo_txt.text == "" || !esCorreo(correo_txt.text)) { /* Vemos si el campo del correo está vacío y sí el formato del correo es correcto */
-
msj2._visible = true; /* Mostramos el segundo mensaje ya que el campo del correo está vacío o bien el formato es incorrecto */
-
correo_txt.setFocus(); // Ponemos el cursos en el campo del correo
-
} else if(sexoGroup.selection.data == undefined) { /* Si se cumple esta sentencia quiere decir que el usuario no seleccionó ninguna opción de los botones de radio */
-
msj3._visible = true; // Mostramos el tercer mensaje
-
radio1.setFocus(); // Ponemos el cursor en el primer botón de radio
-
} else if(pais_cb.selectedIndex == 0) { /* Si se cumple este condicional quiere decir que el usuario no seleccionó ninguna opción del combobox de los países. Si el índice seleccionado (selectedIndex) es igual a 0, entonces la opción seleccionada es la que dice "-- Seleccionar --", por lo tanto no nos interesa que el usuario use esa opción */
-
msj4._visible = true;
-
pais_cb.setFocus();
-
} else {
-
temas = buscaChecksSeleccionados(); /* Guardamos en el arreglo temas los valores de los checkboxes que el usuario seleccionó. La función buscaChecksSeleccionados nos regresa un arreglo con los valores de los checkboxes seleccionados */
-
if(temas.length == 0) { /* Si la longitud del arreglo temas es igual a 0, entonces el usuario no seleccionó ninguna opción; por lo tanto, mostramos el quinto mensaje y ponemos el cursor en el primer checkbox */
-
msj5._visible = true;
-
check1.setFocus();
-
} else if(comentarios_txt.text == "") { /* Si la caja de texto de los comentarios está vacía, mostramos el sexto mensaje y posicionamos el cursor en la caja de texto (TextArea) */
-
msj6._visible = true;
-
comentarios_txt.setFocus();
-
} else { /* Si ninguno de los condicionales anteriores se cumplió, quiere decir que el usuario llenó todos los campos necesarios. Mandamos a llamar la función enviarCorreo */
-
enviarCorreo();
-
}
-
}
-
}
-
/* Esta función regresa un arreglo con los valores de los CheckBox(es) seleccionados. Recorremos todos los componentes checkbox por medio de un ciclo for y vemos el valor de la propiedad "selected" de cada uno de ellos. Si no entiendes esta parte, por favor revisa el post sobre el componente CheckBox */
-
function buscaChecksSeleccionados():Array {
-
var temp = new Array();
-
for(var i = 1; i <6; i++) {
-
if(this["check" + i].selected) {
-
temp.push(this["check" + i].label);
-
}
-
}
-
return temp;
-
}
-
/* Esta función nos permite revisar si el formato del correo electrónico es correcto. Es decir, que contenga @, el punto xxx, etc. */
-
function esCorreo(email:String):Boolean
-
{
-
var res:Boolean = false;
-
if(email.indexOf("@")>0 && email.indexOf("@") == email.lastIndexOf("@"))
-
{
-
if(email.lastIndexOf(".")> email.indexOf("@") && email.lastIndexOf(".")<email.length-1)
-
{
-
res = true;
-
}
-
}
-
return res;
-
}
El siguiente código muestra el script de la función enviarCorreo.
-
/* Explicación: Primero desactivamos el botón de enviar para que el usuario no haga click más de una vez. Al objeto enviar_lv de la clase LoadVars le copiamos el valor de cada uno de los campos del formulario y los enviamos al archivo de PHP (enviar_formulario_de_contacto.php). A la función sendAndLoad del objeto enviar_lv, le pasamos como parámetro el path del archivo que recibirá los datos, el objeto de la clase LoadVars que recibirá la respuesta y el método en cómo se enviarán los datos (POST o GET). Este último parámetro es opcional y por default el valor es de POST. NOTA: Si quieres cargar el resultado del archivo pasado como primer parámetro, deberás usar la función send. En los archivos de este tutorial que encuentras más abajo en un archivo zip, usamos la función sendAndLoad ya que nos interesa mostrar un mensaje de alerta (con el resultado) dentro del mismo Flash y no dentro del PHP. Sin embargo, el ejemplo que se encuentra más abajo utiliza la función send para mostrar dentro del mismo PHP el mensaje del correo electrónico en formato HTML y Texto Plano. */
-
function enviarCorreo() {
-
enviar_btn.enabled = false;
-
enviar_lv.nombre = nombre_txt.text;
-
enviar_lv.correo = correo_txt.text;
-
enviar_lv.sexo = sexoGroup.selection.data;
-
enviar_lv.pais = pais_cb.selectedItem.label;
-
enviar_lv.temas = temas;
-
enviar_lv.comentarios = comentarios_txt.text;
-
enviar_lv.sendAndLoad("enviar_formulario_de_contacto.php", resultado_lv, "POST");
-
}
-
/* El evento onLoad del objeto resultado_lv es invocado cuando la llamada a los métodos load() o sendAndLoad() ha sido terminada. Asignamos el resultado regresado por el PHP a la variable respuesta. Si la llamada fue exitosa, vemos si la respuesta es igual a 'S', si es así mostramos un mensaje señalando que el mensaje ha sido enviado y llamamos a la función reestablecerForma para borrar los datos ingresados por el usuario. Si la respuesta es distinto a 'S' o bien si la llamada no fue exitosa, mostramos un mensaje señalando que hubo un error en el envío. Por último, volvemos a activar el botón de enviar. */
-
resultado_lv.onLoad = function(success:Boolean)
-
{
-
var respuesta = this.resultado;
-
if(success)
-
{
-
if(respuesta == "S")
-
{
-
Alert.show("Su mensaje ha sido enviado.", "Gracias", Alert.OK, null, "alerta", Alert.OK);
-
reestablecerForma();
-
}
-
else
-
{
-
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
-
}
-
}
-
else
-
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
-
enviar_btn.enabled = true;
-
};
-
/* Esta función borra los datos introducidos por el usuario. */
-
function reestablecerForma() {
-
nombre_txt.text = "";
-
correo_txt.text = "";
-
desactivarSexo();
-
desactivarTemas();
-
pais_cb.selectedIndex = 0;
-
comentarios_txt.text = "";
-
}
-
/* Su función es poner todos los botones de radio como no seleccionados */
-
function desactivarSexo() {
-
for(var i = 1; i <3; i++) {
-
this["radio" + i].selected = false;
-
}
-
}
-
/* Su función es poner todos los CheckBox(es) como no seleccionados */
-
function desactivarTemas() {
-
for(var i = 1; i <6; i++) {
-
this["check" + i].selected = false;
-
}
-
}
Ese es todo el código que deberá llevar el documento de Flash.
II. Programando el script en PHP para el envío del correo
A continuación pegaré todo el código del archivo enviar_formulario_de_contacto.php. Dentro del código están los comentarios para que puedas entender qué hace cada línea de código.
-
<html>
-
<head>
-
</head>
-
<body>
-
<?php
-
/**
-
* @author Carla Macías
-
* @copyright 2008
-
* @url http://codigometropoli.com/
-
*/
-
/* 1. Recibimos las variables que mandamos por Flash.
-
Para recibirlas usaremos la matriz asociativa $_POST, la cual contiene los valores del formulario enviados por medio de LoadVars.
-
Importante: Los nombres de variables que recibe $_POST deberán ser
-
iguales a las variables enviadas por Flash. Con lo anterior, me refiero a la variable que está dentro de los [] de $_POST. */
-
$correo = $_POST["correo"]; /* Campo de texto corto (TextField) */
-
$sexo = $_POST["sexo"]; /* Botón de Radio. Esta variable trae la etiqueta del botón de radio seleccionado por el usuario. Debido a que el usuario solamete puede escoger una opción, basta con recibir el valor por medio de $_POST */
-
$pais = $_POST["pais"]; /* ComboBox. Igual que en el anterior, estamos recibiendo el valor de la etiqueta de la opción seleccionada por el usuario; basta con recibirla por medio de $_POST */
-
$temas = explode(',',$_POST["temas"]); /* CheckBox. Debido a que el usuario pudo haber seleccionado más de una opción, esta variable hay que tratarla de forma distinta. Esta variable trae todos los valores del arreglo (que usamos para guardar los valores de los checkbox seleccionados) separados por comas. Por ejemplo: opcion 1,opcion 2,opcion 3.
-
En este ejemplo, vamos a mostrar los temas en forma de lista, por lo que haremos uso del método explode en PHP. Para más información sobre el método explode visita http://www.php.net/manual/es/function.explode.php para más información */
-
$comentarios = $_POST["comentarios"]; /* TextArea. Es posible que la información en este campo introducida por el usuario sea larga y que lleve saltos de línea. Para mostrarlo de igual forma en el correo usaremos la función nl2br (ver más adelante). */
-
$formatos = array("text/html", "text/plain"); /* No modificar, solamente estoy declarando un arreglo */
-
/* 2. Declaramos las variables sobre el correo electrónico. */
-
$remitente = "no-reply@codigometropoli.com"; /* Cuenta de correo de donde se "manda"" el mail. En este caso no importa que la cuenta de correo exista, ni que sea similar a no-reply@, web@, contacto@, etc ya que este formulario de contacto le estaría llegando al webmaster o los de ventas, relaciones públicas, etc. */
-
$para = "msj1@codigometropoli.com,msj2@codigometropoli.com"; /* Cuenta de correo a donde se enviarán los mails. Separar por comas en caso de que sean más de uno. */
-
$asunto = "Mensaje desde Código Metrópoli"; /* Asunto que aparecerá en el correo electrónico */
-
$formato_correo = 0; /* IMPORTANTE: Aquí pon el valor de 0 si quieres que el formato del correo sea HTML y 1 si quieres que sea texto plano. 0 --> HTML, 1 -> Texto Plano */
-
<p>/* 3. Establecemos las cabeceras (headers) del mail. "Bcc: " . $cc . */
-
$header = "MIME-Version: 1.0\r\n";
-
$header .= "Content-type: " . $formatos[$formato_correo] . "; charset=iso-8859-1\r\n";
-
$header .= "From: " . $remitente . "\n";
-
/* Nota: Si deseas agregar correos de copia o copia oculta, descomenta las siguientes líneas (es decir, borra las // de las siguientes dos líneas) */
-
//$header .= "Cc: copia1@codigometropoli.com,copia2@codigometropoli.com \n";
-
//$header .= "Bcc: copiaoculta1@codigometropoli.com,copiaoculta2@codigometropoli.com \n";
-
if($nombre != "" && $correo != "") { // Siempre es bueno asegurarse que recibimos los datos más importantes para no mandar correos vacíos
-
if($formato_correo == 0) { /* HTML */
-
$mensaje = '
-
<style type="text/css">
-
<!--
-
.Estilo1 {
-
font-family: Arial;
-
font-size: 14px;
-
}
-
.Tabla_Contacto td {
-
padding:5px 5px 10px 5px;
-
}
-
.Estilo2 {
-
color: #990000;
-
font-weight: bold;
-
}
-
hr {
-
color:#003366;
-
background-color:#003366;
-
height:5px;
-
width:450px;
-
margin-left:0px;
-
}
-
-->
-
</style>
-
<p> <span class="Estilo1"><span class="Estilo2">' . $asunto . '</span></span></p>
-
<hr />
-
<table width="438" border="0" cellspacing="0" cellpadding="0" class="Tabla_Contacto">
-
<tr>
-
<td width="111" class="Estilo1"><strong>Nombre:</strong></td>
-
<td width="327" class="Estilo1">' . $nombre . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Email:</strong></td>
-
<td class="Estilo1">' . $correo . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Sexo:</strong></td>
-
<td class="Estilo1">' . $sexo . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>País:</strong></td>
-
<td class="Estilo1">' . $pais . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Temas:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1">';
-
for($i = 0; $i <count($temas); $i++) {
-
$mensaje .= $temas[$i] . "<br />";
-
} $mensaje .= '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Comentarios:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
</tr>
-
</table>
-
<hr />
-
<hr style="height:10px" />';
-
}
-
else { /* Texto Plano */
-
$mensaje = "
-
----------------------------------------------------------------------------\n
-
Nombre: " . $nombre . "\n
-
Email: " . $correo . "\n
-
Sexo: " . $sexo . "\n
-
País: " . $pais . "\n
-
Temas: ";
-
for($i = 0; $i <count($temas); $i++) {
-
$mensaje .= $temas[$i] . "\n";
-
} $mensaje .= "
-
Comentarios: " . $comentarios . "\n
-
----------------------------------------------------------------------------\n";
-
}
-
}
-
if($mensaje != "")
-
{
-
echo '&resultado=S&;';
-
else
-
echo '&resultado=N&';
-
}
-
else
-
echo '&resultado=N&';
-
?>
-
</body>
-
</html>
Hemos llegado al final de este largo tutorial. No olvides ver el ejemplo y bajar el archivo.
Como lo dije al principio del tutorial, por razones de seguridad, el ejemplo que se encuentra a continuación no enviará ningún correo electrónico (para evitar que se llene el buzón o llegue puro correo basura). En lugar de mandar el correo electrónico mostraré el resultado final de cómo se vería el correo electrónico (tanto en formato HTML como en formato de texto plano). Sin embargo, los archivos de esta entrada y el código pegado anteriormente, sí tienen la instrucción para enviar el correo electrónico.
Si te gustó esta entrada anímate a escribir un comentario o suscribirte al feed y obtener los artículos futuros en tu lector de feeds.
Comentarios
Tengo una duda que sucede si elimino los checkboxes? como quedaria el action script.
desee probar hacerlo de esa manera pero me sale el mensaje de error que es lo que esta mal?
/////////////////////
import mx.controls.Alert;
_global.style.setStyle("themeColor", 0xFFE7B3);
System.useCodepage = true;
var paises:Array = new Array();
var enviar_lv:LoadVars = new LoadVars();
var resultado_lv:LoadVars = new LoadVars();
initForm();
function initForm() {
escondeMensajes();
setEstilosRadioButtons();
llenaComboPaises();
}
function escondeMensajes() {
for(var i = 1; i < 7; i++) {
this["msj" + i]._visible = false;
}
}
function setEstilosRadioButtons() {
for(var i = 1; i 0 && email.indexOf("@") == email.lastIndexOf("@"))
{
if(email.lastIndexOf(".")>email.indexOf("@") && email.lastIndexOf(".")<email.length-1)
{
res = true;
}
}
return res;
}
enviar_btn.onRelease = function() {
validaForma();
}
function enviarCorreo() {
enviar_btn.enabled = false;
enviar_lv.nombre = nombre_txt.text;
enviar_lv.correo = correo_txt.text;
enviar_lv.sexo = sexoGroup.selection.data;
enviar_lv.pais = pais_cb.selectedItem.label;
enviar_lv.comentarios = comentarios_txt.text;
enviar_lv.sendAndLoad("enviar_gv.php", resultado_lv, "POST");
}
function reestablecerForma() {
nombre_txt.text = "";
correo_txt.text = "";
desactivarSexo();
pais_cb.selectedIndex = 0;
comentarios_txt.text = "";
}
function desactivarSexo() {
for(var i = 1; i < 3; i++) {
this["radio" + i].selected = false;
}
}
resultado_lv.onLoad = function(success:Boolean)
{
var respuesta = this.resultado;
if(success)
{
if(respuesta == "S")
{
Alert.show("Su mensaje ha sido enviado.", "Gracias", Alert.OK, null, "alerta", Alert.OK);
reestablecerForma();
}
else
{
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
}
}
else
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
enviar_btn.enabled = true;
};
/////////
Hola Andre,
El código del documento de Flash, sin los checkboxes, quedaría así:
-
import mx.controls.Alert;
-
-
_global.style.setStyle("themeColor", 0xCCFFFF);
-
System.useCodepage = true;
-
-
var temas:Array = new Array();
-
var paises:Array = new Array();
-
var enviar_lv:LoadVars = new LoadVars();
-
var resultado_lv:LoadVars = new LoadVars();
-
-
initForm();
-
-
function initForm() {
-
escondeMensajes();
-
setEstilosRadioButtons();
-
llenaComboPaises();
-
}
-
function escondeMensajes() {
-
for(var i = 1; i <7; i++) {
-
this["msj" + i]._visible = false;
-
}
-
}
-
function setEstilosRadioButtons() {
-
for(var i = 1; i <3; i++) {
-
this["radio" + i].setStyle("color", 0x990000);
-
this["radio" + i].setStyle("fontWeight", "bold");
-
this["radio" + i].setStyle("marginLeft", 2);
-
}
-
}
-
-
function llenaComboPaises() {
-
paises.push({label:"-- Selecciona --", data:0});
-
paises.push({label:"México", data:"MEX"});
-
paises.push({label:"España", data:"ESP"});
-
paises.push({label:"Colombia", data:"COL"});
-
paises.push({label:"Argentina", data:"ARG"});
-
paises.push({label:"Chile", data:"CHI"});
-
paises.push({label:"Perú", data:"PER"});
-
paises.push({label:"Venezuela", data:"VEN"});
-
paises.push({label:"Ecuador", data:"ECU"});
-
paises.push({label:"Costa Rica", data:"COS"});
-
paises.push({label:"Uruguay", data:"URU"});
-
paises.push({label:"Bolivia", data:"BOL"});
-
paises.push({label:"Estados Unidos", data:"EUA"});
-
paises.push({label:"Guatemala", data:"GUA"});
-
paises.push({label:"Brasil", data:"BRA"});
-
paises.push({label:"Cuba", data:"CUB"});
-
paises.push({label:"Panamá", data:"PAN"});
-
paises.push({label:"El Salvador", data:"SAL"});
-
paises.push({label:"Nicaragua", data:"NIC"});
-
paises.push({label:"Otro", data:"Otr"});
-
-
pais_cb.dataProvider = paises;
-
pais_cb.sortItemsBy("label");
-
}
-
function validaForma() {
-
escondeMensajes();
-
if(nombre_txt.text == "") {
-
msj1._visible = true;
-
nombre_txt.setFocus();
-
} else if(correo_txt.text == "" || !esCorreo(correo_txt.text)) {
-
msj2._visible = true;
-
correo_txt.setFocus();
-
} else if(sexoGroup.selection.data == undefined) {
-
msj3._visible = true;
-
radio1.setFocus();
-
} else if(pais_cb.selectedIndex == 0) {
-
msj4._visible = true;
-
pais_cb.setFocus();
-
} else if(comentarios_txt.text == "") {
-
msj6._visible = true;
-
comentarios_txt.setFocus();
-
} else {
-
enviarCorreo();
-
}
-
}
-
function esCorreo(email:String):Boolean
-
{
-
var res:Boolean = false;
-
if(email.indexOf("@")>0 && email.indexOf("@") == email.lastIndexOf("@"))
-
{
-
if(email.lastIndexOf(".")>email.indexOf("@") && email.lastIndexOf(".")<email.length-1)
-
{
-
res = true;
-
}
-
}
-
return res;
-
}
-
enviar_btn.onRelease = function() {
-
validaForma();
-
}
-
function enviarCorreo() {
-
enviar_btn.enabled = false;
-
enviar_lv.nombre = nombre_txt.text;
-
enviar_lv.correo = correo_txt.text;
-
enviar_lv.sexo = sexoGroup.selection.data;
-
enviar_lv.pais = pais_cb.selectedItem.label;
-
enviar_lv.temas = temas;
-
enviar_lv.comentarios = comentarios_txt.text;
-
enviar_lv.sendAndLoad("enviar_formulario_de_contacto.php", resultado_lv, "POST");
-
}
-
function reestablecerForma() {
-
nombre_txt.text = "";
-
correo_txt.text = "";
-
desactivarSexo();
-
desactivarTemas();
-
pais_cb.selectedIndex = 0;
-
comentarios_txt.text = "";
-
}
-
function desactivarSexo() {
-
for(var i = 1; i <3; i++) {
-
this["radio" + i].selected = false;
-
}
-
}
-
resultado_lv.onLoad = function(success:Boolean)
-
{
-
var respuesta = this.resultado;
-
if(success)
-
{
-
if(respuesta == "S")
-
{
-
Alert.show("Su mensaje ha sido enviado.", "Gracias", Alert.OK, null, "alerta", Alert.OK);
-
reestablecerForma();
-
}
-
else
-
{
-
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
-
}
-
}
-
else
-
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
-
-
enviar_btn.enabled = true;
-
};
Y el del documento en PHP cambia a lo siguiente:
-
<html>
-
<head>
-
<title>Contacto</title>
-
</head>
-
<body>
-
<?php
-
-
/**
-
* @author Carla Macías
-
* @copyright 2008
-
* @url http://codigometropoli.com/
-
*/
-
-
/* 1. Recibimos las variables que mandamos por Flash.
-
Para recibirlas usaremos la matriz asociativa $_POST, la cual contiene los valores del formulario enviados por medio de LoadVars.
-
Importante: Los nombres de variables que recibe $_POST deberán ser
-
iguales a las variables enviadas por Flash. Con lo anterior, me refiero a la variable que está dentro de los [] de $_POST. */
-
-
$correo = $_POST["correo"]; /* Campo de texto corto (TextField) */
-
$sexo = $_POST["sexo"]; /* Botón de Radio. Esta variable trae la etiqueta del botón de radio seleccionado por el usuario. Debido a que el usuario solamete puede escoger una opción, basta con recibir el valor por medio de $_POST */
-
$pais = $_POST["pais"]; /* ComboBox. Igual que en el anterior, estamos recibiendo el valor de la etiqueta de la opción seleccionada por el usuario; basta con recibirla por medio de $_POST */
-
$comentarios = $_POST["comentarios"]; /* TextArea. Es posible que la información en este campo introducida por el usuario sea larga y que lleve saltos de línea. Para mostrarlo de igual forma en el correo usaremos la función nl2br (ver más adelante). */
-
$formatos = array("text/html", "text/plain"); /* No modificar, solamente estoy declarando un arreglo */
-
-
/* 2. Declaramos las variables sobre el correo electrónico. */
-
$remitente = "no-reply@tu_servidor_web.com"; /* Cuenta de correo de donde se "manda"" el mail. En este caso no importa que la cuenta de correo exista, ni que sea similar a no-reply@, web@, contacto@, etc ya que este formulario de contacto le estaría llegando al webmaster o los de ventas, relaciones públicas, etc. */
-
$para = "webmaster@tu_servidor_web.com,contacto@tu_servidor_web.com"; /* Cuenta de correo a donde se enviarán los mails. Separar por comas en caso de que sean más de uno. */
-
$asunto = "Mensaje desde Código Metrópoli"; /* Asunto que aparecerá en el correo electrónico */
-
$formato_correo = 0; /* IMPORTANTE: Aquí pon el valor de 0 si quieres que el formato del correo sea HTML y 1 si quieres que sea texto plano. 0 --> HTML, 1 -> Texto Plano */
-
-
/* 3. Establecemos las cabeceras (headers) del mail. "Bcc: " . $cc . */
-
$header = "MIME-Version: 1.0\r\n";
-
$header .= "Content-type: " . $formatos[$formato_correo] . "; charset=iso-8859-1\r\n";
-
$header .= "From: " . $remitente . "\n";
-
/* Nota: Si deseas agregar correos de copia o copia oculta, descomenta las siguientes líneas (es decir, borra las // de las siguientes dos líneas) */
-
//$header .= "Cc: copia1@tu_servidor_web.com,copia2@tu_servidor_web.com \n";
-
//$header .= "Bcc: copiaoculta1@tu_servidor_web.com,copiaoculta2@tu_servidor_web.com \n";
-
-
if($nombre != "" && $correo != "") { // Siempre es bueno asegurarse que recibimos los datos más importantes para no mandar correos vacíos
-
if($formato_correo == 0) { /* HTML */
-
$mensaje = '
-
<style type="text/css">
-
<!--
-
.Estilo1 {
-
font-family: Arial;
-
font-size: 14px;
-
}
-
.Tabla_Contacto td {
-
padding:5px 5px 10px 5px;
-
}
-
.Estilo2 {
-
color: #990000;
-
font-weight: bold;
-
}
-
hr {
-
color:#003366;
-
background-color:#003366;
-
height:5px;
-
width:450px;
-
margin-left:0px;
-
}
-
-->
-
</style>
-
-
<span class="Estilo1"><span class="Estilo2">' . $asunto . '</span></span><br />
-
<br />
-
<hr />
-
<table width="438" border="0" cellspacing="0" cellpadding="0" class="Tabla_Contacto">
-
<tr>
-
<td width="111" class="Estilo1"><strong>Nombre:</strong></td>
-
<td width="327" class="Estilo1">' . $nombre . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Email:</strong></td>
-
<td class="Estilo1">' . $correo . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Sexo:</strong></td>
-
<td class="Estilo1">' . $sexo . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>País:</strong></td>
-
<td class="Estilo1">' . $pais . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Temas:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Comentarios:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
</tr>
-
</table>
-
<hr />
-
<hr style="height:10px" />';
-
-
}
-
else { /* Texto Plano */
-
-
$mensaje = "
-
----------------------------------------------------------------------------\n
-
Nombre: " . $nombre . "\n
-
Email: " . $correo . "\n
-
Sexo: " . $sexo . "\n
-
País: " . $pais . "\n
-
Comentarios: " . $comentarios . "\n
-
----------------------------------------------------------------------------\n
-
";
-
}
-
}
-
-
if($mensaje != "")
-
{
-
echo '&resultado=S&';
-
else
-
echo '&resultado=N&';
-
}
-
else
-
echo '&resultado=N&';
-
-
?>
-
</body>
-
</html>
Saludos.
ooooh claro ajajaja comprendi muy bien gracias! interesante felicitaciones y gracias por la pronta respuesta
Hola Carla, muy útil tu tutorial.
Estoy intentando modificarlo porque me gustaría poner más radio buttons, pero no lo consigo
De todas formas, muchas gracias
Hola JJ,
¿Quieres agregarle más opciones a este grupo de botones de radio o quieres agregar más grupos de botones de radio (por ejemplo, agregar otro grupo que sea Sí / No)?
Teniendo más claro esto podré explicarte cómo hacerlo.
Saludos.
muy bueno el tutorial, pero me sale siempore un error, aun hasta bajando el archivo del tutorial me sale el alerta del error cuando trato de enciar el correo, no se que estara pasando me gustaria una ayuda..gracias
Hola Carlos,
Es posible que sea la configuración de tu PHP (a lo mejor no tienes habilitado la opción para enviar correos electrónicos o bien que tengas bloqueado el puerto utilizado por SMTP - generalmente el 25 -). ¿Puedes abrir en el navegador el archivo enviar_formulario_de_contacto.php y ver qué Warnings o errores te despliega?
Saludos.
Hola Carla esta chvre la explicacion q das en este tutorial bueno pero en mi caso yo kise agregara mas mas campos de texto y mas checkboxer bueno el punto es k me gustaria q envie al mail con todos esos campos de texto y combobox mas cosa q no me sale no se cual sea el problema siempre me manda los mismo datos de tu tutorial mas no agrega mas k solo los checkboxer pero no los campos de texto (text imput)
este es el codigo del FLA:
-
fono_txt.restrict = "0-9";
-
txt_nro_adult.restrict = "0-9";
-
txt_nro_children.restrict = "0-9";
-
import mx.controls.Alert;
-
-
_global.style.setStyle("themeColor", 0xCCFFFF);
-
System.useCodepage = true;
-
-
var temas:Array = new Array();
-
var Selva:Array = new Array();
-
var Lima:Array = new Array();
-
var Nazca:Array = new Array();
-
var Arequipa:Array = new Array();
-
var paises:Array = new Array();
-
var enviar_lv:LoadVars = new LoadVars();
-
var resultado_lv:LoadVars = new LoadVars();
-
var Dia:Array = new Array();
-
var Mes:Array = new Array();
-
var Anio:Array = new Array();
-
-
initForm();
-
-
function initForm() {
-
escondeMensajes();
-
setEstilosRadioButtons();
-
setEstilosCheckBoxes();
-
llenaComboPaises();
-
almacenaDias();
-
almacenaMes();
-
almacenaAnio();
-
-
}
-
function escondeMensajes() {
-
for(var i = 1; i <7; i++) {
-
this["msj" + i]._visible = false;
-
}
-
}
-
function setEstilosRadioButtons() {
-
for(var i = 1; i <3; i++) {
-
this["radio" + i].setStyle("color", 0x990000);
-
this["radio" + i].setStyle("fontWeight", "bold");
-
this["radio" + i].setStyle("marginLeft", 2);
-
}
-
}
-
function setEstilosCheckBoxes() {
-
for(var i = 0; i <53; i++) {
-
this["check" + i].setStyle("color", 0x990000);
-
this["check" + i].setStyle("fontWeight", "bold");
-
this["check" + i].setStyle("marginLeft", 2);
-
}
-
}
-
function llenaComboPaises() {
-
paises.push({label:"-- Selecciona --", data:0});
-
paises.push({label:"México", data:"MEX"});
-
paises.push({label:"España", data:"ESP"});
-
paises.push({label:"Colombia", data:"COL"});
-
paises.push({label:"Argentina", data:"ARG"});
-
paises.push({label:"Chile", data:"CHI"});
-
paises.push({label:"Perú", data:"PER"});
-
paises.push({label:"Venezuela", data:"VEN"});
-
paises.push({label:"Ecuador", data:"ECU"});
-
paises.push({label:"Costa Rica", data:"COS"});
-
paises.push({label:"Uruguay", data:"URU"});
-
paises.push({label:"Bolivia", data:"BOL"});
-
paises.push({label:"Estados Unidos", data:"EUA"});
-
paises.push({label:"Guatemala", data:"GUA"});
-
paises.push({label:"Brasil", data:"BRA"});
-
paises.push({label:"Cuba", data:"CUB"});
-
paises.push({label:"Panamá", data:"PAN"});
-
paises.push({label:"El Salvador", data:"SAL"});
-
paises.push({label:"Nicaragua", data:"NIC"});
-
paises.push({label:"Otro", data:"Otr"});
-
-
pais_cb.dataProvider = paises;
-
pais_cb.sortItemsBy("label");
-
}
-
function almacenaDias() {
-
Dia.push({label:"--- ", data:0});
-
Dia.push({label:"1"});
-
Dia.push({label:"2"});
-
Dia.push({label:"3"});
-
Dia.push({label:"4"});
-
Dia.push({label:"5"});
-
Dia.push({label:"6"});
-
Dia.push({label:"7"});
-
Dia.push({label:"8"});
-
Dia.push({label:"9"});
-
Dia.push({label:"10"});
-
Dia.push({label:"11"});
-
Dia.push({label:"12"});
-
Dia.push({label:"13"});
-
Dia.push({label:"14"});
-
Dia.push({label:"15"});
-
Dia.push({label:"16"});
-
Dia.push({label:"17"});
-
Dia.push({label:"18"});
-
Dia.push({label:"19"});
-
Dia.push({label:"20"});
-
Dia.push({label:"21"});
-
Dia.push({label:"22"});
-
Dia.push({label:"23"});
-
Dia.push({label:"24"});
-
Dia.push({label:"25"});
-
Dia.push({label:"26"});
-
Dia.push({label:"27"});
-
Dia.push({label:"28"});
-
Dia.push({label:"29"});
-
Dia.push({label:"30"});
-
Dia.push({label:"31"});
-
-
cbo_Dia.dataProvider = Dia;
-
-
}
-
function almacenaMes() {
-
Mes.push({label:"-- Selecciona --", data:0});
-
Mes.push({label:"Enero"});
-
Mes.push({label:"Febrero"});
-
Mes.push({label:"Marzo"});
-
Mes.push({label:"Abril"});
-
Mes.push({label:"Mayo"});
-
Mes.push({label:"Junio"});
-
Mes.push({label:"Julio"});
-
Mes.push({label:"Agosto"});
-
Mes.push({label:"Septiembre"});
-
Mes.push({label:"Octubre"});
-
Mes.push({label:"Noviembre"});
-
Mes.push({label:"Diciembre"});
-
-
cbo_Mes.dataProvider = Mes;
-
-
}
-
function almacenaAnio() {
-
Anio.push({label:"2008", data:0});
-
Anio.push({label:"2009"});
-
-
cbo_Anio.dataProvider = Anio;
-
-
}
-
-
function validaForma() {
-
escondeMensajes();
-
if(nombre_txt.text == "") {
-
msj1._visible = true;
-
nombre_txt.setFocus();
-
} else if(correo_txt.text == "" || !esCorreo(correo_txt.text)) {
-
msj2._visible = true;
-
correo_txt.setFocus();
-
} else if(fono_txt.text==""){
-
msj3._visible = true;
-
fono_txt.setFocus();
-
} else if(sexoGroup.selection.data == undefined) {
-
msj4._visible = true;
-
radio1.setFocus();
-
} else if(pais_cb.selectedIndex == 0) {
-
msj5._visible = true;
-
pais_cb.setFocus();
-
} else {
-
temas = buscaChecksSeleccionados();
-
if(temas.length == 0) {
-
msj6._visible = true;
-
check1.setFocus();
-
} else if(comentarios_txt.text == "") {
-
msj6._visible = true;
-
comentarios_txt.setFocus();
-
} else {
-
enviarCorreo();
-
}
-
}
-
}
-
function buscaChecksSeleccionados():Array {
-
var temp = new Array();
-
for(var i = 0; i 0 && email.indexOf("@") == email.lastIndexOf("@"))
-
{
-
if(email.lastIndexOf(".")>email.indexOf("@") && email.lastIndexOf(".")<email.length-1)
-
{
-
res = true;
-
}
-
}
-
return res;
-
}
-
enviar_btn.onRelease = function() {
-
validaForma();
-
}
-
function enviarCorreo() {
-
enviar_btn.enabled = false;
-
enviar_lv.nombre = nombre_txt.text;
-
enviar_lv.correo = correo_txt.text;
-
enviar_lv.fono = fono_txt.text;
-
enviar_lv.sexo = sexoGroup.selection.data;
-
enviar_lv.pais = pais_cb.selectedItem.label;
-
enviar_lv.dia = cbo_Dia.selectedItem.label;
-
enviar_lv.mes = cbo_Mes.selectedItem.label;
-
enviar_lv.anio = cbo_Anio.selectedItem.label;
-
enviar_lv.temas = temas;
-
enviar_lv.comentarios = comentarios_txt.text;
-
enviar_lv.sendAndLoad("enviar_formulario_de_contacto.php", resultado_lv, "POST");
-
}
-
function reestablecerForma() {
-
nombre_txt.text = "";
-
correo_txt.text = "";
-
fono_txt.text = "";
-
txt_nro_adult.text="";
-
txt_nro_children.text="";
-
desactivarSexo();
-
desactivarcusco();
-
pais_cb.selectedIndex = 0;
-
cbo_Dia.selectedIndex = 0;
-
cbo_Mes.selectedIndex = 0;
-
cbo_Anio.selectedIndex = 0;
-
comentarios_txt.text = "";
-
}
-
function desactivarSexo() {
-
for(var i = 1; i <3; i++) {
-
this["radio" + i].selected = false;
-
}
-
}
-
function desactivarTemas() {
-
for(var i = 0; i <53; i++) {
-
this["check" + i].selected = false;
-
}
-
}
-
resultado_lv.onLoad = function(success:Boolean)
-
{
-
var respuesta = this.resultado;
-
if(success)
-
{
-
if(respuesta == "S")
-
{
-
Alert.show("Su mensaje ha sido enviado.", "Gracias", Alert.OK, null, "alerta", Alert.OK);
-
reestablecerForma();
-
}
-
else
-
{
-
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
-
}
-
}
-
else
-
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
-
-
enviar_btn.enabled = true;
-
};
y el codigo del PHP :
-
/* 3. Establecemos las cabeceras (headers) del mail. "Bcc: " . $cc . */
-
$header = "MIME-Version: 1.0\r\n";
-
$header .= "Content-type: " . $formatos[$formato_correo] . "; charset=iso-8859-1\r\n";
-
$header .= "From: " . $remitente . "\n";
-
/* Nota: Si deseas agregar correos de copia o copia oculta, descomenta las siguientes líneas (es decir, borra las // de las siguientes dos líneas) */
-
//$header .= "Cc: copia1@tu_servidor_web.com,copia2@tu_servidor_web.com \n";
-
//$header .= "Bcc: copiaoculta1@tu_servidor_web.com,copiaoculta2@tu_servidor_web.com \n";
-
-
if($nombre != "" && $correo != "") { // Siempre es bueno asegurarse que recibimos los datos más importantes para no mandar correos vacíos
-
if($formato_correo == 0) { /* HTML */
-
$mensaje = '
-
-
-
-
-
' . $asunto . '
-
-
-
-
-
<strong>Nombre:</strong>
-
' . $nombre . '
-
-
-
<strong>Email:</strong>
-
' . $correo . '
-
-
-
<strong>Sexo:</strong>
-
' . $sexo . '
-
-
-
<strong>País:</strong>
-
' . $pais . '
-
-
-
<strong>Temas:</strong>
-
-
-
-
-
';
-
for($i = 0; $i <count($temas); $i++) {
-
$mensaje .= $temas[$i] . "";
-
} $mensaje .= '
-
-
-
<strong>Comentarios:</strong>
-
-
-
-
-
-
-
';
-
-
}
-
else { /* Texto Plano */
-
-
$mensaje = "
-
----------------------------------------------------------------------------\n
-
Nombre: " . $nombre . "\n
-
Email: " . $correo . "\n
-
Sexo: " . $sexo . "\n
-
País: " . $pais . "\n
-
Temas: ";
-
for($i = 0; $i
Hola Kenny,
Tengo varios comentarios.
El primero es que te recomiendo que cambies tu función almacenaDias por la siguiente:
-
function almacenaDias() {
-
Dia.push({label:"--- ", data:0});
-
for(var i:Number = 1; i <32; i++)
-
{
-
Dia.push({label:i});
-
}
-
cbo_Dia.dataProvider = Dia;
-
}
El segundo es que no estás validando que la fecha seleccionada sea correcta (el usuario podría poner 31 de Noviembre). Para eso te recomiendo que uses el componente DateField.
El tercero es que para que recibas los datos necesitas mandarlos desde el archivo de Flash por medio de nuestra variable enviar_lv de la clase LoadVars; y posteriormente recibirlos en el documento de PHP por medio de $_POST (que eso es lo que te falta por agregar). Ejemplo:
-
$correo = $_POST["correo"];
-
$sexo = $_POST["sexo"];
-
$pais = $_POST["pais"];
-
$comentarios = $_POST["comentarios"];
-
$fecha = $_POST['dia'] . "/" . $_POST['mes'] . "/" . $_POST['anio'];
-
$telefono = $_POST["fono"];
Y luego esa información recibida deberás incluirla en el cuerpo del correo:
-
$mensaje = '
-
<style type="text/css">
-
<!--
-
.Estilo1 {
-
font-family: Arial;
-
font-size: 14px;
-
}
-
.Tabla_Contacto td {
-
padding:5px 5px 10px 5px;
-
}
-
.Estilo2 {
-
color: #990000;
-
font-weight: bold;
-
}
-
hr {
-
color:#003366;
-
background-color:#003366;
-
height:5px;
-
width:450px;
-
margin-left:0px;
-
}
-
-->
-
</style>
-
<p> <span class="Estilo1"><span class="Estilo2">' . $asunto . '</span></span></p>
-
<hr />
-
<table width="438" border="0" cellspacing="0" cellpadding="0" class="Tabla_Contacto">
-
<tr>
-
<td width="111" class="Estilo1"><strong>Nombre:</strong></td>
-
<td width="327" class="Estilo1">' . $nombre . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Email:</strong></td>
-
<td class="Estilo1">' . $correo . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Sexo:</strong></td>
-
<td class="Estilo1">' . $sexo . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Fecha:</strong></td>
-
<td class="Estilo1">' . $fecha. '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Teléfono:</strong></td>
-
<td class="Estilo1">' . $telefono. '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>País:</strong></td>
-
<td class="Estilo1">' . $pais . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Temas:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1"></td>';
Hola Carla..... solamente para agregacerte la verdad k no tengo palabras para mostrar mi agradecimiento
Que Dios Te Bendiga.
mm y el ultimo favor carla la verdad es de acuerdo a el diseño q tengo del formulario:
http://www.waykitrek.net/enviar_formulario_de_contacto.html
bueno se trata de los checkbox como puedo hacer para :
Nombre: kenny
Email: kenny_forever15@hotmail.com
Sexo: M
Adultos: 1
Niños: 0
Fecha: 3/Febrero/2008
Teléfono: 084984109385
País: Peru
Temas:
City Tour
Sacred Valley
Manu 4 days
Manu 8 days
Comentarios:
Porfa ayuda =(
bueno kiero q en ves de TEMAS pueda ir CUSCO si el usuario selecciono del check0 al check 19 si no q aparesca SELVA si seleccion = check 20 al 25 y asi sucesivamente para LIMA, NAZACA AREQUIPA PUNO
por fa como puedo hacer estaba tratando de hacerlo pero no me funciona
Hola Kenny,
Se me ocurre lo siguiente:
1. En la parte donde declaramos nuestras variables en Flash agrega lo siguiente:
-
var Cusco:Array = new Array();
-
var Selva:Array = new Array();
-
var Lima:Array = new Array();
-
var Nazca:Array = new Array();
-
var Arequipa:Array = new Array();
-
var Puno:Array = new Array();
2. Debajo de la función llenaComboPaises() agrega el siguiente método:
-
function regresaArregloCheckbox(inicio:Number, fin:Number):Array {
-
var temp = new Array();
-
for(var i = inicio; i <= fin; i++) {
-
if(this["check" + i].selected) {
-
temp.push(this["check" + i].label);
-
}
-
}
-
return temp;
-
}
3. Cambia la función enviarCorreo() de esta forma:
-
function enviarCorreo() {
-
Cusco = regresaArregloCheckbox(0, 19);
-
Selva = regresaArregloCheckbox(20, 25);
-
Lima = regresaArregloCheckbox(26, 35);
-
Nazca = regresaArregloCheckbox(36, 39);
-
Arequipa = regresaArregloCheckbox(40, 46);
-
Puno = regresaArregloCheckbox(47, 53);
-
-
enviar_btn.enabled = false;
-
enviar_lv.nombre = nombre_txt.text;
-
enviar_lv.correo = correo_txt.text;
-
enviar_lv.sexo = sexoGroup.selection.data;
-
enviar_lv.pais = pais_cb.selectedItem.label;
-
enviar_lv.cusco = Cusco;
-
enviar_lv.selva = Selva;
-
enviar_lv.lima = Lima;
-
enviar_lv.nazca = Nazca;
-
enviar_lv.arequipa = Arequipa;
-
enviar_lv.puno = Puno;
-
enviar_lv.comentarios = comentarios_txt.text; enviar_lv.sendAndLoad("enviar_formulario_de_contacto.php", resultado_lv, "POST");
4. En el código del PHP agrega (debajo de $pais = $_POST["pais"];) lo siguiente:
5. En la parte del formato del mensaje añade lo que está después de país:
-
$mensaje .= '
-
...
-
<tr>
-
<td class="Estilo1"><strong>País:</strong></td>
-
<td class="Estilo1">' . $pais . '</td>
-
</tr>';
-
-
if($Cusco != "" && $Cusco != NULL)
-
{
-
$mensaje .= '
-
<tr>
-
<td class="Estilo1"><strong>Cusco:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1">';
-
for($i = 0; $i <count($Cusco); $i++) {
-
$mensaje .= $Cusco[$i] . "<br />";
-
} $mensaje .= '</td>
-
</tr>';
-
}
-
-
if($Selva != "" && $Selva != NULL)
-
{
-
$mensaje .= '
-
<tr>
-
<td class="Estilo1"><strong>Selva:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1">';
-
for($i = 0; $i <count($Selva); $i++) {
-
$mensaje .= $Selva[$i] . "<br />";
-
} $mensaje .= '</td>
-
</tr>';
-
}
-
-
if($Lima != "" && $Lima != NULL)
-
{
-
$mensaje .= '
-
<tr>
-
<td class="Estilo1"><strong>Lima:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1">';
-
for($i = 0; $i <count($Lima); $i++) {
-
$mensaje .= $Lima[$i] . "<br />";
-
} $mensaje .= '</td>
-
</tr>';
-
}
-
-
if($Nazca != "" && $Nazca != NULL)
-
{
-
$mensaje .= '
-
<tr>
-
<td class="Estilo1"><strong>Nazca:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1">';
-
for($i = 0; $i <count($Nazca); $i++) {
-
$mensaje .= $Nazca[$i] . "<br />";
-
} $mensaje .= '</td>
-
</tr>';
-
}
-
-
if($Arequipa != "" && $Arequipa != NULL)
-
{
-
$mensaje .= '
-
<tr>
-
<td class="Estilo1"><strong>Arequipa:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1">';
-
for($i = 0; $i <count($Arequipa); $i++) {
-
$mensaje .= $Arequipa[$i] . "<br />";
-
} $mensaje .= '</td>
-
</tr>';
-
}
-
-
if($Puno != "" && $Puno != NULL)
-
{
-
$mensaje .= '
-
<tr>
-
<td class="Estilo1"><strong>Puno:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1">';
-
for($i = 0; $i <count($Puno); $i++) {
-
$mensaje .= $Puno[$i] . "<br />";
-
} $mensaje .= '</td>
-
</tr>';
-
}
-
...
Saludos.
hola Carla gracias por tu inmediata respuesta
este ....mmm es k no me funka el codigo para el PHP con todas las madificaciones q me dijistes kedaria asi :
Contacto
HTML, 1 -> Texto Plano */
/* 3. Establecemos las cabeceras (headers) del mail. "Bcc: " . $cc . */
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: " . $formatos[$formato_correo] . "; charset=iso-8859-1\r\n";
$header .= "From: " . $remitente . "\n";
/* Nota: Si deseas agregar correos de copia o copia oculta, descomenta las siguientes líneas (es decir, borra las // de las siguientes dos líneas) */
//$header .= "Cc: copia1@tu_servidor_web.com,copia2@tu_servidor_web.com \n";
//$header .= "Bcc: copiaoculta1@tu_servidor_web.com,copiaoculta2@tu_servidor_web.com \n";
if($nombre != "" && $correo != "") { // Siempre es bueno asegurarse que recibimos los datos más importantes para no mandar correos vacíos
if($formato_correo == 0) { /* HTML */
$mensaje = '
' . $asunto . '
Nombre:
' . $nombre . '
Email:
' . $correo . '
Sexo:
' . $sexo . '
Adultos:
' . $adultos. '
Niños:
' . $niños. '
Fecha:
' . $fecha. '
Teléfono:
' . $telefono. '
País:
' . $pais . '
;
if($Cusco != "" && $Cusco != NULL)
{
$mensaje .= '
Cusco:
';
for($i = 0; $i <count($Cusco); $i++) {
$mensaje .= $Cusco[$i] . "";
} $mensaje .= '
';
}
if($Selva != "" && $Selva != NULL)
{
$mensaje .= '
Selva:
';
for($i = 0; $i <count($Selva); $i++) {
$mensaje .= $Selva[$i] . "";
} $mensaje .= '
';
}
if($Lima != "" && $Lima != NULL)
{
$mensaje .= '
Lima:
';
for($i = 0; $i <count($Lima); $i++) {
$mensaje .= $Lima[$i] . "";
} $mensaje .= '
';
}
if($Nazca != "" && $Nazca != NULL)
{
$mensaje .= '
Nazca:
';
for($i = 0; $i <count($Nazca); $i++) {
$mensaje .= $Nazca[$i] . "";
} $mensaje .= '
';
}
if($Arequipa != "" && $Arequipa != NULL)
{
$mensaje .= '
Arequipa:
';
for($i = 0; $i <count($Arequipa); $i++) {
$mensaje .= $Arequipa[$i] . "";
} $mensaje .= '
';
}
if($Puno != "" && $Puno != NULL)
{
$mensaje .= '
Puno:
';
for($i = 0; $i <count($Puno); $i++) {
$mensaje .= $Puno[$i] . "";
} $mensaje .= '
';
}
Temas:
';
for($i = 0; $i < count($temas); $i++) {
$mensaje .= $temas[$i] . "";
} $mensaje .= '
Comentarios:
' . nl2br(stripslashes($comentarios)) . '
';
}
else { /* Texto Plano */
$mensaje = "
----------------------------------------------------------------------------\n
Nombre: " . $nombre . "\n
Email: " . $correo . "\n
Sexo: " . $sexo . "\n
País: " . $pais . "\n
Temas: ";
for($i = 0; $i
y no me funka esa parte k me dices q le agrege al formato del mensaje creo q ese es el problema o no se cual es
ayuda pls
Hola Carla disculpa por molestarte de nuevo pero tengo un problema con el nuevo codigo no se q es lo q pasa me envia todo chvre menos el comentario
Hola Kenny,
No le entiendo a tu código porque el comentario no muestra los tags HTML. Te pongo lo que creo que debes agregar, si no funciona por favor en un nuevo comentario pon el código entre los siguientes tags: [ php] y [ /php] (sin los espacios)
Después del código de Puno, pon:
-
if($Puno != "" && $Puno != NULL)
-
{
-
$mensaje .= '
-
<tr>
-
<td class="Estilo1"><strong>Puno:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
<td class="Estilo1"> </td>
-
<td class="Estilo1">';
-
for($i = 0; $i <count($Puno); $i++) {
-
$mensaje .= $Puno[$i] . "<br />";
-
} $mensaje .= '</td>
-
</tr>';
-
}
-
$mensaje .= '
-
<tr>
-
<td class="Estilo1"><strong>Comentarios:</strong></td>
-
<td class="Estilo1"> </td>
-
</tr>
-
<tr>
-
</tr>
-
</table>
-
<hr />
-
<hr style="height:10px" />';
Saludos.
Excelente Tutorial..
El tutorial me funciona a la perfeccion. Tengo un inconveniente con otro site que estoy construyendo http://www.lexcenter.com en el cual el formulario de contactos se encuentra dentro una instancia de un movie clip que tiene la particularidad de aparecer y desaparecer cada vez que se accione a travez de un boton.
Pregunta: al incluir el formulario dentro de este movie clip debo insetar algun codigo para que funcione sin problema?
Gracias
Hola Juan Manuel,
Metiendo todo el código de la capa Acciones a una capa dentro del MovieClip debería funcionar.
Saludos.
Hola Karla aca dejandote un comentario despues de un tiempito de ausente no se si te acuerdas de mi. ...
bueno no se si tengas msn o podrias agregarme ...@... si es que tubieses msn la verdad es que tengo algunos problemas para desarrollar unos problemas de flash y quisiera mantenerme en contacto contigo por esas dudas ejemplo....bueno como hago para llamar de una .swf a otro .swf que actuen en un mismo ejecutable me gustaria k pudieras ver ... esos ejemplos haber si me agregas porfa
Saludos.
Psdta : gracias por lo del formulario me sirvio de mucho.
Hola Kenny,
Te envíe un correo electrónico.
Voy a borrar tu cuenta de correo dentro del comentario para evitar que te llegue spam.
Saludos.
carla esta de pelos tu tutorial pero a mi me aparece al abrir el php desde un navegador esto &resultado=N& y solo aparece el mensaje de que no se pudo mandar el formulario en el .swf me podrias ayudar?
Hola Raúl,
Es posible que no esté configurado o no tenga permiso tu servidor para enviar los correos (sobre todo cuando está probando en local - localhost -).
Si estás trabajando en localhost podrías probar subiendo el PHP a tu hosting.
Saludos.
lo he probado Carla y no funciona creo que mi script. esta mal ya que tengo una forma en mi hosting y si manda la informacion capturada a mi mail. pero con esta forma no se que pasa.
Hola carla, hay alguna manera de incorporar un boton para un archivo adjunto desde flash en el formulario, he tratado de buscar algo asi y no he logrado y tb mezclar el upload y formularios y no puedo encontrar la forma correcta , si conoces de algun ejemplo o referencia te estare eternamente agradecido..saludos
Hola Eduardo,
Podrías revisar este tutorial de Cristalab http://www.cristalab.com/tutoriales/subir-archivos-en-flash-con-filereference-c121l/
Nunca he realizado una subida de archivos desde Flash, lo que sé es que debes ayudarte de un lenguaje de programación del lado del servidor (en este caso de PHP).
Una vez subido el archivo podrías enviar la liga del archivo junto con los datos del formulario (utilizando la variable $uploadFile usada en el tutorial de CB) o bien podrás enviar el archivo como attachment al correo.
Saludos.
Hola Carla te felicito... hay un problema que no encuentro como resolverlo, te explico: Cómo quedaría el código para enviar los datos del formulario tanto por email como a una base de datos específica al mismo tiempo; puedes ayudarme con eso? Gracias.
Hola Doyd,
Ya teniendo la información en el archivo PHP, guardarla es muy fácil.
Primero realizamos una clase en PHP para la conexión con la base de datos:
-
<?php
-
class Conexion
-
{
-
var $sqlstring = "";
-
var $server = "localhost";
-
var $user = "usuario_database";
-
var $pass = "contrasena_database";
-
var $database = "nombre_database";
-
var $db = 0;
-
var $rs = 0;
-
var $row = 0;
-
var $recordcount = 0;
-
var $EOF = true;
-
-
function Conexion() { }
-
function conectarBaseDatos()
-
{
-
}
-
function ejecutarQuery($strSql)
-
{
-
$this->sqlstring = $strSql;
-
$this->_exec_command();
-
return $this->lastid;
-
}
-
function _exec_command()
-
{
-
if ($this->db && $this->sqlstring!="")
-
{
-
if ($this->rs)
-
{
-
$this->EOF = true;
-
}
-
else
-
{
-
$this->recordcount = 0;
-
$this->EOF = true;
-
}
-
}
-
else
-
{
-
$this->recordcount = 0;
-
$this->EOF = true;
-
}
-
}
-
function _destruir()
-
{
-
if($this->db)
-
}
-
}
-
?>
En el archivo enviar_formulario_de_contacto.php modifica lo siguiente:
-
if($mensaje != "")
-
{
-
{
-
echo '&resultado=S&;';
-
-
require("Conexion.php");
-
$conn = new Conexion();
-
$conn->conectarBaseDatos();
-
$sql = "INSERT INTO comentarios (nombre, correo, texto, pais, temas, comentarios) VALUES ('" . $nombre . "', '" . $correo . "', '" . $sexo . "', '" . $pais . "', '" . $temas . "', '" . $comentarios . "')";
-
$conn->ejecutarQuery($sql);
-
$conn->destruir();
-
}
-
else
-
echo '&resultado=N&';
-
}
Saludos.
hola carla muchas gracias por este tutorial la verdad me sirvio de mucho solo que tengo una duda. Tengo una pagina en la cual me van pidiendo los datos pero supongamos que los TextInput en un fotograma y los Checkbox en otro fotograma lo que pasa es que no he podido juntarlos y mandarlos en un solo mail me los manda en dos mails diferentes. Lo tengo que hacer por separado ya que no se como pasar los valores de el primer fotograma al segundo y de ahi mandar todos los datos a un solo correo. Sin mas por el momento reciba un cordial saludo.
Hola Jorge,
Lo que necesitas es guardar los datos de los TextInput en variables para poder aceder a ellos desde el siguiente fotograma o frame.
Supongamos que tienes tres TextInput (campo1_txt, campo2_txt y campo3_txt). Declara tres variables en el primer frame de tu archivo de Flash:
-
var text1:String = '';
-
var text2:String = '';
-
var text3:String = '';
Me imagino que tendrás dos botones: uno en el frame donde están los campos de texto y otro en frame donde están los checkbox.
En el caso del botón de los campos de texto, tendrás que poner:
-
continuar_btn.onRelase = function()
-
{
-
text1 = campo1_txt.text;
-
text2 = campo2_txt.text;
-
text3 = campo3_txt.text;
-
gotoAndStop(3); // Donde 3 es el número de frame donde están tus checkbox.
-
}
Luego, en el código donde envias los valores de los checkbox tendrás que incluir las valores de las variables text1, text2 y text3.
Saludos.
Hola carla! como andas? Te felicito por el tutorial! Me sirvio de mucho, pero tengo un problema al recibir los datos a mi correo electronico, solo modofique la direccion a donde llegan los datos en el php y me llega todo asi:
------------------------------------------------
Content-type: text/htmlcharset=iso-8859-1 From: Usuario@hoynococinasweb.com.ar
Encuesta Nombre: asd Email: asda@asd-.copm Sexo: M País: Argentina Temas: Flex Comentarios: asdasd
------------------------------------------------
tenes idea porque es??
Te agradeceria la ayuda!! un beso!
Lucas!
bueno, intente copiar lo que me decia pero se ve que aca en el comentario tomo el codigo, pero en el outlook no lo veo como aparecio aca, me aparece asi, te dejo un link con una imagen para que lo veas (http://img216.imageshack.us/img216/8361/dibujoqro.jpg), hay alguna solucion??
Perdona por abusar de tu confianza carla!
Lo anterior ya lo revolvi, lo hice de la siguiente manera, cambie esta parte:
$header .= "Content-type: " . $formatos[$formato_correo] . "; charset=iso-8859-1\r\n";
por esta:
$header="Content-Type: text/html; charset=\"iso-8859-1\"";
mail($destino,$asunto,$texto,$headers);
y ahi ya lo pude recibir bien en outlook! =)
Lo que ahora estoy necesitan, y estoy hace como 2 horas probando, es como hacer un formulario solo con checkboxes, porque necesito hacer una encuesta, lo intente armar, pero no me funciona, me falla.. me podrias decir como quedaria el codigo para agregar mas checkbox, por ejemplo necesito que diga...
Que le parece la comida de Hoy No Cocinas?
Muy buena
Buena
Normal
Regular
Mala
Que plato pide mas?
Milanesas Maryland
Tacos
Pollo dehuesado
Pizzas
Si me das el ejemplo de como agregar esas 2 preguntas en el flash y en php, despues para agregar mas supongo que me dare maña!
Te agradezco!!
Un beso
Lucas!!
Te dejo mi msn si me queres agregar: xxxxxxxxx
!!
Byeee!!
Hola Carlita, gracias por el Formulario, pero tengo unos problemas con el y no se como resolverlo, he seguido a pie de letra tus indicaciones y cuando lo corro en internet me sale un error y no se por que es te doy la ruta: http://www.artoostudios.com/clientes/artegrafia/enviar_formulario_de_contacto2.html
te agradecere que me ayudes
saludos
Hola Arturo,
Disculpa la tardanza. Supongo que después de tanto tiempo ya habrás solucionado el problema, ya que ingresé a tu página y después de llenar el formulario me muestra el mensaje de "Su mensaje ha sido enviado".
Saludos.
que bien!!!
Es lo que andaba buscando hace dias y lo que me ha llevado muchos quebraderos de cabeza
Hoy mismo he solicitado un servidor que soporte php y mañana mismo lo pruebo, y tiene que estar para mañana mismo.
Confío plenamente en tu form.
Además en increíble que después de un año de su publicación, sigas respondiendo a la gente.
Mil gracias! ya te cuento.
Hola que bueno la forma de explicar todo el formulario desde hace mucho estaba buscando alguien que me pudiera explicar tan claro los checkbox o los demás componentes.
Me pasa algo cuando intento de poner mas textinput y eliminar los radiobutton y el combotext. Hay un error que no hace la acción de enviar el mail
Lo hice todo, pero cuando trato de enviar el botón no me funciona o sea se aprieta pero no hace ninguna acción, te mando todo la programación del PHP y del flash.
FLASH
import mx.controls.Alert;
_global.style.setStyle("themeColor", 0xCCFFFF);
System.useCodepage = true;
var temas:Array = new Array();
var enviar_lv:LoadVars = new LoadVars();
var resultado_lv:LoadVars = new LoadVars();
initForm();
function initForm() {
escondeMensajes();
setEstilosCheckBoxes();
}
function escondeMensajes() {
for (var i = 1; i<9; i++) {
this["msj"+i]._visible = false;
}
}
function setEstilosCheckBoxes() {
for (var i = 1; i<8; i++) {
this["check"+i].setStyle("color","#000000");
this["check"+i].setStyle("fontWeight","light");
this["check"+i].setStyle("fontSize","10");
this["check"+i].setStyle("marginLeft",2);
}
}
enviar_btn.onRelease = function() {
validaForma();
}
function validaForma() {
escondeMensajes();
if(nombre_txt.text == "") {
msj1._visible = true;
nombre_txt.setFocus();
} else if(correo_txt.text == "" || !esCorreo(correo_txt.text)) {
msj2._visible = true;
correo_txt.setFocus();
} else if (telefono_txt.text == "") {
msj3._visible = true;
telefono_txt.setFocus();
} else if (evento_txt.text == "") {
msj4._visible = true;
evento_txt.setFocus();
} else if (personas_txt.text == "") {
msj5._visible = true;
personas_txt.setFocus();
} else if (fecha_txt.text == "") {
msj6._visible = true;
fecha_txt.setFocus();
} else {
temas = buscaChecksSeleccionados();
if(temas.length == 0) {
msj7._visible = true;
check1.setFocus();
} else if(comentarios_txt.text == "") {
msj8._visible = true;
comentarios_txt.setFocus();
} else {
enviarCorreo();
}
}
}
function buscaChecksSeleccionados():Array {
var temp = new Array();
for (var i = 1; i0 && email.indexOf("@") == email.lastIndexOf("@"))
{
if(email.lastIndexOf(".")> email.indexOf("@") && email.lastIndexOf(".")<email.length-1)
{
res = true;
}
}
return res;
}
function enviarCorreo() {
enviar_btn.enabled = false;
enviar_lv.nombre = nombre_txt.text;
enviar_lv.correo = correo_txt.text;
enviar_lv.telefono = telefono_txt.text;
enviar_lv.evento = evento_txt.text;
enviar_lv.personas = personas_txt.text;
enviar_lv.fecha = fecha_txt.text;
enviar_lv.temas = temas;
enviar_lv.comentarios = comentarios_txt.text;
enviar_lv.sendAndLoad("enviar_formulario_de_contacto.php", resultado_lv, "POST");
}
resultado_lv.onLoad = function(success:Boolean) {
var respuesta = this.resultado;
if (success) {
if (respuesta == "S") {
Alert.show("Su mensaje ha sido enviado.", "Gracias", Alert.OK, null, "alerta", Alert.OK);
reestablecerForma();
} else {
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
}
} else {
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
}
enviar_btn.enabled = true;
};
function reestablecerForma() {
nombre_txt.text = "";
correo_txt.text = "";
telefono_txt.text = "";
evento_txt.text = "";
personas_txt.text = "";
fecha_txt.text = "";
desactivarTemas();
comentarios_txt.text = "";
}
function desactivarTemas() {
for (var i = 1; i<8; i++) {
this["check"+i].selected = false;
}
}
PHP
<?php
$nombre = stripslashes($_POST["nombre"]);
$correo = $_POST["correo"];
$telefono = $_POST["telefono"];
$evento = $_POST["evento"];
$personas = $_POST["personas"];
$fecha = $_POST["fecha"];
$temas = explode(',',$_POST["temas"]);
$comentarios = $_POST["comentarios"];
$formatos = array("text/html", "text/plain");
$remitente = "no-reply@correo.com";
$para = "correo@correo.com";
$asunto = "Contacto Web";
$formato_correo = 1;
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: " . $formatos[$formato_correo] . "; charset=iso-8859-1\r\n";
$header .= "From: " . $remitente . "\n";
if($nombre != "" && $correo != "") {
if($formato_correo == 0) { /* HTML */
$mensaje = '
' . $asunto . '
Nombre:
' . $nombre . '
Email:
' . $correo . '
Sexo:
' . $telefono . '
País:
' . $evento . '
País:
' . $personas . '
País:
' . $fecha . '
Temas:
';
for($i = 0; $i <count($temas); $i++) {
$mensaje .= $temas[$i] . "";
} $mensaje .= '
Comentarios:
' . nl2br(stripslashes($comentarios)) . '
';
}
else { /* Texto Plano */
$mensaje = "
----------------------------------------------------------------------------\n
Nombre: " . $nombre . "\n
Email: " . $correo . "\n
Teléfono: " . $telefono . "\n
Evento: " . $evento . "\n
Personas: " . $personas . "\n
Fecha: " . $fecha . "\n
Temas: ";
for($i = 0; $i
No me resuto porfa ayuda que puedo hacer ...
Gracias!!!! ojalá que me puedas responder
Hola Maita,
No veo ningún problema en tus dos códigos. No sé si te faltó pegar la última parte del archivo enviar__formulario_de_contaco.php que es la que se encarga de enviar el correo electrónico y regresarle una respuesta al documento de Flash:
En caso de que tu archivo de PHP sí tuviera este código, entonces revisa que tu archivo de Flash no tenga problemas. Dentro del mismo programa de Flash, pon un trace en la función enviarCorreo para asegurarte de que esté entrando aquí; además, verifica que tus nuevos campos de texto tengan asignados sus nombres de instancia (evento_txt, personas_txt, fecha_txt).
Al correr (Ctrl. + Enter) el archivo de Flash, te deberá mostrar el mensaje de que no se pudo enviar el archivo ya que no lo estás corriendo dentro del navegador; no importa, eso es lo normal pero nos permitirá saber si en realidad está tratando de enviar los datos a PHP.
Saludos.
No me resulta está todo bien puesto no sé si te puedo mandar los archivos para que veas que está todo bien, pero no se porque no resulta, perdóname por lo molestosa, pero quiero solucionarlo... ademas este correo quiero cargarlo con un movieclip que tenga un botón invisible y que tenga un accion que dice mas o menos asi
FLASH:
this.createEmptyMovieClip("clip1",1);
//
clip1.loadMovie("el nombre de tu pelicula.swf");
//
bClip1.onrollOver = function() {
clip1._y = 0;
clip1._x = 0;
clip1.gotoAndPlay(2);
};
//
Tu crees que me servirá o sea se activaran los checkbox y todo eso o deberia cambiar algo del formulario en flash.
Te mando la dirección para que veas que no me funciona.
http://www.carrofiesta.cl/2.html
si necesitas revisar con los flash o php por si me puedes ayudar si queires te los mando pero no sé a que dirección.
Gracias y perdóname por preguntarte tanto es que estoy aproblemada.
Gracias nuevamente
Maita
Hola Maita,
Mándame los archivos para revisarlo pero por favor que el archivo ya incluya el movieClip que dices porque no entendí muy bien a lo que te refieres.
El correo es: ---------------------------
Saludos.
Hola Carla, muchas gracias por tu aporte, me ha servido como no tienes idea. Yo hacia los formularios de otra manera pero creo que quedan mejor así.
Me quedo con una duda que por más que leo no soluciono. Ya leí este tutorial y el otro de Date Field pero creo que no sé como unirlos. Verás, lo que quiero es (aparte de todo este formulario que ya me queda) agregar en el formulario una fecha de salida y otra de entrada así que llame a la primera fechaent_df y a la segunda fechasal_df. De ahí, pongo la función que tú mencionas en el otro tutorial para cambiarle el formato y la llamo al final con enviar_lv.fecha salida = fechasal_df.... y he aquí donde me pierdo. No sé si sean correctos esos nombres de instancia o como puedo llamarlos; tus dos tutoriales me quedan pero separados; este puedo modificarlo para agregarle más cosas sin problemas siempre que sea un nuevo campo de texto, check box o combobox pero a la hora de combinarlos me confundo. No quiero usar el boton para mostrar la fecha, solo quiero que el usuario la seleccione y se envie por php.
¿Podrías guiarme un poco más en como hacerlo? Te lo agradecería mucho.
Muchas gracias por compartir tus conocimientos.
Hola.
Fantastico el tutorial.
Te comento mi problema:
Cuando ejecuto el flash en mi pc el formulario se manda sin nigun error pero cuando lo subo al hosting y lo envio me da el error "Hubo un error en el envio del mensaje, por favor intente mas tarde"
El servidor es compatible con php porque ya tengo algun formulario en php y funciona sin problema.
No sé que hacer. A ver que puedes sacar de la chistera.
Un millon de gracias
Failed to create a new alert, probably because there is no Alert in the Library
cuando compilo en mi pc me manda este error a ke se debe tratar
porfavor aydame
Eric,
Simplemente tienes que poner un componente Alert en tu biblioteca. Presiona Ctrl. + F7 o bien en el menú Ventana -> Componentes, busca el componente Alert que está en "User interface" y arrástralo a tu biblioteca o bien arrástralo
a tu área de trabajo y luego lo borras.
Claro, Susana.
En realidad es muy fácil. Añade las siguientes dos líneas debajo de la línea de declaración de var resultado_lv:LoadVars = new LoadVars();
-
var fechaEntrada:String = '';
-
var fechaSalida:String = '';
Ahora pega el siguiente código al final de todo el código que ya tenemos del formulario. Este código nos permite darle formato a las fechas seleccionadas:
-
fechaent_df.dateFormatter = function(fecha_sel:Date)
-
{
-
var dia:String = fecha_sel.getDate() <10 ? "0" + fecha_sel.getDate() : fecha_sel.getDate();
-
var mes:String = (fecha_sel.getMonth() + 1) <10 ? "0" + (fecha_sel.getMonth() + 1) : (fecha_sel.getMonth() + 1);
-
fechaEntrada = dia + "/" + mes + "/" + fecha_sel.getFullYear();
-
return fechaEntrada;
-
}
-
-
fechasal_df.dateFormatter = function(fecha_sel:Date)
-
{
-
var dia:String = fecha_sel.getDate() <10 ? "0" + fecha_sel.getDate() : fecha_sel.getDate();
-
var mes:String = (fecha_sel.getMonth() + 1) <10 ? "0" + (fecha_sel.getMonth() + 1) : (fecha_sel.getMonth() + 1);
-
fechaSalida = dia + "/" + mes + "/" + fecha_sel.getFullYear();
-
return fechaSalida;
-
}
Ahora tendremos que validar que el usuario haya seleccionado las fechas antes de enviar el correo electrónico, por lo que tenemos que agregar este código a la función validaForma():
-
...
-
} else if(pais_cb.selectedIndex == 0) {
-
msj4._visible = true;
-
pais_cb.setFocus();
-
} else if(fechaEntrada == '') {
-
Alert.show("Por favor seleccione una fecha de entrada", "Aviso");
-
}
-
else if(fechaSalida == '') {
-
Alert.show("Por favor seleccione una fecha de salida", "Aviso");
-
}
-
...
Es momento de pasar los valores de las fechas a la variable enviar_lv dentro de la función enviarCorreo():
-
...
-
enviar_lv.temas = temas;
-
enviar_lv.entrada = fechaEntrada;
-
enviar_lv.salida = fechaSalida;
-
...
Y por último recibimos los valores de las fechas en el archivo de PHP:
-
$fecha_entrada = $_POST["entrada"];
-
$fecha_salida = $_POST["salida"];
Recuerda agregar esas dos variables ($fecha_entrada y $fecha_salida) al cuerpo del mensaje que se enviará:
-
...
-
<tr>
-
<td class="Estilo1"><strong>Sexo:</strong></td>
-
<td class="Estilo1">' . $sexo . '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Fecha de entrada:</strong></td>
-
<td class="Estilo1">' . $fecha_entrada. '</td>
-
</tr>
-
<tr>
-
<td class="Estilo1"><strong>Fecha de salida:</strong></td>
-
<td class="Estilo1">' . $fecha_salida. '</td>
-
</tr>
-
...
Saludos.
Hola José Luis,
No tengo idea de por qué en tu hosting no esté funcionando el envío del formulario.
Para descartar que sea por parte del PHP, sube a tu hosting un archivo de nombre Prueba_Correo.php con el siguiente código:
-
<?
-
-
$remitente = "Remitente <correo@correo.com>";
-
$para = "Carla Macias <tocorreo@correo.com>";
-
$asunto = "Correo de prueba";
-
$mensaje = "Prueba de envío de correo por PHP";
-
-
$header = "MIME-Version: 1.0\nFrom: " . $remitente . "\n";
-
$header .= "Content-type: text/html; charset=iso-8859-1;";
-
-
echo 'Correo enviado';
-
else
-
echo 'Problemas al enviar el correo';
-
-
?>
Una vez que se subió el archivo ejecutalo directamente en el navegador para ver si te envía o no el correo.
Saludos.
¡hola de nuevo Carla!
Muchas gracias por tu ayuda, el formulario me ha quedado tal y como lo quería y se manda perfectamente por PHP a mi correo. En serio te agradezco mucho que expliques tan detalladamente las cosas y rspondas tan rápido a nuestras inquietudes.
Te tengo otra pregunta aunque es medio tonta: hice el formulario y todo de maravilla pero cuando lo inserto (o rehago) en la página en la que quiero ponerlo, no aparecen el combobox, los calendarios ni el botón... ¿Qué estaré haciendo mal? Lo he puesto por el momento con una ventana emergente y funciona de maravilla sólo que no creo que sea lo mejor dejarlo así.
¿Tendrás alguna idea de que puede estar pasando?
Gracias y saludos
Pd. Para la persona a la que le sale el error de "Hubo un error en el envio del mensaje, por favor intente mas tarde", yo creo que es el PHP porque me sucedió un par de veces lo mismo por distintas razones:
1. Use un servidor gratuito que dizque sí aceptaba PHP pero no lo hacia (o fallaba quien sabe qué) Funciono perfecto cuando lo probe en el par de servidores de pago que manejo e incluso en uno gratuito en web host 000.
2. El PHP tenía mal el nombre. Me paso que por error de dedo el archivo "enviar_formulario_de_contacto.php" le faltaba una "i" por error de dedo mio. Me tarde un par de minutos revísandolo hasta que me dí cuenta de ese error tan tonto, lo corregí y todo perfecto.
Errores simples, pero suele suceder... me ha pasado que un espacio de más me ha hecho quebrarme una hora la cabeza.
mchas gracias por la respuesta anterior eres la mejor
pero tengo l siguiente duda cando mando el correo y reviso el mail me sale esto
----------------------------------------------------------------------------
Nombre: eric
Email: undefined
Sexo:
Forma de Comunicacion: Telefono
Consulta:
-------------------------------------------------------------
aki esta el action script
import mx.controls.Alert;
_global.style.setStyle("themeColor", 0xCCFFFF);
System.useCodepage = true;
var paises:Array = new Array();
var enviar_lv:LoadVars = new LoadVars();
var resultado_lv:LoadVars = new LoadVars();
initForm();
function initForm() {
escondeMensajes();
llenaComboPaises();
}
function escondeMensajes() {
for(var i = 1; i 0 && email.indexOf("@") == email.lastIndexOf("@"))
{
if(email.lastIndexOf(".")>email.indexOf("@") && email.lastIndexOf(".")<email.length-1)
{
res = true;
}
}
return res;
}
enviar_btn.onRelease = function() {
validaForma();
}
function enviarCorreo() {
enviar_btn.enabled = false;
enviar_lv.nombre = nombre_txt.text;
enviar_lv.apellido = apellido_text.text;
enviar_lv.comuna = comuna_text.text;
enviar_lv.pais = pais_cb.selectedItem.label;
enviar_lv.correo = correo_text.text;
enviar_lv.telefono = telefono_text.text;
enviar_lv.comentario = comentario_text.text;
enviar_lv.sendAndLoad("sendmail.php",resultado_lv, "POST");
}
function reestablecerForma() {
nombre.text = "";
apellido_txt.text = "";
comuna_txt.text = "";
telefono_txt.text = "";
correo_txt.text = "";
pais_cb.selectedIndex = 0;
comentarios_txt.text = "";
}
resultado_lv.onLoad = function(success:Boolean)
{
var respuesta = this.resultado;
if(success)
{
if(respuesta == "S")
{
Alert.show("Su mensaje ha sido enviado.", "Gracias", "Atención",Alert.OK, "alerta", Alert.OK);
reestablecerForma();
}
else
{
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
}
}
else
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
enviar_btn.enabled = true;
};
y aqui el php
$nombre = $_POST["nombre"];
$apellid = stripslashes($_POST["apellido"]);
$email = $_POST["correo"];
$pais = $_POST["pais"];
$conslta = $_POST["comentario"];
$formatos = array("text/html", "text/plain");
$remitente = "todofamilia@todofamilia.cl";
$para = "todofamilia@todofamilia.cl";
$asunto = "Consulta";
$formato_correo = 1;
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: " . $formatos[$formato_correo] . "; charset=iso-8859-1\r\n";
$header .= "From: " . $remitente . "\n";
$mensaje = "
----------------------------------------------------------------------------\n
Nombre: " . $nombre . "\n
Apellido: " . $apellid . "\n
Email: " . $email . "\n
Forma de Comunicacion: " . $pais . "\n
Consulta: " . $conslta . "\n
----------------------------------------------------------------------------\n
";
if($mensaje != "")
{
if(mail($para, $asunto, $mensaje, $header))
echo '&resultado=S&';
else
echo '&resultado=N&';
}
else
echo '&resultado=N&';
Hola Susana,
No entendí lo de que no aparece el botón, ni el combo ni los calendarios. Creo que es mejor que lo vea físicamente ¿podrías enviarme tu(s) archivo(s) a blog [en] codigometropoli.com?
Saludos.
Hola Eric,
Te recomiendo que bajes (o vuelvas a bajar) el archivo de este tutorial y copies todo el código que está en el único frame del archivo; ya que tu código Actionscript está todo revuelto, empezando porque llamas a la función validaForma(); y ni siquiera existe en el código que me estás mostrando. El código para validar el formato de un correo electrónico no debe ir en la función escondeMensajes() sobre todo porque no le estás pasando como parámetro el valor del correo.
Lo más seguro es que la razón por la que te aparece "undefined" en el correo es que no tengas un campo de texto con el nombre de instancia correo_text.
Saludos.
Hola de nuevo Carla
Creo que tienes razón y no me explique bien. Intentaré hacerlo ahora porque para mandarte el archivo creo que tendría que mandarte toda la página que estoy haciendo y honestamente me da un poco de pena que una persona tan experimentada como tú vea como trabaja una persona como yo, que está aprendiendo muchas cosas al paso.
Te explico: estoy haciendo toda una página en flash y quiero insertarle el formulario. Toda la página está en una sola escena, con varios movie clip que corren en determinado fotograma. Por así decirlo, en el fotograma 1 esta el cargador, en el 2 el movie clip de Inicio y en el 3 el de historia; ahora quiero poner en el 4 el formulario (que ya hice aparte en un sólo documento y funciona perfecto) pero al pasarlo al archivo general (o rehacerlo) ya sea convirtiendolo en movie clip o no, ponerlo en el fotograma 4 y viendo la película, simplemente no aparece el combobox, ninguno de los date field ni el botón de enviar. Imagino que la falla se debe a que en el ejemplo que enseñas a hacer el formulario ocupa todo el documento y el primer fotograma, mi pregunta es ¿Como puedo insertar el formulario a mi archivo? ¿Para que funcione es necesario que ambas capas esten en el primer fotograma o que el formulario este en un documento aparte?.
Espero haberme explicado mejor esta vez, me encantaría mandarte los archivos pero creo que te mandaría toda la página y ya sería mucho abuso. Sé, además, que hacer toda una página en flash no es lo mejory etsoy aprendiendo nuevas cosas para solucionar eso.
De nuevo mucha gracias por compartir tus conocimientos, ser tan amable y rápida en responder nuestras dudas. En serio que tus tutoriales y respuestas me han ayudado mucho.
Excelente Tutorial te felicito.!!!!
Lo he probado y adaptado y me ha funcionado a la perfeccion.
Eres una Diosa del Flash
Solo quisiera rogarte, suplicarte mas bien me orientes con un par de necesidades:
1.-Se podria hacer que el mensaje de Gracias despues de enviar el Formulario apareciera en una posicion espesifica? se k ha de ser facil pero mil perdone yo soy novato en esto.
2.-Que codigo le tendria que agregar para enviar un correo electronico de confirmacion en html?
Si no estoy abusando de ti y me puedes ayudar t estare eternamente agradecido.
Hola Cristian,
Para cambiar de posición el mensaje de alerta puedes hacer uso de sus propiedas _x y _y de la siguiente forma:
-
var msjalert = Alert.show("Por favor seleccione una fecha de entrada", "Aviso");
-
msjalert._x = 100;
-
msjalert._y = 200;
Con respecto al punto número 2, no entendí la pregunta ¿A qué te refieres con un correo de confirmación en HTML?
Saludos.
Mil graxias.. eres un angel!!!
Wuaw me has impresionado que amabilidad te lo agradezco de todo corazon.
Haber si me logro explicar esta vez.
Punto2: Bueno el php envia un correo a la empresa con la informacion que el visitante ingresa en el formulario pero me gustaria saber si puedes ayudarme a crear un codigo para que además envie un correo a la persona que ingreso sus datos en el formulario, un correo de "Confirmacion" de la recepcion de los datos.
Me kito en sombrero ante ti... eres una gran persona.
Hola Cristian,
Afortunadamente para enviar el correo de confirmación solo necesitas modificar el archivo de PHP:
Saludos.
para formateo de variables no se usa de esa forma nombre_txt.text = "";
la forma correcta para hacerlo es la siguiente
delete thist.nombre_txt.text;
asi liberas la memoria cache del sistema y mejoras el rendimiento del sistema mas si manejas variables globales como lo menciona eric dejo mis datos por si alguno tien alguna duda sobre el manejo de variables globales (_global, _root) para mejorar el rentimiento de ellas.
Carla, eres genial!!!! el formulario esta muy bueno, muy bien explicado y tienes una voluntad de Oro.
Yo baje el archivo y lo estoy probando de momento, no me ha funcionado,
pero estoy viendo donde esta la falla en mi.
Saludos y felicitaciones.
Hola Gabriel,
Gracias por tu comentario.
Si tienes alguna pregunta no dudes en escribirla aquí.
Saludos.
hola Carla!! como andas? muy buenos tus tutoriales, lo unico que no he podido descargar los tutoriales de los componentes ComboBox, RadioButton y CheckBox. No se porque me da error y no me los baja.
bueno, espero tus respuestas, gracias...
Florencia
@Florencia: Hola Florencia, gracias por tu comentario. Te recomiendo que des click con el botón derecho del mouse al botón de "Descargar Archivo" y selecciones "Guardar enlace como...". Te dejo las ligas directas de los tres archivos:
Combobox: http://codigometropoli.com/wp-content/uploads/2008/07/componente_combobox.fla
RadioButton: http://codigometropoli.com/wp-content/uploads/2008/07/componente_radiobutton.fla
CheckBox: http://codigometropoli.com/wp-content/uploads/2008/07/componente_checkbox.fla
En caso de que sigas sin poder bajarlos avísame y te los mando por correo.
Saludos.
@Ronald: Hola Ronald, muchas gracias por tu comentario. Saludos
Hola Carla.
Muy bueno tu formulario de contacto.
tengo un pequeño problema para ver si me puedes ayudar, tengo un formulario donde necesito colocar un datefield, como lo coloco en el flash para que me envie y el codigo en php como se colocaria.
Gracias.
Hola!
Muchas gracias por toda la información, he aprendido más en 2 o 3 días que llevo leyendo aquí, que en otros conocidos sitios.
Ojalá algún día llegue a programar la mitad de bien que tú!!
Estoy intentando un formulario pero no lo consigo, aun así seguiré leyendo más, son unos radiobuttons, con opcion a elegir si o no, y llevarlos a un php.
P.ej:
opcion 1 Si No
opcion 2 Si No
opcion 3 Si No
opcion 4 Si No
Además, no estarán todos en el mismo frame, creo que me volveré loco...
Saludos y muchas gracias por los tutoriales y ayuda en general. xD
En primer lugar agradecerte tu colaboración y darte la enhorabuena por tan estupendo trabajo.
He implementado tu formulario y funciona muy bien. Solamente tengo un pequeño problema que no logro resolver.
El formulario es cargado mediante un cargador en el swf principal, y lo único que no me funcionan son los mensajes del alert. No aparece ni el de error ni el otro. He añadido lo siguiente:
var error = Alert.show("Hubo un error en el envío del mensaje, por favor intentelo más tarde.", "Error", Alert.OK, _root.cargador_mc, "alerta", Alert.OK);
error._x = 640;
error._y = 540;
En local publicando el swf funciona correctamente pero cuando lo publico desde el swf principal no va, nid esde el servidor.
Te agradezco tu ayuda de antemano. Un saludo
Hola Luis,
Debes poner un Alert en el SWF principal para que pueda aparecer cuando lo cargas desde ahi.
Basta con que pongas el alert en la librería.
Saludos.
Carla que tal
Me agrado mucho la forma de ayudarnos y la sencilles con la que explicas este tema que cada vez se hace mas dificil encontrar, sabes, hace dias estoy tratando de ingresar una opcion de upload a tu ejemplo del formulario pero no me es posible, ya que me gustaria que a la hora de que el usuario envie el form, adjunte el archivo y ese mismo archivo llegue a mi correo adjunto, como quedaria el codigo?
De antemano muchas gracias por tu pronta respuesta
Saludos
Hola Francisco,
Revisa este tutorial de Cristalab:
http://www.cristalab.com/tutoriales/subir-archivos-en-flash-con-filereference-c121l/
Saludos.
hola Carla, tengo una duda respecto al tutorial publicado de componente CheckBox, quiero saber como colocar varias opciones de componente CheckBox, por ejemplo... necesito hacer 3 datos y que cada uno de ellos tenga diferentes opciones. Espero me puedas ayudar y comprendas mi duda.
Gracias por tu tiempo!!!
Hola Carla, la verdad me encantó el tutorial esta súper completo!!,
mi consulta es la siguiente. Simplemente quiero agregar un botón de "borrar" para limpiar el contenido de los campos. y no lo estoy logrando. Puedes ayudarme con eso por favor?
te súper agradezco de antemano. Saludos!! y que estés bien!! Jorge
Hola Jorge,
Gracias por tu comentario.
Sólo tendrías que hacer que el botón de borrar llame a la función reestablecerForma:
-
borrar_btn.onRelease = function()
-
{
-
reestablecerForma();
-
}
Saludos.
Gracias gracias gracias!, Carla sos una grosa,!!! te super agradezco!! y te felicito por que sos una gran programadora.
Saludos y que estes bien!
Jorge
hola carla, disculpa que te moleste, pero no se como hacer el código php para los checkBox, si podes pasarme el código te lo voy a agradecer...
saludos y gracias!!!
Hola Carla, este tutorial esta buenisimo, felicitaciones... me a servido mucho... pero tengo una sóla duda... como debería quedar el código si en ves de 5 checkbox quiero 9?
He agredo el resto pero no hay caso, sigue enviando solamente los que tu programaste.
Muchas gracias!
Hola Carla,
está muy bueno lo que estás enseñando porque me ayuda muchísimo!
Te quiero pedir si por favor, podes agregar a los tutoriales cómo se hace para que al seleccionar un radiobutton, checkbox, o datafiel, a parte de enviar esa información a traves de un formulario, también cambien ciertos movieclips en la película de flash. Por ejemplo, si selecciono tal opción te muestra una imagen, si selecciono otra opción te muestra otra y al final de seleccionar todo lo que necesito, se envía un formulario a un mail con todo lo que se ha seleccionado.
Te agradecería muchísimo un ejemplo de cómo hacer esto.
Mil gracias!
Carla
Hola Carla, solo quería felicitarte por tu tutorial, de lo mejor que he visto, por la programación y sobre todo por lo bien explicado que está, algo que se agradece muchísimo cuando no se tienen muchos conocimientos del tema.
Es con el único tutorial que hemos podido hacer un formulario con checkbox y te aseguro que hemos buscado muchísimo por la red.
Gracias!
Hola Carla,
Te felicito por el formulario está excelente!
Quería preguntarte sobre como enviar un email de confirmación. Vi en los comentarios que ya te consultaron, estuve probando, pero no funciona, seguro estoy haciendo algo mal.
Gracias.
Saludos!
Hola Carla,
Exelente el tutorial. Explicas muy bien y amablemente.
Gracias mil.
Saludos!
PD: Quisiera mantener el contacto, te agradecería me escribas a mi email.
Hola Carla,
Gracias por responderme. Disculpame que envié dos comentarios. Le digo email de confirmación (no se si se dice así), en si es el email que recibe la persona que llenó en formulario con un agradecimiento o simplemente para confirmar que sus datos fueron recepcionados. Me funcionó el ejemplo que explicaste en un post. Sería interesante que el usuario pudiera elegir si quiere recibir ese email o no.
Lo que quisiera preguntarte es como cambias los them de los componenetes, el color, lo cambié pero no pude encontrar el color que necesitaba. Y cambiar el color al texto de los check boxes.
Ahora voy a ver cómo puedo hacer para agregar campos y radio buttons.
Disculpame lo extenso del mensaje.
Gracias nuevamente!
Saludos!
Hola Carla,
Quería preguntarte cómo puedo cambiar el color del mensaje de la window de alerta, la parte que dice Error, Alerta, etc.. Gracias. Y disculpa las molestias.
Hola Valeria,
Te contesto por partes.
Para cambiar la parte del título del Alert debes hacer lo siguiete:
-
var estiloTitulo = new mx.styles.CSSStyleDeclaration();
-
estiloTitulo.setStyle("fontWeight", "bold");
-
estiloTitulo.setStyle("color", 2853219);
-
mx.controls.Alert.titleStyleDeclaration = estiloTitulo;
-
mx.controls.Alert.cancelLabel = "Aceptar";
-
mx.controls.Alert.buttonWidth = 90;
Para cambiar el color del texto de los checkboxes revisa mi tutorial del componente checkbox: http://www.codigometropoli.com/componente-checkbox/
Para el correo de confirmación, añade unos botones de radio que digan Sí y No, respectivamente. Como nombres de instancia ponles radio3 y radio4; de data ponles S y N y de groupName ponles confirmGroup. Lo agregamos a la función enviarCorreo:
-
...
-
enviar_lv.confirmacion = confirmGroup.selection.data;
-
...
Ahora sólo nos faltaría el código del PHP:
-
...
-
$sexo = $_POST["sexo"];
-
$confirmacion = $_POST["confirmacion"];
-
...
Ahora, antes del tag que cierra el body pon:
-
if($confirmacion == "S") {
-
$mensaje = "Gracias por ponerse en contacto con nosotros.
-
Sus mensaje es: <br>";
-
$mensaje .= "Nombre: " . $nombre . "<br>";
-
$mensaje .= "Email: " . $correo . "<br>";
-
$mensaje .= "Sexo: " . $sexo . "<br>";
-
$mensaje .= "País: " . $pais . "<br>";
-
$mensaje .= "Temas: ";
-
for($i = 0; $i <count($temas); $i++) {
-
$mensaje .= $temas[$i] . "<br>";
-
} $mensaje .= "
-
Comentarios: " . $comentarios . "<br>";
-
-
}
-
?>
-
</body>
Saludos.
Muchísimas gracias, por tu ayuda Carla, lo voy a probar.
Mil disculpas por tantas preguntas, me cuesta mucho entender php.
No me llegan los datos campos que agregué (telefono y localidad) y unos check boxes, (quedan seleccionados una vez que se envía el form), que son 10 ahora. Quite país, y los radio buttons.
Dónde te puedo pasar el ejemplo que tengo online?
El formulario funciona, pero envía la confirmación no con la dirección de correo que se llena en el formulario. Te cuento que estoy utilizando el formulario en flash mx 2004. Quiza hay cosas que no toma que son del flash 8. El form está insertado en un swf que carga dentro de una peli principal.
Gracias. Saludos.
Hola Carla.
Muy bueno el tutorial y el form.
Excelente! Gracias.
Mira, estuve probando y logré que me enviara nombre, email. Ciudad (esta me la da como undefined). Y los check boxes, los temas, no los recibo en el mail, son 12.
Puede ser el fla?
Desde ya te agradezco el excelente aporte. Salut!
Hola Carla. Te agradezco muchísimo tu ayuda, me sivió todo.
Gracias por responderme.
Saludos.
PD: Disculpa las molestias.
Hola Lorena,
¿Podrías pegar el código ActionScript donde se pasan los datos a PHP y el código de PHP?
Saludos.
Hola, esta buenisimo tu tutorial, ya pude hacerlo, ahora mi duda es si hay manera de que llenar un formulario con informacion proveniente de una pagina .PHP, es decir yo quiero que la gente pueda hacer update a su info de contacto asi que quiero que poder leer la base de datos con PHP y esa enformacion ponerla en el formulario de flash, es eso posible?
Saludos.
q Onda Carla
oye pues nadamas te queria felicitar
la verdad que paciencia y dedicacion al estar aqui contestando a todas esas preguntas
la verdad felicidades
ademas de que tl tutorial esta bien explicado y sin tantos enredos
ja bueno pues solo queria decirte todo este choro xD
cuidate pasatela chido
y felicidades..!!
Hola SadikOrN,
Muchísimas gracias por tu comentario.
Es un detallazo que te animes a escribir para agradecer el tutorial
Saludos.
Hola Carla, la verdad que es buenisimo lo que haces.
Y seguis respondiendo! desde el 2008! Muy bueno lo tuyo.
Los tutoriales muy claros. Yo me doy maña con algo de Actionscript pero lo tuyo es excelente.
Tengo un problema con este formulario. Lo que quiero es un formulario sin los checkbox ni los radiobuttons, eso ya lo cambie, despues de leer todos los comentarios fui modificando algunas cosas y al final me quedó el código que copio abajo, pero cuando lo pruebo en el servidor, no me llega el mail y me aparece la alerta de "Error. Hubo un error en el envío del mensaje, por favor intente más tarde."
Hice la prueba con el php de Prueba_Correo.php y funcionó.
Pero cuando pruebo el enviar_formulario_de_contacto.php me dice "Parse error: syntax error, unexpected '<' in /home/nicolasr/public_html/webzas/enviar_formulario_de_contacto.php on line 20" que se refiere a despues de $formato_correo = 1;. Tal vez tengo algo mal en el código. Me podes orientar? Gracias. Saludos
Estos son los códigos:
FLASH
import mx.controls.Alert;
_global.style.setStyle("themeColor", "0xFFFFFF");
System.useCodepage = true;
var paises:Array = new Array();
var enviar_lv:LoadVars = new LoadVars();
var resultado_lv:LoadVars = new LoadVars();
initForm();
function initForm() {
escondeMensajes();
llenaComboPaises();
}
function escondeMensajes() {
for(var i = 1; i 0 && email.indexOf("@") == email.lastIndexOf("@"))
{
if(email.lastIndexOf(".")> email.indexOf("@") && email.lastIndexOf(".")<email.length-1)
{
res = true;
}
}
return res;
}
enviar_btn.onRelease = function() {
validaForma();
}
function enviarCorreo() {
enviar_btn.enabled = false;
enviar_lv.nombre = nombre_txt.text;
enviar_lv.apellido = apellido_txt.text;
enviar_lv.correo = correo_txt.text;
enviar_lv.pais = pais_cb.selectedItem.label;
enviar_lv.consulta = consulta_txt.text;
enviar_lv.sendAndLoad("enviar_formulario_de_contacto.php", resultado_lv, "POST");
}
function reestablecerForma() {
nombre_txt.text = "";
apellido_txt.text = "";
correo_txt.text = "";
pais_cb.selectedIndex = 0;
consulta_txt.text = "";
}
resultado_lv.onLoad = function(success:Boolean)
{
var respuesta = this.resultado;
if(success)
{
if(respuesta == "S")
{
Alert.show("Su mensaje ha sido enviado.", "Gracias", Alert.OK, null, "alerta", Alert.OK);
reestablecerForma();
}
else
{
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
}
}
else
Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK);
enviar_btn.enabled = true;
};
pais_cb.setStyle("backgroundColor", "0x170F0F");
pais_cb.setStyle("borderColor", "0x170F0F");
pais_cb.setStyle("borderStyle", "solid");
pais_cb.setStyle("color", "0xFFFFFF");
pais_cb.setStyle("disabledColor", "0x000000");
pais_cb.setStyle("fontFamily", "Arial");
pais_cb.setStyle("fontSize", "11");
pais_cb.setStyle("fontStyle", "normal");
PHP
<?php
$nombre = stripslashes($_POST["nombre"]);
$apellido = stripslashes($_POST["apellido"]);
$correo = $_POST["correo"];
$pais = $_POST["pais"];
$consulta = $_POST["consulta"];
$formatos = array("text/html", "text/plain");
$remitente = "no-reply@nicolasrivera.com.ar";
$para = "nr@nicolasrivera.com.ar,nicolasrivera.dg@gmail.com";
$asunto = "Mensaje desde la web";
$formato_correo = 1;
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: " . $formatos[$formato_correo] . "; charset=iso-8859-1\r\n";
$header .= "From: " . $remitente . "\n";
if($nombre != "" && $correo != "") {
if($formato_correo == 0) {
$mensaje = '
' . $asunto . '
Nombre:
' . $nombre . '
Apellido:
' . $apellido . '
Email:
' . $correo . '
País:
' . $pais . '
Consulta:
' . nl2br(stripslashes($consulta)) . '
';
}
else {
$mensaje = "
----------------------------------------------------------------------------\n
Nombre: " . $nombre . "\n
Apellido: " . $apellido . "\n
Email: " . $correo . "\n
País: " . $pais . "\n
Consulta: " . $consulta . "\n
----------------------------------------------------------------------------\n";
}
}
if($mensaje != "")
{
if(mail($para, $asunto, $mensaje, $header))
echo '&resultado=S&;';
else
echo '&resultado=N&';
}
else
echo '&resultado=N&';
?>
Hola, no salio esta parte, "Parse error: syntax error, unexpected '<' in /home/nicolasr/public_html/webzas/enviar_formulario_de_contacto.php on line 20" que se refiere a "" despues de $formato_correo = 1;.
Cuando saco el "<" del "" y pruebo el php me dice &resultado=N& que no entiendo que es lo que pasó. Gracias de nuevo. Saludos
Hola Carla, Disculpame por hacerte leer tanto pero ya solucione lo del correo. Ya me llegan los mensajes. Lo que no entiendo es lo que comentas mas arriba sobre validar la fecha, por ejemplo para que el usuario no seleccione 31 de febrero. Yo utilice 3 combobox, uno para los dias, uno para los meses y uno para los años, similar a lo que hizo Kenny pero con tus arreglos en el código de dias. Vos le decis que utilice el componente DateField pero si lo hice con los 3 combobox, como podria hacer para validar la fecha? Muchas gracias, saludos.
Hola Nicolás,
Hay muchas funciones en Internet para validar fechas en Flash. Aquí hay una para AS2: http://www.kirupa.com/forum/showthread.php?t=304774
Saludos.
muy util e interesante!
pero...
nuevo reto!
que tal si le metemos algo para que adjunte archivos y lo envie al mismo correo?
tu sabes hacerlo?
o alguien más?
suerte, y siga con este sitio tan interesante!
saludos Desde México
Escribe un comentario
Nota: Es posible que tu comentario requiera autorización, si es así tu comentario será publicado a la brevedad. Gracias.



Gracias, con este tipo de archivos y explicaciones que facilitan es cómo generan más ganas de aprender.
éxitos.