PHP - Mantener los datos en el formulario mientras valido

   
Vista:

Mantener los datos en el formulario mientras valido

Publicado por Unexes (124 intervenciones) el 01/11/2014 23:56:44
Buenas a tod@s a ver como puedo solucionar mi problema.

Tengo 2 páginas en PHP en una se encuentra el formulario y la otra es la que envía los datos una vez validados a la base de datos, la parte que valida en JavaScript ya esta hecha y funciona perfectamente, el problema es que estoy haciendo una doble validación y al intentar validar en php me da un problema y es el siguiente:
Relleno el formulario y si dejo un campo vacío al pulsar el botón de ingresar me indica perfectamente que me he dejado ese campo sin rellenar, pero mi problema es que me borra el contenido del resto de los campos que ya tenia con contenido y me toca volver a empezar a introducir todos los contenidos, en este momento con 3 campos no es importante pero el formulario tendrá mas de 60 campos.
¿Como puedo mantener el valor de los campos que ya tenia introducidos.?
FormularioPersonal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
session_start();
require_once('../Connections/ConexionEscorts.php');
mysqli_query($conexion, "SET NAMES 'utf8'");
?>
<body>
<div id="FormularioPersonal">
<form name="EnvioForPersonal" id="EnvioForPersonal" action="Enviar_FormularioPersonal.php" method="post" onSubmit="return validarregistropersonal()">
 
  <div id="DatosActividad">
    <select name="selactividad" id="selactividad" class="Contenido1forpersonal" onfocus="informacionayuda()">
<?php
    if ( isset($_GET['selactividad']) ){
         echo '<option value="-1" ></option>';
       }else{
         echo  '<option value="-1" selected >Seleccione</option>';
}
	$tablaactividad = mysqli_query($conexion, "SELECT * FROM categoria  ORDER BY Categoria ASC");
	while ($registroactividad = mysqli_fetch_array($tablaactividad)){
 
    if(  isset($_GET['selactividad']) and $_GET['selactividad']==$registroactividad['Categoria'] ){
      $seleccionado = "selected";
      }else{
      $seleccionado = "";
      }
	  echo "<option value='".$registroactividad['Categoria']."' $seleccionado >".$registroactividad['Categoria']."&nbsp;&nbsp;</option>";
}
	mysqli_free_result($tablaactividad);
		?>
	</select>
  </div>
          <?php
                    error_reporting (E_ALL ^ E_NOTICE);
                    if($_GET['error']=='1'){
    				echo ' <div id="AvisoTrabajo".style.display="block" class="AvisoFalta">Coloca el puesto de trabajo que solicitas</div>';
                }
           ?>
  <div id="DatosNombre">
    <input type="text" name="nombrepersonal" id="nombrepersonal" class="Contenido2forpersonal" maxlength="30"  size="20"  onfocus="informacionayuda()"/></div>
 
           <?php
                    error_reporting (E_ALL ^ E_NOTICE);
                    if($_GET['error']=='2'){
    				echo ' <div id="AvisoNombre".style.display="block" class="AvisoFalta">Introduzca el nombre.</div>';
                }
           ?>
 <div id="Datos1Apellido">
   <input type="text" name="apellidopersonal1" id="apellidopersonal1" class="Contenido2forpersonal" maxlength="25" size="20" onfocus="informacionayuda()"value=""/></div>
    <?php
                    error_reporting (E_ALL ^ E_NOTICE);
                    if($_GET['error']=='3'){
              		echo ' <div id="Aviso1Apellido".style.display="block" class="AvisoFalta">Introduzca su primer Apellido</div>';
				    }
     ?>
 <div id="BotonIngresarPersonal"><input type="submit" value="Ingresar" class="BotonIngresarforpersonal"/></div>
  </form>
    <div id="AvisoTrabajo" class="AvisoFalta" style="display:none"></div>
    <div id="AvisoNombre" class="AvisoFalta" style="display:none"></div>
    <div id="Aviso1Apellido" class="AvisoFalta" style="display:none"></div>
</div><!-- Cierro Formulario-->
</body>

Enviar_FormularioPersonal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
session_start();
 
require_once('../Connections/ConexionEscorts.php');
mysqli_query($conexion, "SET NAMES 'utf8'");
?>
<body>
<div id="MensajeRegistrar">
<?php
if (isset($_POST['nombrepersonal'])and $_POST['nombrepersonal'] <>'1'){
	$selactividad = $_POST["selactividad"];
	$nombrepersonal = $_POST["nombrepersonal"];
	$apellidopersonal1 = $_POST["apellidopersonal1"];
?>
	<?php
	   if($selactividad=='-1'){ //si el campo esta en blanco mandamos el siguiente error
   header('Location: FormularioPersonal.php?error=1');
}
       elseif($nombrepersonal==''){ //si el campo esta en blanco mandamos el siguiente error
   header('Location: FormularioPersonal.php?error=2');
}
       elseif($apellidopersonal1==''){ //si el campo esta en blanco mandamos el siguiente error
    header('Location: FormularioPersonal.php?error=3');
	echo '</form></img></div>';
	   }else{
	$query = 'INSERT INTO tb_personal (Trabajo, Nombre_Personal, Apellido1_Personal)
	VALUES (\''.$selactividad.'\',\''.$nombrepersonal.'\',\''.$apellidopersonal1.'\')';
	mysqli_query($conexion, $query) or die(mysqli_error());
	  }
}else{
 
}
   ?>
</div>
</body>

Espero haberme explicado bien y que me podáis ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de voreno

Mantener los datos en el formulario mientras valido

Publicado por voreno (42 intervenciones) el 02/11/2014 00:33:22
Si es que entendí bien, lo que se me ocurre es que crees sesiones

en la que envía los datos debajo de esto:

1
2
3
$selactividad = $_POST["selactividad"];
$nombrepersonal = $_POST["nombrepersonal"];
$apellidopersonal1 = $_POST["apellidopersonal1"];


Pon esto:

1
2
3
$_SESSION['selactividad'] = $selactividad
$_SESSION['nombrepersonal'] = $nombrepersonal
$_SESSION['apellidopersonal1'] = $apellidopersonal1


y en los input del formulario les pones un valué con la sesión...

un ejemplo:

1
<input type="text" id="id" name=selactividad"  value="<?php echo htmlentities($_SESSION["selactividad"]) ?>" />
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mantener los datos en el formulario mientras valido

Publicado por Unexes (124 intervenciones) el 02/11/2014 10:33:24
Gracias voreno por tu inestimable ayuda.

Veras ya había pensado en ello, como veras en el código que puse ya estoy utilizando sesiones para algunas cosas, pero debo encontrar otra solución ya que tendré que poner varios formularios parecidos y solo este de información personal supera los 60 campos, de ahí la importancia de que me mantenga los datos cuando comprueba la validación y vuelve a la pagina del formulario para indicarme que falto rellenar uno, y entonces aparecen todos los datos que ya había introducido sin contenido.

La solución que me planteas es buena cuando según creo se trata de poca cantidad de campos, pero no creo que seria correcto poner mas de 200 sesiones y si no es así que alguien me lo corrija por que eso significaria que estoy equivocado, ¿Hay alguna otra forma de hacerlo?.

Descarten comentármelo en JavaScript, ya que la validación por la misma ya me la hace correctamente, aunque no aparezca en el código que puse, la función que utilizo para ello es "validarregistropersonal()", el problema lo tengo cuando realizo la validación en PHP.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar