Foros del Web » Programando para Internet » PHP »

Rellenar formulario, cuando falten datos

Estas en el tema de Rellenar formulario, cuando falten datos en el foro de PHP en Foros del Web. Hola, tengo un formulario de consulta que envia un email a la empresa. Los campos del formulario son los tipicos (nombre, email, telefono y el ...
  #1 (permalink)  
Antiguo 12/01/2007, 06:24
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
SOLUCIONADO--Rellenar formulario, cuando falten datos

Hola, tengo un formulario de consulta que envia un email a la empresa. Los campos del formulario son los tipicos (nombre, email, telefono y el texto) cuando se envia el formulario lo paso a un script que procesa la informacion y lo envia por email.

Dicha información antes la analizo en un if para comprobar si estan todos los datos rellenados, así:
Código PHP:
<?
if($nombre==''||$apellidos==''||$email==''||$msg==''){
    echo 
"<script> alert (\"Rellena todos los campos del formulario\"); </script>";
    echo 
"<script language=Javascript> location.href=\"contacto.php\"; </script>";
    die();
    }
?>
Donde si falta algun campo por rellenar devuelva a la pagina del formulario y antes da una ventana de error con el <script>.

Mi duda es, ¿Se puede recuperar los dados que si que coloco el usuario? Por ejemplo si pone su nombre y el texto (campo msg) y se deja el email vacio, cuando vuelva al formulario que esté su nombre y el texto puesto en el formulario y solo tenga que escribir el email.

Espero vuestras respuestas.

Muchs gracias!!
__________________
Quien no me pregunta no se entera!!

Última edición por alllebor; 15/01/2007 a las 01:44
  #2 (permalink)  
Antiguo 12/01/2007, 07:09
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

Buenos días alllebor.

Creo que puedes solucionarlo de la forma siguiente:
  • En los input de tu formulario ponle la clausula value="<?echo $nombre;?>" (a cada uno el que corresponda).

EDITO PARA AÑADIR
Si alguno es textarea ya sabes que la forma de darle el value es distinta:
Cita:
<textarea NAME="texto" cols=70 rows=15><?echo $texto;?></textarea>
Luego, como los vas ha recibir con tu $_POST, te los mostrará sin problema.

Un saludo.

Última edición por holahola; 12/01/2007 a las 07:22 Razón: textarea
  #3 (permalink)  
Antiguo 12/01/2007, 07:22
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

no se si lo hago bien pero no me funciona, en el script email.php (es donde pasa los datos del formulario y se envia el script) no debo de tocar nada?
Este es el codigo del email.php

Código PHP:
<?php 

$mail
='[email protected]'

  
$nombre $_POST['nombre'];
$apellidos $_POST['apellidos'];
$telefono $_POST['telefono']; 
$email $_POST['email']; 
$msg $_POST['texto']; 
$envia='Pàgina Web AER';
$remite='[email protected]';

$thank="contacto.php"
    
    if(
$nombre==''||$apellidos==''||$email==''||$msg==''){
    echo 
"<script> alert (\"Ompli tots els camps del formulari\"); </script>";
    echo 
"<script language=Javascript> location.href=\"contacto.php\"; </script>";
    die();
    }
    


$message 
Nom:"
.$nombre."
Cognoms:"
.$apellidos."
Telèfon:"
.$telefono."  
Email:"
.$email.
Missatge:"
.$msg.""
   
  if (
mail($mail,"Consulta de la pàgina web",$message"From:$envia <$remite>" "\r\n"))  
      {
    echo 
"<script> alert (\"Formulari enviat correctament, gracies!!\"); </script>";
    echo 
"<script language=Javascript> location.href=\"contacto.php\"; </script>";
    die();
    }
    else {
    echo 
"<script> alert (\"No s'ha pogut enviar el formulari, intenta'l novament \"); </script>";
    echo 
"<script language=Javascript> location.href=\"contacto.php\"; </script>";
    die();
    }
   
 
?>
En el formulario (contacto.php) he puesto lo que tu me has dicho

Código HTML:
<input value="<?echo $nombre;?>" " name="nombre" type="Text" size="50" maxlength="50" /> 
Gracias holahola
__________________
Quien no me pregunta no se entera!!
  #4 (permalink)  
Antiguo 12/01/2007, 07:28
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

Normalmente, deberías de estan enviando el formulario en dos casos distintos:
  1. La primera vez.
  2. Luego, cada vez que hay un error

Observa que antes de enviar el formulario, caso de error, no estés inicializando las variables.
  #5 (permalink)  
Antiguo 12/01/2007, 07:32
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

Supongo que es un error de transcripción, pero lo siguiente es erróneo.

Cita:
<input value="<?echo $nombre;?>" " name="nombre" type="Text" size="50" maxlength="50" />
Lo correcto es:
Cita:
<input value="<?echo $nombre;?>" name="nombre" type="Text" size="50" maxlength="50" />
Le sobraba una doble comilla delante del name.
  #6 (permalink)  
Antiguo 12/01/2007, 07:37
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

Lo de las comillas ya lo habia corregido, gracias.

y lo de inicializar las variables no se a que te refieres, en el script emial.php, o donde esta el fomrulario?

Código HTML:
 <form method="post" action="email.php">
            <div >
            
              <table width="765" border="0">
                <tr>
                  <td colspan="2"><p align="center" class="Estilo7">Per a qualsevol consulta o suggeriment, cal  reomplir aquest formulari </p></td>
				  </tr>
                <tr>
                  <td width="271"><div align="right"><span class="Estilo9">Nom : </span></div></td>
                  <td width="484"><span class="Estilo11">
                    <input value="<? echo $nombre;?>"  name="nombre" type="Text" size="50" maxlength="50" />
                  </span></td>
                </tr>
                <tr>
                  <td><div align="right"><span class="Estilo9">Cognoms: </span></div></td>
                  <td><span class="Estilo11">
                    <input name="apellidos" type="Text" size="50" maxlength="50"/>
                  </span></td>
                </tr>
                <tr>
                  <td><div align="right"><span class="Estilo9">Tel&egrave;fon :</span></div></td>
                  <td><span class="Estilo11">
                    <input name="telefono" type="Text" size="15" maxlength="9" />
                  </span></td>
                </tr>
                <tr>
                  <td><div align="right"><span class="Estilo9">E-mail :</span></div></td>
                  <td><span class="Estilo11">
                    <input name="email" type="Text" size="50" maxlength="70" />
                  </span></td>
                </tr>
                <tr>
                  <td><div align="right"><span class="Estilo9">Text : </span></div></td>
                  <td><span class="Estilo12">
                    <textarea name="texto" cols="50" rows="5" ></textarea>
                  </span></td>
                </tr>
                <tr>
                  <td colspan="2"><div align="center"><span class="Estilo1 Estilo14">*Ompli totes les dades del formulari </span></div></td>
                  </tr>
                <tr>
                  <td colspan="2"><div align="center">
                      <input name="accion" type="submit" value="Enviar" style="font-size: 12pt"/>
                  </div></td>
                </tr>
              </table>
              <p><br>
              </p>
              </div>
          </form> 
Aqui tienes el formulario, solo lo estaba probando en el campo nombre.
__________________
Quien no me pregunta no se entera!!
  #7 (permalink)  
Antiguo 12/01/2007, 07:38
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

Me marcho para casa. A la noche, me conectaré otra vez y, si no has encontrado la solución, seguiremos en contacto.

Un saludo.
  #8 (permalink)  
Antiguo 12/01/2007, 07:43
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

OK!! Tranquilo siquieres lo dejamos para el lunes.
Disfruta del fin de semana y descansa.

Muchas gracias por tu ayuda!
__________________
Quien no me pregunta no se entera!!
  #9 (permalink)  
Antiguo 12/01/2007, 17:29
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

Ya he visto el porqué no estás recibiendo las variables.

De todas formas, antes hay que aclarar que la depuración la estás haciendo en el servidor (php) y el mensaje lo das en el cliente (javascript). Lo correcto sería depurar con javascrit (en el cliente) dando los alert correspondiente sin salirse del cliente y una vez el formulario estuviera correcto, volver al servidor. Por seguridad, se debe hacer también la depuración en el servidor. Pero pasemos a tu problema.

Cita:
if($nombre==''||$apellidos==''||$email==''||$msg== ''){
echo "<script> alert (\"Ompli tots els camps del formulari\"); </script>";
echo "<script language=Javascript> location.href=\"contacto.php\"; </script>";
die();
}
Date cuenta que una vez que detectas que hay error, despues de dar un alert, te largas de este script y arrancas el formulario redireccionandolo con el location: lógicamente, de esta forma, pierdes las variables. Podrías añadírselas a la url (contacto.php?nombre=..... etcétera).

Pero te propongo que lo hagas así:

Código PHP:
if($nombre==''||$apellidos==''||$email==''||$msg==''){
    echo 
"<script> alert (\"Ompli tots els camps del formulari\"); </script>";
    include (
"contacto.php");
    exit;
    } 
De esta forma, el formulario recibe las variables que se han recogido del $_POST, y nos largamos del script con el exit. De esta forma lograrías solucionar tu problema.

Observarás que, cuando te salga el alert, la ventana que queda detrás del navegador se queda en blanco; luego, cuando aceptas el alert, te aparecerá nuevamente tu formulario con los datos que habías tecleado anteriormente. Esto pasa por estar mezclando programación de servidor y de cliente.

Para evitar ese defecto, lo que yo suelo hacer es mostrar el formulario ANTES de mostrar el ALERT, aunque la verdad es que se comporta de distinta forma dependiendo del navegador que utilices; para mi gusto el que mejor lo hace es Firefox. Es decir, yo lo dejaría así:

Código PHP:
if($nombre==''||$apellidos==''||$email==''||$msg==''){
    include (
"contacto.php");
    echo 
"<script> alert (\"Ompli tots els camps del formulari\"); </script>";
    exit;
    } 
Espero haberme explicado y, sobre todo, que sirva para solucionar tu problema.

Un saludo alllebor.
  #10 (permalink)  
Antiguo 12/01/2007, 18:30
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 3 meses
Puntos: 5
Re: Rellenar formulario, cuando falten datos

Hola:

Con uso de plantillas estilo smarty estos problemas se resuelven y quedan bastante bien....
No tengo código por el momento ya que lo tengo en la oficina..

Nos vemos...
  #11 (permalink)  
Antiguo 13/01/2007, 11:36
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

holhola acabo de ver tu respuesta, y me parece muy razonable e interesante. Lo malo que no lo puedo probar hasta el lunes. Ya te contaré el lunes como me ha ido, pero seguro que muy bien.

lucasarts_18 me gustaria que me pasaras mas informacion de esas plantillas que dices, ya que me parecen interesantes.

GRACIAS A TODOS!!!
__________________
Quien no me pregunta no se entera!!
  #12 (permalink)  
Antiguo 13/01/2007, 15:06
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Re: Rellenar formulario, cuando falten datos

http://smarty.php.net

he leído tu problema intenta poner <input type='text' value='<? echo $_REQUEST['nombre']; ?>' name='nombre'>

Saludos
__________________
Hospedaje Web al mejor costo!
  #13 (permalink)  
Antiguo 15/01/2007, 01:38
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Rellenar formulario, cuando falten datos

SOLUCIONADO!! Ya me funciona, holahola lo he hecho como me has dicho y funciona, como no jejejeje.

Bueno gracias a todos por su interes. Me alegro que haya gente que quieran ayudar con los tiempos que corren,jejeje.
__________________
Quien no me pregunta no se entera!!
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 21:38.