Foros del Web » Programando para Internet » PHP »

Me recarga la página y limpia el formulario

Estas en el tema de Me recarga la página y limpia el formulario en el foro de PHP en Foros del Web. Hola, hice un formulario para ingresar ciertos datos. Algunos de estos datos tienen un control hecho con javascript. Mi problema es que luego de mostrase ...
  #1 (permalink)  
Antiguo 03/12/2013, 14:10
 
Fecha de Ingreso: abril-2005
Mensajes: 483
Antigüedad: 19 años
Puntos: 3
Me recarga la página y limpia el formulario

Hola, hice un formulario para ingresar ciertos datos. Algunos de estos datos tienen un control hecho con javascript.

Mi problema es que luego de mostrase una aviso de estos controles, me limpia el formulario perdiendo los datos ya cargados.

El link: http://www.eltelegrafo.com/reina/reina.php

¿Qué hago mal?

Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
    function estudio(elemento) {
    	element = document.getElementById("idestudio");
        if(elemento.value=="si") {
        	element.style.display='block';
         }else{
        	 element.style.display='none';
         }
    }
	
    function gustaleer(elemento) {
    	element = document.getElementById("idgustaleer");
        if(elemento.value=="si") {
        	element.style.display='block';
         }else{
        	 element.style.display='none';
         }
    }
	
    function miratv(elemento) {
    	element = document.getElementById("idmiratv");
        if(elemento.value=="si") {
        	element.style.display='block';
         }else{
        	 element.style.display='none';
         }
    }
	
    function validaDatos()
    {
       	if (document.formenviarmail.nombres.value==""){ 
         	alert("Falta ingresar el nombre") 
         	document.formenviarmail.nombres.focus() 
         	return 0; 
      	}
		
       	if (document.formenviarmail.apellidos.value==""){ 
        	alert("Falta ingresar el apellido") 
        	document.formenviarmail.apellidos.focus() 
        	return 0; 
     	}
		
       	if (document.formenviarmail.cedula.value==""){ 
       	 	alert("Falta ingresar la cédula") 
       	 	document.formenviarmail.cedula.focus() 
       	 	return 0; 
    	}
		
       	document.formenviarmail.enviomail.value = "si";
       	document.formenviarmail.submit(); 
		
    }
