Foros del Web » Programando para Internet » PHP »

Borrado de los campos al enviar el form

Estas en el tema de Borrado de los campos al enviar el form en el foro de PHP en Foros del Web. Tengo el siguiente problema. Estoy realizando una gestión de administración para añadir nuevos cursos. Hago la validación y mediante javascript me salta el error si ...
  #1 (permalink)  
Antiguo 11/02/2006, 13:06
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
Borrado de los campos al enviar el form

Tengo el siguiente problema. Estoy realizando una gestión de administración para añadir nuevos cursos. Hago la validación y mediante javascript me salta el error si falta algún campo. Hasta aquí bien.
El problema viene cuando hago la validación en el Upload del fichero (quiero que este sea en formato pdf), y lo especifico.
Si todo es correcto me lo valida y perfecto. Hace el INSERT en la BD y ningún problema.
Pero si comprueba que hay error y se ha subido un fichero con extensión distinta a pdf y quiero regresar al formulario todos los campos se han borrado.

Sabrian como solucionar este problema.
Han de saber que todo se realiza en la misma página.
Les envio el codigo algo recortado para que se lo miren. Pero creo que lo más importante esta puesto
Un saludo



Código PHP:
<? include ('../includes/config.php'); ?>
<html>
<head>
<SCRIPT language=JavaScript>
function validar() {
//comprovamos los campos que esten llenos
if (document.formName.Codi.value == "") {alert("Introduzca un valor en el campo 'CÓDIGO DEL CURSO'"); formName.Codi.focus();return (false);}
if (document.formName.NomCas.value == "") {alert("Introduzca un valor en el campo 'NOMBRE'"); formName.NomCas.focus();return (false);}
if (document.formName.IdTipo.value == "") {alert("Introduzca un valor en el campo 'TIPOS DE CURSO'"); formName.IdTipo.focus();return (false);}
return(true);
}
</SCRIPT>
</head>
<body>
<? include("cabecera.php"); 
if (!empty(
$HTTP_POST_VARS[enviado])) {
$Codi $HTTP_POST_VARS['Codi'];
$Nom $HTTP_POST_VARS['Nom'];

... 
aquí el resto de campos
$pdf
=$HTTP_POST_FILES['pdf']['name'];
$tipo_archivo $HTTP_POST_FILES['pdf']['type']; 
$tamano_archivo $HTTP_POST_FILES['pdf']['size'];

if (!((
strpos($tipo_archivo"pdf")) && ($tamano_archivo 500000))) { 
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten únicamente archivos .pdf<br><li>Se permiten archivos de 500 Kb como máximo.</td></tr></table>"
    echo(
"<br /><a class='date' href='javascript:history.back()'>&iquest;VOLVER A INTERTARLO</a>");
}else{ 
    if (
is_uploaded_file($HTTP_POST_FILES['pdf']['tmp_name'])){
    
copy($HTTP_POST_FILES['archivo1']['tmp_name'], "galeria/".$HTTP_POST_FILES['pdf']['name']);
    echo 
"El archivo ha sido cargado correctamente.";
    
$sql=("insert into cursos (Codi, Nom......aquí el resto) values ('$Codi', '$Nom', .... aquí el resto)");

    }else{ 
       echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse"
    } 


?>

<form method="POST" enctype="multipart/form-data" name="Formulari">
<input name="Codi" type="text" id="Codi" value="" size="20">
<input name="Nom" type="text" id="Nom" size="50">
<input type="file" name="pdf">
[... hasta el final de campos]
<a href="javascript:document.Formulari.submit()" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image28','','imatges/b_guardaralta_r.gif',1)" onClick="return validar()"><img src="imatges/b_guardaralta.gif" name="Image28" width="150" height="16" border="0"></a></span>
                    <input name="enviado" type="hidden" value="Guardar">

</form>
</body>
</html>
  #2 (permalink)  
Antiguo 11/02/2006, 13:35
 
Fecha de Ingreso: agosto-2005
Mensajes: 22
Antigüedad: 18 años, 8 meses
Puntos: 0
lo que se me ocurre es lo siguiente... siempre y cuando el action vaya a la misma pagina...

<input type="text" name="codi" id="codi" value="<? $_POST['codi']; ?>" size=20>
  #3 (permalink)  
Antiguo 11/02/2006, 13:36
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Yo suelo poner el formulario dentro de algún if, en el que diga que o no se ha enviado nada aún, o que hayan habido errores.
Y si hay errores, pues en el formulario pongo los valores enviados por el mismo formulario (value).
Espero que te sirva.
  #4 (permalink)  
Antiguo 12/02/2006, 04:37
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
Pongo el valor recibido en el value del Input pero no me guarda nada.
Me imagino que el problema debe venir cuando aparece el texto de error y mediante un 'javascript:history.back()' no me guarda nada. O algo por el estilo.
  #5 (permalink)  
Antiguo 12/02/2006, 05:26
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 18 años, 2 meses
Puntos: 0
Buenas.

Como podeis ver llevo poco (nada) en esta comunidad, y mis conocimientos no los considero avanzados, pero te intentaré ayudar (aunque a lo mejor estoy diciendo alguna burrada :p)

una pregunta ¿como haces el envio del formulario? creo no haberlo visto en el codigo, aunque estoy recien levantado.

Si el envio lo haces con un submit, puedes decirle a php mediante la funcion isset(), que si ha sido establecido el submit te guarde el valor de los campos en variables de sesión, y estas variables las colocas en el value de los input como han dicho antes.

Espero que te sea de ayuda, si necesitas que te coloque codigo dilo.

Salu2

--EDIT--

Si el envio del formulario lo has echo con java, normal que no lo vea, comence a aprender anoche :p
  #6 (permalink)  
Antiguo 12/02/2006, 06:24
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
El formulario lo envio por un SUBMIT.
Aunque le ponga un
Código HTML:
 <input name="enviado" type="SUBMIT" value="Guardar"> 
no me guarda los valores.

También hago mediante el isset la recogida de valores, pero cuando encuentra el error de que el fichero no es de un formato en concreto y ejecuto el 'javascript:history.back()' todos los campos se han quedado vacios.

Si puedes colocarme codigo para poder comprender mejor lo que me explicas te lo agradeceré keroveros.

SI quereis os pongo todo el codigo de la página, aunque son unas 300 lineas
  #7 (permalink)  
Antiguo 12/02/2006, 08:21
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 18 años, 2 meses
Puntos: 0
Aqui te dejo un minicodigo que he hecho para ti, espero que te sea de ayuda.

Código PHP:
<?
 
//Inicio de sesion Básico
session_save_path($_SERVER['DOCUMENT_ROOT'].'/recicla');
session_start();
define('MAX_IDLE_TIME'3);

if (isset(
$_POST['cmdEnviar'])){ //Copruebas que se ha ejecutado el boton (tb puedes comprobar si los campos se han rellenado)
    
$_SESSION['txtNombre']=$_POST['txtNombre']; 
    
$_SESSION['txtApellidos']=$_POST['txtApellidos'];
    
    echo 
"variables de sesion establecidas"//Es solo para que tu compruebes que las variables han sido establecidas
}
?>

<head>

<title>Variables de sesion para Faser</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <table width="200" border="0" align="center">
    <tr>
      <td align="center"><label>Nombre:</label><input name="txtNombre" type="text" value="<? echo $_SESSION['txtNombre']; // colocas en el value la variable de sesion?>"/></td> 
    </tr>
    <tr>
      <td align="center"><label>Apellidos:</label><input name="txtApellidos" type="text" value="<? echo $_SESSION['txtApellidos']; ?>"/></td>
    </tr>
    <tr>
      <td align="center"><input name="cmdEnviar" type="submit" value="Enviar"/></td>
    </tr>
  </table>
</form>
<? session_destroy();  //Funcion que destruye las variables, tu ya ves si te conviene o no?> 
</body>
</html>
  #8 (permalink)  
Antiguo 12/02/2006, 15:15
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
Este mensaje solamente es para agradecerte, keroveros, la ayuda prestada.
Me ha sido de una utilidad desvordante tu aportación.

Gracias
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 06:55.