Foros del Web » Programando para Internet » PHP »

Formulario y enviarlo por e-mail

Estas en el tema de Formulario y enviarlo por e-mail en el foro de PHP en Foros del Web. Hola a todos, Estoy haciendo una web de un club de coches. Entonces, mi idea para que la persona interesada pudiera hacerse socio de manera ...
  #1 (permalink)  
Antiguo 07/05/2006, 11:08
 
Fecha de Ingreso: octubre-2001
Ubicación: Las Palmas - Islas Canarias
Mensajes: 229
Antigüedad: 22 años, 6 meses
Puntos: 0
Formulario y enviarlo por e-mail

Hola a todos,
Estoy haciendo una web de un club de coches. Entonces, mi idea para que la persona interesada pudiera hacerse socio de manera más rápida es un formulario, mediante el cual rellena una serie de campos, que una vez enviados le llegan el presidente del club por e-mail.
He aquí el formulario:
Código:
<form action="form.php" method="post" name="socio" id="socio">
          <table width="550" border="0" cellspacing="0" cellpadding="5">
            <tr>
              <td colspan="4" class="mediano1_2"><em><strong>Tus Datos</strong></em></td>
            </tr>
            <tr>
              <td width="100" class="mediano1_2"><div align="right">Nombre</div></td>
              <td width="175" class="mediano1_2"><input name="nombre" type="text" class="mediano1" id="nombre" size="20"></td>
              <td width="100" class="mediano1_2"><div align="right">Apellidos</div></td>
              <td width="175" class="mediano1_2"><input name="apellido" type="text" class="mediano1" id="apellido" size="25"></td>
            </tr>
            <tr>
              <td width="100" class="mediano1_2"><div align="right">Direcci&oacute;n</div></td>
              <td colspan="3" class="mediano1_2"><input name="direccion" type="text" class="mediano1" id="direccion" size="40"></td>
            </tr>
            <tr>
              <td width="100" class="mediano1_2"><div align="right">C.P.</div></td>
              <td width="175" class="mediano1_2"><input name="cp" type="text" class="mediano1" id="cp" size="6" maxlength="5"></td>
              <td width="100" class="mediano1_2"><div align="right">Localidad</div></td>
              <td width="175" class="mediano1_2"><input name="localidad" type="text" class="mediano1" id="localidad" size="20"></td>
            </tr>
            <tr>
              <td width="100" class="mediano1_2"><div align="right">Provincia</div></td>
              <td width="175" class="mediano1_2"><input name="provincia" type="text" class="mediano1" id="provincia" size="20"></td>
              <td width="100" class="mediano1_2"><div align="right">DNI</div></td>
              <td width="175" class="mediano1_2"><input name="dni" type="text" class="mediano1" id="dni" size="20" maxlength="10"></td>
            </tr>
            <tr>
              <td colspan="4" class="mediano1_2">&nbsp;</td>
            </tr>
            <tr>
              <td class="mediano1_2"><div align="right">Tel&eacute;fono</div></td>
              <td class="mediano1_2"><input name="telefono" type="text" class="mediano1" id="telefono" size="20" maxlength="9"></td>
              <td class="mediano1_2"><div align="right">M&oacute;vil</div></td>
              <td class="mediano1_2"><input name="movil" type="text" class="mediano1" id="movil" size="20" maxlength="9"></td>
            </tr>
            <tr>
              <td class="mediano1_2"><div align="right">Email</div></td>
              <td class="mediano1_2"><input name="email" type="text" class="mediano1" id="email" size="20"></td>
              <td class="mediano1_2">&nbsp;</td>
              <td class="mediano1_2">&nbsp;</td>
            </tr>
            <tr>
              <td colspan="4" class="mediano1_2">&nbsp;</td>
            </tr>
            <tr>
              <td colspan="4" class="mediano1_2"><em><strong>Datos
                    del Veh&iacute;culo</strong></em></td>
            </tr>
            <tr>
              <td class="mediano1_2"><div align="right">Marca</div></td>
              <td class="mediano1_2"><input name="marca" type="text" class="mediano1" id="marca" size="20"></td>
              <td class="mediano1_2"><div align="right">Modelo</div></td>
              <td class="mediano1_2"><input name="modelo" type="text" class="mediano1" id="modelo" size="20"></td>
            </tr>
            <tr>
              <td class="mediano1_2"><div align="right">Matr&iacute;cula</div></td>
              <td class="mediano1_2"><input name="matricula" type="text" class="mediano1" id="matricula" size="20"></td>
              <td class="mediano1_2"><div align="right">Fecha</div></td>
              <td class="mediano1_2"><input name="fecha" type="text" class="mediano1" id="fecha" size="20"></td>
            </tr>
            <tr>
              <td class="mediano1_2">&nbsp;</td>
              <td class="mediano1_2">&nbsp;</td>
              <td class="mediano1_2">&nbsp;</td>
              <td class="mediano1_2">&nbsp;</td>
            </tr>
            <tr>
              <td colspan="2" align="right" class="mediano1_2"><label>
                <input name="enviar" type="submit" class="mediano1" id="enviar" value="Enviar">
              </label></td>
              <td colspan="2" class="mediano1_2"><input name="borrar" type="reset" class="mediano1" id="borrar" value="Borrar"></td>
            </tr>
          </table>
            </form>
