Ver Mensaje Individual
  #9 (permalink)  
Antiguo 12/01/2007, 17:29
Avatar de holahola
holahola
 
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
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.