PHP - Valores de formulario no se mantienen durante la validación

 
Vista:
Imágen de perfil de Miguel
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Valores de formulario no se mantienen durante la validación

Publicado por Miguel (4 intervenciones) el 01/03/2017 17:15:14
Muy buenas, acá les adjunto el formulario que utilizo en el aplicativo web que estoy desarrollando:
Captura-de-pantalla-220217-11.07.09
Ya tengo el 95% completo, y tras pulsar el botón "Guardar datos", va directo a "registrarDatos.php", para hacer las validaciones; y en caso de hallar errores muestre un alerta de error (sic, muy básico), y regrese al formulario. El detalle es que lo retorna vacío totalmente. Mi interés es que se queden los valores que se hayan escrito hasta el momento. Ya probé agregando esto en el atributo value:
1
<?php isset($_POST["nombre"])? $_POST["nombre"] : ""; ?>

Pero no muestra nada tras realizar la validación y haber fallado. Si hago:
1
<?php isset($_POST["nombre"])? echo $_POST["nombre"] : echo ""; ?>

indica un Parse error: syntax error, unexpected 'echo' (T_ECHO) in (ruta del fichero) on line 49

Y si lo reemplaazo por
1
2
3
4
5
6
7
8
9
"
<?php 
if (isset($_POST["nombre"]))
{
	echo $_POST["nombre"];
{
	echo "";
}
?>"

el campo queda vacío como tal (pero sin mostrar el placeholder, lo cual se ve horrible, y tras realizar la validación y fallar esa misma, no muestra nada.

Esta es mi pregunta: ¿cómo hacer para que, en dicho caso de que fallen todas las validaciones del lado del servidor, al remostrar el formulario, mantenga los datos hasta donde se escribió? No me interesan que se mantengan cuando aprueben todas las validaciones y los campos se guarden en la base de datos. Tampoco quiero apilar y pastelar el código porque estoy buscando separarlo lo mejor posible (hasta ahora todo lo he hecho en PHP crudo, rudo, vulgar y silvestre, lo que dicen ser "vanilla").

P.D.: Ya leí la información de la duda que planteaban en este post: http://www.lawebdelprogramador.com/foros/PHP/1358019-Mantener-datos-en-un-formulario.html, pero no me sirve en mi caso particular.
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
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Valores de formulario no se mantienen durante la validación

Publicado por Miguel (218 intervenciones) el 01/03/2017 18:05:15
Pues no es tan difícil, yo lo hago algo así:

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
<?php
$campo1 = "";
$campo2 = "";
$campo3 = "";
$info = "";
 
if (isset($_POST["campo1"])
{
    $campo1 = $_POST["campo1"];
    $campo2 = $_POST["campo2"];
    $campo3 = $_POST["campo3"];
 
    //procesar los datos, y limpiar las variables
    if (procesarDatos($campo1, $campo2, $campo3))
    {
        $campo1 = "";
        $campo2 = "";
        $campo3 = "";
        $info = "Proceso completado";
    }
    else
    {
        $info = "No se pudieron procesar los datos";
    }
}
?>
 
<html>
    <head><title>Formulario PHP</title></head>
  <body>
 
    <h3>Ejemplo</h3>
 
    <form action="" method="POST">
        Campo 1:
        <input type="text" name="campo1" value=" <?php echo $campo1; ?> " />
        Campo 2:
        <input type="text" name="campo2" value=" <?php echo $campo2; ?> " />
        Campo 3:
        <input type="text" name="campo3" value=" <?php echo $campo3; ?> " />
 
        <br>
            <?php echo $info; ?>
        <br>
 
        <input type="submit" value="Enviar" />
    </form>
 
  </body>
</html>


Espero te siva, saludos.
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
Imágen de perfil de Miguel
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Valores de formulario no se mantienen durante la validación

Publicado por Miguel (4 intervenciones) el 01/03/2017 18:40:04
Originalmente tenía las 20 líneas de html, abría un php con un include de la cabecera, luego agregaba toda la validación ahí, y en caso de que no estuviese pulsado el botón envíar (por cierto, tu línea 7 debe decir submit/b]; o [b]name="enviar" en la línea 46) se anexa el formulario (mis 312 líneas de código). Pero eso haría un pegote del PHP y el HTML, y es lo que quiero evitar. Pero de todos modos gracias por tu aporte.
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
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Valores de formulario no se mantienen durante la validación

Publicado por Miguel (218 intervenciones) el 02/03/2017 00:55:30
Tienes razón, es mejor utilizar el "submit" para detectar el POST.
Igual, creo que no tendrás inconveniente con colocar la validación en otro archivo y cargarla con "include".
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
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Valores de formulario no se mantienen durante la validación

Publicado por xve (6935 intervenciones) el 01/03/2017 18:05:20
Hola Miguel, creo que la manera correcta seria:
1
<?php echo (isset($_POST["nombre"])?$_POST["nombre"]:""); ?>

Coméntanos, ok?
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
Imágen de perfil de Miguel
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Valores de formulario no se mantienen durante la validación

Publicado por Miguel (4 intervenciones) el 01/03/2017 18:50:40
Ya lo probé:
1
<input type="text" name="nombre" value="<?php echo (isset($_POST["nombre"])?$_POST["nombre"]:""); ?>" maxlength="100" placeholder="Nombre de planta">
, al cargarlo, sale:
1
<input name="nombre" value="" maxlength="100" placeholder="Nombre de planta" type="text">
Luego de agregar el dato y pulsar el botón "Guardar datos", realiza la validación, y cuando falla, me retorna el formulario, ¡vacío!, todavía.
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