Bien, con ese formulario, el cual se envía a la página "form.php", todavia ficticia, me gustaría que en la siguiente página, o sea, "form.php", el usuario no envíe los datos, sino que lo compruebe. Esto no se exactamente, sería con la funcion "echo" en php y la variable, por ejemplo "$nombre" para mostrar el nombre que ha escrito el usuario.
Entonces, después lo que desearía es que, una vez revisado y cumplimentado el formulario, ya se pudiera enviar por e-mail a la dirección de correo. Claro, se puede hacer poniendo en "form action" directamente la dirección de e-mail, pero me gustaría hacerlo un poco más serio.
Otra cosa, ¿cómo hago para que todos los campos sean obligatorios, esto es que el usuario no pueda enviar el formulario con algún campo en blanco?

Siento mi ignorancia, pero me apetece aprender e ir haciéndolo por mí mismo. He probado con algunos scripts que se pueden bajar, pero creo que hacer el formulario es una buena manera de aprender a irme manejando en php.

Saludos y gracias de antemano,
Eduardo
  #2 (permalink)  
Antiguo 07/05/2006, 15:05
Avatar de JAK^  
Fecha de Ingreso: octubre-2005
Ubicación: ^^CaMiNiTo Al CoSTaDo DeL
Mensajes: 850
Antigüedad: 18 años, 6 meses
Puntos: 4
mi humilde opinion

hola!, por el tema de la validacion es decir ke no tengas campos en blanco y esas cosas (la parte ke menos me gusta a la hora de trabajar con formus jeje), no es complicado (pero aburrido jeje), yo tengo un sistemita parecido lo hago asi. en la primera pagina muestro el formu, cuando envia paso a la sig pagina ke es de validacion en tu caso "form.php", en donde empieza la validacion de todos los campos, por ejemplo si tu formu tiene "nombre", "apellido", "telefono", "mail". deberias validar primero ke se hallan llenado todo los campos y segundo ke los campos sean validos.

ejem:

Código PHP:
 if ($_POST[txt_apell] and is_string($_POST[txt_apell])) { //compruebo ke exista el campo txt_apell ke me llega via post y a la ves ke sea tipo string
          
$_POST[txt_apell]= ucwords($_POST[txt_apell]);
      }else {
          
$error++;
        
$error_msg"$error.- Error, Apellido Invalido <br>";
          
$_POST[txt_apell]="";
      }
      if (
$_POST[txt_nom] and is_string($_POST[txt_nom])) { //lo mismo ke kon apellido
          
$_POST[txt_nom]= ucwords($_POST[txt_nom]);
      }    else {
          
$error++;
        
$error_msg .= "$error.- Error, Nombres Invalido <br>";
          
$_POST[txt_nom]="";
      }
      if (!
is_numeric($_POST[txt_tel])) { //compruebo ke sea numerico y ke exista
           
$error++;
        
$error_msg .= "$error.- Error, DNI Invalido <br>";
        
$_POST[txt_tel]="";
      }

if (!
ereg("^([a-zA-Z0-9._]+)@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})$",$_POST[e_mail])){ //compruebo mail con sintaxis valida
        
$error++;
        
$error_msg .= "$error.- Error, e-mail invalido <br>";
        
$_POST[e_mail]="";
      } 