</script>
</head>
<body>
<?
$enviomail = $_POST["enviomail"];
if ($enviomail == "si")
{
$tamano_archivo = $_FILES['archivo']['size'];

	$mensaje = "Nombres y apellidos: " . $_POST['nombres'] . " " . $_POST['apellidos'] . "<br>";
	$mensaje .= "Cédula de Identidad: " . $_POST['cedula'] . "<br>";
	$mensaje .= "Domicilio: " . $_POST['domicilio'] . "<br>";
	$mensaje .= "Ciudad: " . $_POST['ciudad'] . "<br>";	
	$mensaje .= "Teléfono fijo: " . $_POST['telefono'] . "<br>";
	$mensaje .= "Teléfono celular: " . $_POST['celular'] . "<br>";
	if ($_POST['estudios']=="si"){		
		$mensaje .= "Nivel de estudios: SI - " . $_POST['restudio'] . "<br>";
	}else{
		$mensaje .= "Nivel de estudios: NO <br>";
	}
	$mensaje .= "¿Qué estudia actualmente?: " . $_POST['queestudia'] . "<br>";
	$mensaje .= "¿En qué trabaja?: " . $_POST['quetrabaja'] . "<br>";
	if ($_POST['gustalecutra']=="si"){		
		$mensaje .= "¿Le gusta leer?: SI - ¿Qué ha leído últimamente, diarios revistas, libros?: " . $_POST['haleido'] . "<br>";
	}else{
		$mensaje .= "¿Le gusta leer?: NO <br>";
	}	
	$mensaje .= "¿Qué hace en sus horas libres?: " . $_POST['horaslibres'] . "<br>";
	if ($_POST['tv']=="si"){		
		$mensaje .= "¿Mira televisión?: SI - ¿Qué programa prefiere?: " . $_POST['programatv'] . "<br>";
	}else{
		$mensaje .= "¿Mira televisión?: NO <br>";
	} 
	
$email        = "[email protected]"; 

$asunto     = "Formulario para la Reina de la Prensa de: " . $_POST['nombres'] . " " . $_POST['apellidos'];                 
$mensaje    = utf8_decode($mensaje);
$nombref    = $_FILES["archivo"]["name"];        

$cabeceras = "From: " . utf8_decode($_POST['nombres'] . " " . $_POST['apellidos']) . " <" ."[email protected]" . ">\n";
$cabeceras .= "MIME-version: 1.0\n"; 
$cabeceras .= "Content-type: multipart/mixed; "; 
$cabeceras .= "boundary=\"Message-Boundary\"\n"; 
$cabeceras .= "Content-transfer-encoding: 7BIT\n"; 
$cabeceras .= "X-attachments: $nombref"; 
        
$body_top  = "--Message-Boundary\n"; 
$body_top .= "Content-type: text/html; charset=US-ASCII\n"; 
$body_top .= "Content-transfer-encoding: 7BIT\n"; 
$body_top .= "Content-description: Mail message body\n\n"; 
        
$cuerpo = $body_top.$mensaje;
        
if($tamano_archivo>0)
{
   //Leo el fichero
   $oFichero = fopen($_FILES["archivo"]["tmp_name"], 'r'); 
   $sContenido = fread($oFichero, filesize($_FILES["archivo"]["tmp_name"]));
   $sAdjuntos .= chunk_split(base64_encode($sContenido));
   fclose($oFichero);
   //Adjunto el fichero
   $cuerpo .= "\n\n--Message-Boundary\n";
   $cuerpo .= "Content-type: Binary; name=\"$nombref\"\n";
   $cuerpo .= "Content-Transfer-Encoding: BASE64\n";
   $cuerpo .= "Content-disposition: attachment; filename=\"$nombref\"\n\n";
   $cuerpo .= "$sAdjuntos\n";
   $cuerpo .= "--Message-Boundary--\n";
}
//Envío el correo
if (mail($email, $asunto, $cuerpo, $cabeceras) == true)
	{
		echo "E-mail enviado con éxito<br>";
		echo "<b>Nota: En breve nos comunicaremos desde administración de EL TELÉGRAFO para confirmar tu inscripción.<br>
				Muchas gracias por participar en esta preselección y mucha suerte.</b>";
	}else{
		echo "ERROR!! No se pudo enviar el E-mail";
	}	
}else{
?> 
<div align="left">
<h1><div align="center">27º Reina de la Fiesta de la Prensa de DIARIO EL TELÉGRAFO</div></h1>
<form method="post" action="reina.php" name="formenviarmail" enctype="multipart/form-data">
Día de preselección: jueves 9 de enero hora 20.</br>
Lugar: Sala de actos 1º. de Julio de Diario El Telégrafo (18 de Julio 1027, Paysandú)</br>
</br>
<b>Ficha personal de inscripción para preselección: (debe completar todos los datos)</b>
</br>
</br>
<table width="100%" border="1" cellpadding='5' cellspacing='0'>

<tr>
	<td >Nombres</td>
	<td ><INPUT name="nombres" size="90" maxlength="100"></td>
</tr>

<tr>
	<td >Apellidos</td>
	<td ><INPUT name="apellidos" size="90" maxlength="100"></td> 
</tr>

<tr>
	<td >Cédula de Identidad</td>
	<td ><INPUT name="cedula" size="11" maxlength="11"> Ingrese con puntos y guión</td> 
</tr>

<tr>
	<td >Domicilio</td>
	<td ><INPUT name="domicilio" size="90" maxlength="100"></td> 
</tr>

<tr>
	<td >Ciudad</td>
	<td ><INPUT name="ciudad" size="90" maxlength="100"></td> 
</tr>

<tr>
	<td >Teléfono fijo</td>
	<td ><INPUT name="telefono" size="20" maxlength="15"></td>  	
</tr>

<tr>
	<td >Teléfono celular</td>
	<td ><INPUT name="celular" size="20" maxlength="15"></td> 
</tr>

<tr>
	<td >Edad</td>
	<td ><INPUT name="edad" size="2" maxlength="2"> No participan menores de 15 años ni mayores de 21 años</td> 	
</tr>

<tr>
	<td >Estatura</td>
	<td ><INPUT name="estatura" size="2" maxlength="5"></td> 
</tr>

<tr>
	<td >Medidas (expresadas en cm.):</td>
	<td >Busto <INPUT name="busto" size="2" maxlength="3">
	  Cintura <INPUT name="cintura" size="2" maxlength="3">
	  Cadera <INPUT name="cadera" size="2" maxlength="3"></td>
</tr>

<tr>
	<td >Color de cabello</td>
	<td ><INPUT name="cabello" size="15" maxlength="15"></td> 
</tr>

<tr>
	<td >Color de ojos</td>
	<td ><INPUT name="ojos" size="15" maxlength="15"></td> 
</tr>

<tr>
	<td >Deporte favorito</td>
	<td ><INPUT name="deporte" size="90" maxlength="100"></td> 
</tr>
 
<tr>
	<td >Fanática de</td>
	<td ><INPUT name="fanatica" size="90" maxlength="100"></td> 
</tr>

<tr>
	<td >Nivel de estudios</td>
	<td ><INPUT type="radio" name="estudios" onclick="javascript:estudio(this)" value="si"> SI <INPUT type="radio" name="estudios" onclick="javascript:estudio(this)" value="no"> NO
	<div id="idestudio" style="display: none;">
   		<INPUT type="radio" name="restudio" value="Primaria">Primaria
   		<INPUT type="radio" name="restudio" value="Secundaria">Secundaria
   		<INPUT type="radio" name="restudio" value="Terciaria">Terciaria<br/>
	</div></td>
</tr> 

<tr>
	<td >¿Qué estudia actualmente?</td>
	<td ><INPUT name="queestudia" size="90" maxlength="100"></td> 
</tr>

<tr>
	<td >¿En qué trabaja?</td>
	<td ><INPUT name="quetrabaja" size="90" maxlength="100"></td> 
</tr>

<tr>
	<td >¿Le gusta leer?</td>
	<td ><INPUT type="radio" name="gustalectura" onclick="javascript:gustaleer(this)" value="si"> SI <INPUT type="radio" name="gustalectura" onclick="javascript:gustaleer(this)" value="no"> NO
	<div id="idgustaleer" style="display: none;">
   		¿Qué ha leído últimamente, diarios revistas, libros? <INPUT name="haleido" size="70" maxlength="100"><br>
	</div></td>
</tr>

<tr>
	<td >¿Qué hace en sus horas libres?</td>
	<td ><INPUT name="horaslibres" size="90" maxlength="100"></td> 
</tr>

<tr>
	<td >¿Mira televisión?</td>
	<td ><INPUT type="radio" name="tv" onclick="javascript:miratv(this)" value="si"> SI <INPUT type="radio" name="tv" onclick="javascript:miratv(this)" value="no"> NO
	<div id="idmiratv" style="display: none;">
   		¿Qué programa prefiere? <INPUT name="programatv" size="70" maxlength="100"><br>
	</div></td>
</tr>

<tr>
	<td >Adjuntar foto</td>
	<td ><INPUT name="archivo" type="file" ></td> 
</tr>

</table> 
<input type="hidden" name="enviomail" value="no">
<input type="submit" value="Enviar" onclick="validaDatos()"><br><br>
</form>
</div>
<?}?>
</body>
</html>
Desde ya muchas gracias por las respuestas.
Saludos
  #2 (permalink)  
Antiguo 03/12/2013, 15:37
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 7 meses
Puntos: 43
Respuesta: Me recarga la página y limpia el formulario

No sé como lo tenés porque el html es un bardo, pero la función validaDatos() llamala en el evento submit del formulario, y si la validación de un error que devuelva false.
  #3 (permalink)  
Antiguo 03/12/2013, 18:10
 
Fecha de Ingreso: abril-2005
Mensajes: 483
Antigüedad: 19 años
Puntos: 3
Respuesta: Me recarga la página y limpia el formulario

Cuervoo, gracias por responder.

Como tu dices es de la manera que lo he hecho.

Saludos
  #4 (permalink)  
Antiguo 03/12/2013, 19:38
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 7 meses
Puntos: 43
Respuesta: Me recarga la página y limpia el formulario

En validarDatos() tenes return 0, cambialo por return false.

Y en:

Código HTML:
Ver original
  1. <input type="submit" value="Enviar" onclick="validaDatos()">

Agregale el return:

Código HTML:
Ver original
  1. <input type="submit" value="Enviar" onclick="return validaDatos()">

Después el document.formenviarmail.submit(); se llama solo, no hace falta (a no ser que valdaDatos() devuelva false)
  #5 (permalink)  
Antiguo 05/12/2013, 05:44
 
Fecha de Ingreso: abril-2005
Mensajes: 483
Antigüedad: 19 años
Puntos: 3
Respuesta: Me recarga la página y limpia el formulario

Muchas gracias.

Con sólo cambiar onclick="return validaDatos()" anduvo ok.

Saludos

Etiquetas: formulario, html, página, recarga
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 13:40.