Foros del Web » Programando para Internet » PHP »

Duda sobre formulario php

Estas en el tema de Duda sobre formulario php en el foro de PHP en Foros del Web. Buenos días, he encontrado un tuto de un formulario php sencillo y efectivo pero al que querría modificar algo que no consigo. formulario.hmtl: Código HTML: ...
  #1 (permalink)  
Antiguo 13/03/2012, 06:52
 
Fecha de Ingreso: marzo-2012
Mensajes: 28
Antigüedad: 12 años, 8 meses
Puntos: 0
Duda sobre formulario php

Buenos días, he encontrado un tuto de un formulario php sencillo y efectivo pero al que querría modificar algo que no consigo.
formulario.hmtl:
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-es" lang="es-es">

 <head>

  <title>Ejemplo de envío de formulario por email con php</title>

  <meta name="description" content="Formulario de contacto enviado por correo electronico usando php"/>

  </head>

<body>

 <div id="formulario">

  <form action="enviar.php" method="POST">

    Nombre: <input name="nombre" size="40" type="text" />

    Email: <input name="email" size="40" type="text" />

    Asunto: <input name="asunto" size="40" type="text" />
  
    Para: <select name="para">

    <option value="[email protected]">Dpto. de publicidad</option>

    <option value="[email protected]">Dpto. de administracion</option>
    </select>

    Mensaje: <textarea cols="40" rows="6" name="mensaje"></textarea>

    <input name="enviar" type="submit" value="Enviar" />
  </form>
 </div>
</body>
</html> 
Y en enviar.php

Código PHP:
<?php

  
//variable de validacion

  
$valida true;

  if (empty(
$_POST['nombre'])) {

    echo 
"<b>No se especifico nombre</b><br/>";

    
$valida false;

  }

  if (empty(
$_POST['email'])) {

   echo 
"<b>No se especifico E - mail</b><br/>";

   
$valida false;

  }

  if (empty(
$_POST['asunto'])) {

   echo 
"<b>No se especifico asunto</b><br/>";

   
$valida false;

  }

  if (empty(
$_POST['mensaje'])) {

   echo 
"<b>Por favor, no envie un mensaje en blanco</b><br/>";

   
$valida false;

  }

  
// Validamos la direccion de correo electronico

  
if (!strchr($_POST['email'],"@") || !strchr($_POST['email'],"."))
   {

    echo 
"<b>No es un correo valido</b><br/>";

    
$valida false;

   }

  
// Si las comprobaciones son correctas

  
if ($valida == true)

   {

    
// Creamos el header para el mensaje

    // para:

    
$to $_POST['para'];

    
// Asunto

    
$subject $_POST['asunto'];

    
// Cabeceras del mail (Content-Type y demas info)

    
$headers "MIME-Version: 1.0\n";

    
$headers .= "Content-type: text/html; charset=utf-8\n";

    
// El From: en la forma Nombre <[email protected]>, esto garantiza que

    // el receptor vea solo el nombre de quien envia

    
$headers .= "From: ".$_POST['nombre']." <".$_POST['email'].">\n";

    
// Opcional: Resopnder a:

    
$headers .= "Reply-To: " $_POST['email']."\n";

    
//Opcional X-Mailer

    
$headers .= "X-Mailer: PHP/" phpversion();

    
// Cuerpo del email

    
$message $_POST['mensaje'];

    if(
mail($to$subject$message,$headers))
     {

      echo 
"<p>Mensaje enviado, Gracias por sus sugerencias.<br /><a href=\"javascript:history.go(-1)\">Volver</a></p>";

     }

   }

?>
La cuestión es que al dar enviar, si dejas algun campo en blanco salta enviar.php y me gustaría que esos mensajes se cargaran en el campo en el que falta info en formulario.hmtl
Alguien sabe como se podría hacer?
Muchas gracias
saludos
  #2 (permalink)  
Antiguo 13/03/2012, 06:58
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Duda sobre formulario php

Tienes que agregar el valor del campo si es que está definido, si no, lo dejas en blanco, o sea:

Código PHP:
Ver original
  1. Nombre: <input name="nombre" size="40" type="text" value="<?php echo isset($_POST['nombre'])?:$_POST['nombre'];""?>" />

lo mismo para cada campo. Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 13/03/2012, 07:21
 
Fecha de Ingreso: marzo-2012
Mensajes: 28
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Duda sobre formulario php

Gracias pero ese isset me da error:

Parse error: syntax error, unexpected ':'
  #4 (permalink)  
Antiguo 13/03/2012, 07:24
 
Fecha de Ingreso: marzo-2012
Mensajes: 28
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Duda sobre formulario php

Creo que no me he explicado, la cosa es que al dar a enviar no se cargue enviar.php, si no que los mensajes salgan en el mismo formulario, en cada campo.
Saludos
  #5 (permalink)  
Antiguo 13/03/2012, 08:32
 
Fecha de Ingreso: marzo-2008
Mensajes: 383
Antigüedad: 16 años, 8 meses
Puntos: 5
Respuesta: Duda sobre formulario php

Una manera de hacerlo es poner en action del form la misma página del formulario y el control de contenido en la misma pagina.

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_POST["nombre"])){
  4.  
  5.  if($_POST["nombre"] == "") $nombreError = "Debes introducir un nombre";
  6.  
  7. }
  8.  
  9.  
  10. ?>
  11.  
  12. <html>
  13.  
  14. <form action="./" method="post">
  15.  
  16. <input type="text" name="nombre" value="<?php if(isset($_POST["nombre"])) echo $nombreError; ?>" >
  17.  
  18. <input type="submit" value="Enviar">
  19.  
  20. </html>


por ejemplo

Etiquetas: formulario, html, variables
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 14:10.