de esta manera tenemos validaos nuestro campos... y vamos guardando en una variable $error_msg los mesajes de error ke se van produciendo.

luego verificamos ke no se halla producido ningun error

Código PHP:

if ($error) {
echo 
"se han producido los sig errores: <br>".$msg_error;

}else { 
//si no se produjo ningun error muestro los resultados

echo "los datos ingresados son : ".$_POST[txt_apell]."<br>".$_POST[txt_nom]."<br>".$_POST[txt_tel]."<br>".$_POST[txt_mail]."<br>";


ahora lo ke falta es mandar a una 3ra pagina los datos ya validados pra k se envie el mail
este codigo tambien va en la pagian de validacion form.php dentro del else ke dice ke no se produjeron errores

Código HTML:
<form name="form2" method="post" action="form2.php">
				    <? 
            foreach( $_POST as $key => $value ) { //esto genera un hide por kada variable ke nos llego mediante post es decir apellido, nombre,tel, mail
                echo "<input type='hidden' name='".$key."' value='".$value."'>"; 
            } 
        	
		?>
                    <div align="center">
				      <input name="Submit3" type="submit" class="Estilo90" value="Publicar">
                    </div>
                  </form> 
si apretamos publicar lo ke se hace es mandar a form2.php la info mediante post

en esta solo nos keda mandar el mail

Código PHP:

$para
="[email protected]";
$tema"Nueva registro";
$mensaje"Nueva Publicación: <br>".$_POST[txt_apell].", ".$_POST[txt_nom].", <br>".$_POST[txt_tel]."<br> mail:".$_POST[txt_mail];

@
mail ($para$tema$mensaje); 
y ahy taria ya
__________________________

ahora si keres ke el usuario antes de mandar el mail pueda corregir los datos o si le dio un error pueda volver y corregir tenes ke agregar:

para korregir el error:

Código HTML:
<form name="form1" method="post" action="pagina_del_formu.php">
                      <? 
            foreach( $_POST as $key => $value ) { 
                echo "<input type='hidden' name='".$key."' value='".$value."'>"; 
            } 
        ?> 
                      <input name="Submit" type="submit" class="Estilo90" value="volver y Corregir">
                    </form> 
este code iria dentro de el if ke verifica ke hay errores
si hay error te muestra los mensajes de error y te muestra este formu ke te da la posibilidad de volver y corregir.

esto lo ke hace es volver a la pagina donde esta el formu mandando los datos de vuelta para ke el formu aparesca lleno (los campos ke no tengan errores) y el usuario no tenga ke llenarlos, OJO tenes ke poner en cada campo del formu comovalor inicial esto

<? echo $_POST[txt_apell] ?>
<? echo $_POST[txt_nom] ?>
<? echo $_POST[txt_tel] ?>
<? echo $_POST[txt_mail] ?>

y si no se produjo error pero el usuario kiere cambiar algo lo mismo tenes ke hacer esto

dentro del else ke verifica k no hay errores poner

Código HTML:
<form name="form1" method="post" action="pagina_del_formu.php">
                      <? 
            foreach( $_POST as $key => $value ) { 
                echo "<input type='hidden' name='".$key."' value='".$value."'>"; 
            } 
        ?> 
                      <input name="Submit" type="submit" class="Estilo90" value="volver y Corregir">
                    </form> 
bueno ke es lo mismo ke el otro...

bueno kreo ke no me olvide de nada.... no se si es la manera mas eficiente de hacerlo pero es la unica ke se jajaj, si keres esperar ke te conteste los otros muchacho ke saben much0o mas ke yop es una muy sabia desicion

pero bue lo ke vale es la intencion espero ke te sirva de algo exitos!!!
__________________
hola . . .
  #3 (permalink)  
Antiguo 09/05/2006, 17:31
 
Fecha de Ingreso: octubre-2001
Ubicación: Las Palmas - Islas Canarias
Mensajes: 229
Antigüedad: 22 años, 6 meses
Puntos: 0
Hola Jak,
Genial tu explicación, muchas gracias. Voy a probar y te cuento cómo ha salido el experimento.
Saludos!!
Edu
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:20.