PHP - recuperar consulta con datos ingresados por el usuario

 
Vista:
sin imagen de perfil

recuperar consulta con datos ingresados por el usuario

Publicado por Hugo (37 intervenciones) el 29/04/2022 03:36:18
Hola, buenas noches.

Tengo el siguiente problema si alguien me puede ayudar.

Tengo una página donde hago un select de acuerdo a los filtros seleccionados por el usuario y se carga en ella una tabla con los mismos.
En esta tabla a su vez anexo un botón de "autorizar", el cual al oprimirlo modifica el estado a "autorizado".

El problema surge ya que una vez autorizado, la página se recarga y borra la tabla, ya que pierde las variables de la consulta.
Lo que pretendo y no sé como hacer (ya que probé con variables de $_SESSION pero me devuelve error), es que una vez que se oprima el botón "autorizar" cambie el estado y se imprima nuevamente en pantalla la tabla con los datos ingresados originalmente por el usuario, para que el mismo no vuelva a ingresar los datos por cada autorización que realice.

Copio el código y desde ya muchas gracias:

modifica_estado.php:

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<html>
    <head>
        <title>Modifica Estado</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <link rel="stylesheet" type="text/css" href="../../Cabecera/cabecera.css">
        <link rel="stylesheet" type="text/css" href="aut_lic.css">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
        <link rel="preconnect" href="https://fonts.googleapis.com">
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link href="https://fonts.googleapis.com/css2?family=Kaisei+HarunoUmi:wght@500&display=swap" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.0/sweetalert2.css"/>
        <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.0/sweetalert2.js"></script>
    </head>
    <body>
        <?php
            include ("../../Conexion/conexion.php");
        ?>
        <div id="Logo">
            <img src= "../../logo.jpg" class="soc"/>
        </div>
        <div id="Cabecera">
            <?php
                require ("../../Login/iniciar_session.php");
            ?>
        </div>
 
        <div id="Contenedor">
            <div id="formulario">
                <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" class="form">
                    <div class="formulario">
                        <h2 class="titulo">Autorizar Licencias Reglamentarias</h2><br><br>
                        <span class="Desde">Desde:
                            <input type="date" name="desde" class="fecha" required/></span>
                            <span class="Hasta">Hasta:
                            <input type="date" name="hasta" class="fecha" required/></span>
                            <span class="estado_lic">Sección:</span><select name="seccion" class="estado" required/>
                                <?php
                                include ("../../Conexion/conexion.php");
                                $consulta_funcionarios = "SELECT * FROM secciones ORDER BY nombre ASC";
                                $guarda_funcionarios = $conexion->query($consulta_funcionarios);
 
                                echo "<option value='' name='seccion' disabled selected class='estado'>Seleccione</option>";
                                while($array_combo=$guarda_funcionarios->fetch_assoc()){
                                echo "<option value='".$array_combo['nombre']."'>".$array_combo['nombre']."</option>";
                                }
 
                            ?>
                            </select>
                            <span class="estado_lic">Estado:</span><select name="estado" class="estado">
                                <option>Todos</option>
                                <option>Autorizado</option>
                                <option>Denegado</option>
                                <option>Pendiente</option>
                                <option>Anulado</option>
                            </select>
                            <button type="submit" name="ver" class="btn btn-primary btn boton">Visualizar</button></span>
                            <a href="panel_licencias.php"><button type="button" class="btn btn-danger btn volver">Volver</button></a>
                        </div>
                </form>
 
            <?php
 
                if(isset($_POST['ver'])){
                    $desde=$_POST['desde'];
                    $hasta=$_POST['hasta'];
                    $seccion=$_POST['seccion'];
                    $estado=$_POST['estado'];
 
                    if($estado=='Todos'){
                        $datos="SELECT * FROM licreglam WHERE (fechaDesde>='$desde' && fechaDesde<='$hasta') && seccion='$seccion' ORDER BY fechaDesde ASC";
                        $query_datos=$conexion->query($datos);
                    }
                    if($estado!=='Todos'){
                        $datos="SELECT * FROM licreglam WHERE (fechaDesde>='$desde' && fechaDesde<='$hasta') && seccion='$seccion' && estado='$estado' ORDER BY fechaDesde DESC";
                        $query_datos=$conexion->query($datos);
                    }
 
                    if($query_datos==NULL){
                        echo "<script>
                                function alerta(){
                                    swal({
                                        title: 'Ups...!',
                                        text: 'No existen registros para el período seleccionado',
                                        type: 'info',
                                        }).then(function(){
                                            window.location='autorizar_licencias.php';
                                        });
                                    }
                                        alerta();
                                    </script>";
                                exit();
                    }
 
            ?>
 
            <div class="col-md-8-sm">
                <br><table class="table table-striped table-responsive table-sm table-hover table-bordered">
                 <thead class="encabezado" >
                    <tr>
                        <th>N° Solic.</th>
                        <th>N° Func.</th>
                        <th>Nombre</th>
                        <th>Apellido</th>
                        <th>Desde</th>
                        <th>Hasta</th>
                        <th>Cant. de Días</th>
                        <th>Fecha de Solicitud</th>
                        <th>Estado</th>
                        <th>Fecha de Autorización</th>
                        <th>Autorizado por</th>
                        <th>Autorizar</th>
                        <th>Denegar</th>
                    </tr>
                </thead>
                <tbody>
                <?php
                    while($array_datos=$query_datos->fetch_assoc()){
                        $fecha_desde=$array_datos['fechaDesde'];
                        $desde=strtotime($fecha_desde);
                        $f_desde=date('d-m-Y',$desde);
 
                        $fecha_hasta=$array_datos['fechaHasta'];
                        $hasta=strtotime($fecha_hasta);
                        $f_hasta=date('d-m-Y',$hasta);
 
                        $fecha_solicitud=$array_datos['fechaSolicitud'];
                        $solic=strtotime($fecha_solicitud);
                        $f_solic=date('d-m-Y',$solic);
 
                        $fecha_autorizacion=$array_datos['fechaAutorizacion'];
                        $autoric=strtotime($fecha_autorizacion);
                        $f_autoric=date('d-m-Y',$autoric);
                ?>
                        <tr>
                            <td><?php  echo $array_datos['idSolic']?></td>
                            <td><?php  echo $array_datos['numFunc']?></td>
                            <td><?php  echo $array_datos['nombre']?></td>
                            <td><?php  echo $array_datos['apellido']?></td>
                            <td><?php  echo $f_desde?></td>
                            <td><?php  echo $f_hasta?></td>
                            <td><?php  echo $array_datos['cantDias']?></td>
                            <td><?php  echo $f_solic?></td>
                            <?php
                            if($array_datos['estado']=='Autorizado'){
                                    echo '<th style="background-color:#AEFE8B">'.$array_datos['estado']. '</th>';
                            }
                            if($array_datos['estado']=='Pendiente'){
                                    echo '<th style="background-color:#FFFC4E">'.$array_datos['estado']. '</th>';
                            }
                            if($array_datos['estado']=='Denegado'){
                                echo '<th style="background-color:#FF6C73">'.$array_datos['estado']. '</th>';
                            }
                            if($array_datos['estado']=='Anulado'){
                                echo '<th style="background-color:#CACACA">'.$array_datos['estado']. '</th>';
                            }
                            ?>
                            <td>
                            <?php
                                    if($array_datos['fechaAutorizacion']==NULL){
                                        echo '';
                                    }else{
                                        echo $f_autoric;
                                    }
                            ?></td>
                            <td><?php  echo $array_datos['usu_autoriz']?></td>
                            <?php
                                $dato=$array_datos['idSolic'];
                            ?>
                            <th><a href="autorizar_lic.php?idSolic=<?php echo $array_datos['idSolic']; ?>" class="btn btn-primary btn-sm" >Autorizar</a></th>
                            <th><a href="anula_lic.php?idSolic=<?php echo $array_datos['idSolic'] ?>" class="btn btn-danger btn-sm" >Denegar</a></th>
                        </tr>
                    <?php
                       }
                     ?>
                </tbody>
            </table>
            <?php
                }
            ?>
 
        </div>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
            <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
 
        </div>
        </div>
 
    </body>
</html>

autorizar_lic.php:

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
62
63
64
65
66
67
68
69
70
71
<html>
    <head>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.0/sweetalert2.css"/>
        <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.0/sweetalert2.js"></script>
    </head>
<body>
</body>
 
<?php
 
include ("../../Login/iniciar_session.php");
include ("../../Conexion/conexion.php");
 
$id=$_GET['idSolic'];
$desde=$_GET['desde'];
$hasta=$_GET['hasta'];
$seccion=$_GET['seccion'];
$estado=$_GET['estado'];
 
$usuario_autoriz=$_SESSION['usuario'].' - '.$_SESSION['nombre'].' '.$_SESSION['apellido'];
 
$estado1="SELECT * FROM licreglam WHERE idSolic='$id'";
$estado_verif=mysqli_num_rows($conexion->query($estado1));
 
$estado2="SELECT estado FROM licreglam WHERE idSolic='$id' && estado='Anulado'";
$estado_verif2=mysqli_num_rows($conexion->query($estado2));
 
if($estado_verif2!==1){
                    echo "<script>
                            function alerta(){
                            swal({
                                title: 'Excelente!',
                                text: 'Se autorizó la licencia con éxito',
                                type: 'success',
                                }).then(function(){
                                window.location.href='//localhost/Universal2/Gestion RRHH/Autorizaciones/autorizar_licencias.php';
                                });
                                }
                            alerta();
                        </script>";
                    $datos="SELECT * FROM licreglam WHERE (fechaDesde>='$desde' && fechaDesde<='$hasta') && seccion='$seccion' && estado='$estado' ORDER BY fechaDesde DESC";
                        $query_datos=$conexion->query($datos);
 
 
                    $sql="UPDATE licreglam SET estado='Autorizado' WHERE idSolic='$id'";
                    $sql2="UPDATE licreglam SET fechaAutorizacion=NOW() WHERE idSolic='$id'";
                    $sql3="UPDATE licreglam SET usu_autoriz='$usuario_autoriz' WHERE idSolic='$id'";
 
                    $query=mysqli_query($conexion,$sql);
                    $query2=mysqli_query($conexion,$sql2);
                    $query3=mysqli_query($conexion,$sql3);
 
 
 
            }else{
                echo "<script>
                        function alerta(){
                            swal({
                            title: 'Acción no permitida',
                            text: 'No es posible autorizar una solicitud anulada por el Jefe del Sector.',
                            type: 'error',
                            }).then(function(){
                            window.location.href='//localhost/Universal2/Gestion RRHH/Autorizaciones/autorizar_licencias.php';
                            });
                            }
                         alerta();
                    </script>";
                }
?>
</html>
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 Ivan

recuperar consulta con datos ingresados por el usuario

Publicado por Ivan (118 intervenciones) el 29/04/2022 22:07:51
Hola,

la forma de guardar los datos es con $_SESSION, yo lo hago así en Gestor Ligas para no cargar los datos generales de Promotor y competición en cada subpágina de la competición, creando una especie de cache, que es lo que quieres hacer.

Dices que te da error pero no explicas de qué error se trata, y puesto que utilizas un (login) presupongo que guardas la sesión del usuario en $_SESSION, de modo que no entiendo como no puedes guardar más datos con un simple:
$_SESSION['misDatos'] = $datos_a_guardar;

Estaría bién que comentaras más detalles del error con $_SESSION porque no lo acabo de entender, quizás el error es al intentar recuperar los datos? Ya me contarás ...

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

recuperar consulta con datos ingresados por el usuario

Publicado por Hugo (37 intervenciones) el 29/04/2022 23:35:07
Hola Ivan.

Primeramente agradecerte por tomarte el tiempo de contestarme e intentar ayudarme.

Ante todo te quiero aclarar que soy novato en programación y estoy aprendiendo, intentando hacer un sistema de autorizaciones de licencias de trabajadores.

Lo que quiero lograr es que una vez se ejecute la autorización de una licencia se vuelva a cargar la tabla obtenida con los datos que ingresó el usuario inicialmente, sin necesidad de que ingrese nuevamente los datos de fecha, sección y estado y oprima "visualizar" para que cargue nuevamente, por eso se me había ocurrido utilizar variables de $_SESSION.

Cabe aclarar que las licencias que se autorizan no son del usuario logueado, sino de trabajadores a su mando.

El error que me devolvía con $_SESSION me dí cuenta era por la variable $estadoSes que la tenía mal escrita.
Te copio el código que intenté utilizar con esta variable pero no obtengo que se vuelva a cargar la tabla una vez que refresca.

También te adjunto print de la tabla de la consulta.

Desde ya muchas gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
	if(isset($_POST['ver'])){
					$_SESSION['desde']=$_POST['desde'];
					$_SESSION['hasta']=$_POST['hasta'];
					$_SESSION['seccion']=$_POST['seccion'];
					$_SESSION['estado']=$_POST['estado'];
 
					$desdeSes=$_SESSION['desde'];
					$hastaSes=$_SESSION['hasta'];
					$seccionSes=$_SESSION['seccion'];
					$estadoSes=$_SESSION['estado'];
 
					if($estadoSes=='Todos'){
						$datos="SELECT * FROM licreglam WHERE (fechaDesde>='$desdeSes' && fechaDesde<='$hastaSes') && seccion='$seccionSes' ORDER BY fechaDesde ASC";
						$query_datos=$conexion->query($datos);
					}
					if($estadoSes!=='Todos'){
						$datos="SELECT * FROM licreglam WHERE (fechaDesde>='$desdeSes' && fechaDesde<='$hastaSes') && seccion='$seccionSes' ORDER BY fechaDesde DESC";
						$query_datos=$conexion->query($datos);
					}
?>



autorizar1
autorizar2
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 Ivan

recuperar consulta con datos ingresados por el usuario

Publicado por Ivan (118 intervenciones) el 30/04/2022 11:53:20
Hola,

muy interesante tu aplicación, sin embargo te recomiendo encarecidamente que apliques el patrón MVC en tu programación.
Mezclar código HTML, consultas Mysql, JavaScript y PHP en la misma página no es nada recomendable.

Imagina que un día quieres realizar un cambio en una tabla Mysql, debes buscar en todas las páginas las consultas que deben modificarse, los resultados que deben mostrarse, etc. No es sostenible y te volverás loco.

El patron MVC divide el código en capas de programación y una modificación en la tabla Mysql sólo afecta a su modelo y su vista. Posteriormente cualquier página que llame a este modelo y vista ya tendrán el cambio actualizado.

Puedes encontrar mucha información en la red.

Volviendo a tu problema te pongo un ejemplo de formulario con varios botones para crear, actualizar, modificar los datos junto con variables de sesión y, además, aplicando un poco la idea del MVC para que veas por donde van los tiros.

No se si es exactamente lo que buscas, porque veo que entre una solicitud de actualización y la autorización pueden pasar días, y no me queda claro si al pulsar "actualizar" se carga algo de la DB o no.

En cualquier caso te pongo un pequeño ejemplo:

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
62
63
64
65
66
67
68
69
70
71
72
<?php
  // Antes de enviar nada se debe iniciar sesión
  session_start();
 
  // MODELO
  // Conexiones a la DB para obtener datos
  function getData() {
    return array('item1' => 'Datos1', 'item2' => 'Datos2', 'item3' => 'Datos3', 'item4' => 'Datos4');
  }
 
  // CONTROLADOR
  // Encargado de procesar los datos según las acciones del usuario, también puede controlar el tipo de salida de los datos llamando a una vista u otra
  $action = isset($_POST['submit']) ? $_POST['submit'] : null;
  switch ($action) {
                    // Guardaría $_POST en la DB, actualiza $_SESSION y reinicia el form
    case 'Create' : $_SESSION['POST'] = $_POST;
                    $_POST = null;
                    break;
 
                    // Leería un registro de la DB y lo pone en $_POST, no actualiza $_SESSION
    case 'Read'   : $_POST = getData();
                    break;
 
                    // Modificaría un registro de la DB con $_POST, actualiza $_SESSION y NO reinicia el form
    case 'Update' : $_SESSION['POST'] = $_POST;
                    break;
 
                    // Reinicia el form con los datos de $_SESSION
    case 'Verify' : $_POST = $_SESSION['POST'];
                    break;
 
                    // Eliminaría un registro de la DB y reinicia $_SESSION y $_POST
    case 'Delete' :  $_SESSION['POST'] = $_POST = null;
                    break;
 
                    // Reinicia $_SESSION y $_POST
    default       : $_SESSION['POST'] = $_POST = null;
  }
  // Comprobamos los datos internos en fase DEBUG
  var_dump($_POST, $_SESSION);
 
  // VISTA
  // En la vista simplemente añadimos los datos que hemos trabajado en el controlador
?>
<!DOCTYPE html>
<head>
  <title>Formulario con cache en PHP</title>
</head>
 
<body>
  <h1>Formulario con cache en PHP</h1>
  <p>Ejemplo de formulario con cache $_SESSION en PHP usando MVC</p>
  <form method="post">
    <fieldset id="field1">
      <legend>Items en cache</legend>
      <label>Item1: <input id="item1" name="item1" type="text" value="<?php echo $_POST['item1'] ?>" /></label>
      <label>Item2: <input id="item2" name="item2" type="text" value="<?php echo $_POST['item2'] ?>" /></label>
    </fieldset>
    <br>
    <fieldset id="field2">
      <legend>Items sin cache</legend>
      <label>Item3: <input id="item3" name="item3" type="text" value="<?php echo $_POST['item3'] ?>" /></label>
      <label>Item4: <input id="item4" name="item4" type="text" value="<?php echo $_POST['item4'] ?>" /></label>
    </fieldset>
    <input type="submit" name="submit" value="Create" />
    <input type="submit" name="submit" value="Read" />
    <input type="submit" name="submit" value="Update" />
    <input type="submit" name="submit" value="Verify" />
    <input type="submit" name="submit" value="Delete" />
  </form>
</body>
</html>

He obviado por completo cualquier sistema de validación de datos tanto en el form, controlador, vista, etc. No se te olvide hacerlo ;)
El código está bastante comentado y no creo que necesite más explicación, simplemente lo he dividido en MVC y utilizo $_POST y $_SESSION para trabajar con los datos del form.

Puedes asignar los datos de tus consultas de la DB tanto a $_POST como a $_SESSION y evitar repetirlas si ya existen, espero que te haya sido de ayuda.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

recuperar consulta con datos ingresados por el usuario

Publicado por Hugo (37 intervenciones) el 01/05/2022 05:32:01
Hola Ivan.

Gracias nuevamente por el tiempo empleado y por el consejo que me has dado de utilizar el patrón MVC, voy a buscar mayor información al respecto para de a poco ir adquiriendo más conocimiento para mejorar la calidad de programación.

Sinceramente no sé si esto que me has explicado se aplica a lo que busco.

Intentando explicarme un poco mejor el proceso sería:

1) el usuario ingresa fecha desde, fecha hasta, sección (a través de un select) y estado (a través de un select).

2) oprime el botón "visualizar" (esta acción lo que hace es cargar en la página los datos obtenidos de la DB de acuerdo a los datos ingresados por el usuario en el punto 1 (fecha desde, fecha hasta, sección y estado)).

3) la tabla que se carga en pantalla a su vez tiene un botón en cada fila, llamado "autorizar" y una vez que se oprime envía los datos a "autorizar_lic.php" que se encarga de hacer el UPDATE cambiando el estado a "autorizado" en la DB (esto lo hace correctamente).

4) luego de realizado el UPDATE redirige a la página donde el usuario inicialmente cargó los datos y aquí surge el problema, ya que la tabla obtenida del select (en el punto 1) desaparece y el usuario debe ingresar nuevamente los datos de fecha desde, fecha hasta, sección y estado, oprimir "visualizar" nuevamente para que se cargue la tabla y pueda autorizar.

En resumen, debe repetir el proceso completo cada vez que va a realizar una autorización.

Si lo que tú me pasaste se aplica, dime y busco información de como aplicarlo en mi proyecto, para así no robarte más tiempo, que sinceramente mucho agradezco.

Un gran saludo!
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 Ivan

recuperar consulta con datos ingresados por el usuario

Publicado por Ivan (118 intervenciones) el 01/05/2022 21:36:48
Hola,

ahora que lo has explicado con más detalle veo que todo el proceso que hace tu página es bastante complejo para una sóla página. Insisto que mires el patrón MVC y también AJAX, porque para algunas peticiones a la DB seguramente te irá muy bién.

Pero como ahora se trata de que funcione lo que ya tienes, vamos a aplicar mi ejemplo anterior a tus necesidades punto por punto:

1 - El usuario ingresa fecha desde, fecha hasta, sección (a través de un select) y estado (a través de un select).
Entiendo que estas son las variables del formulario que quieres guardar en $_SESSION

2 - Oprime el botón "visualizar" (esta acción lo que hace es cargar en la página los datos obtenidos de la DB de acuerdo a los datos ingresados por el usuario en el punto 1 (fecha desde, fecha hasta, sección y estado)).
Entiendo que estos son los datos de la DB que también quieres guardar en $_SESSION

3 - La tabla que se carga en pantalla a su vez tiene un botón en cada fila, llamado "autorizar" y una vez que se oprime envía los datos a "autorizar_lic.php" que se encarga de hacer el UPDATE cambiando el estado a "autorizado" en la DB (esto lo hace correctamente).
Entiendo que aquí no hace falta hacer nada más

4 - Luego de realizado el UPDATE redirige a la página donde el usuario inicialmente cargó los datos y aquí surge el problema, ya que la tabla obtenida del select (en el punto 1) desaparece y el usuario debe ingresar nuevamente los datos de fecha desde, fecha hasta, sección y estado, oprimir "visualizar" nuevamente para que se cargue la tabla y pueda autorizar.
Y aquí es donde recuperas todos los datos guardados en $_SESSION

Supongo que el problema es saber guardar y recuperar los datos y cuando utilizar $_POST/$_GET o $_SESSION, por eso te hice un ejemplo con varias situaciones, pero vamos a volver a repasar los puntos y cuando usar uno u otro.

1 - Al entrar en la página la primera vez el form estará vacío y el usuario lo rellena, la siguiente vez deberían recuperarse los datos de $_SESSION. La lógica sería algo así (usando post):

1
2
3
4
5
6
7
8
9
  // Si no existe, creamos por primera vez la variable $_SESSION['POST'] vacía
  if (!isset($_SESSION['POST'])) $_SESSION['POST'] = [];
  // Si llega un formulario comparamos $_POST con $_SESSION
  // Si son diferentes lo guardamos y eliminamos los datos de $_SESSION['DB']
  if (isset($_POST['submit']) && ($_SESSION['POST'] <> $_POST)) {
    $_SESSION['POST'] = $_POST;
    unset($_SESSION['DB']);
  // Si no llega un formulario pero tenemos los datos en $_SESSION['POST'] (viene de actualizar) los copiamos a $_POST para rellenar el form
  } else if (isset($_SESSION['POST'])) $_POST = $_SESSION['POST'];

2 - Hacemos el mismo proceso que en el punto uno pero con $_SESSION['DB']

1
2
3
4
5
6
7
  // Si no existen los datos de la DB debemos hacer la consulta de nuevo
  if (!isset($_SESSION['DB'])) {
    // Aquí obtenemos los datos de la consulta con los datos del formulario
    // Guardamos los datos en $_SESSION
    $_SESSION['DB'] = $datos_de_la_DB;
  //Si ya existen los datos los pasamos a la variable
  } else $datos_de_la_DB = $_SESSION['DB'];

Un apunte a tener en cuenta es que si el usuario cambia los valores del formulario para ver otro rango de fechas debes detectarlo, realizar la consulta en la DB y volver a guardar los valores en $_SESSION['DB'], esto lo conseguimos cuando eliminamos $_SESSION['DB']

Otro apunte que veo en tu código es que sueles utilizar tus propias variables para cada campo del formulario, haciendo un buen filtrado de los datos de tu formulario (para evitar ataques) puedes utilizarlas directamente, porque estás duplicando variables.

3 - En este punto no hace falta hacer nada más

4 - Aquí recuperamos los valores de $_SESSION['POST'] para rellenar el formulario (paso 1) y los valores de $_SESSION['DB'] para rellenar la tabla.

Observaciones finales:

- Para obtener los datos de los campos de un formulario en PHP dales el atributo name='tu variable'

- En el select debes añadir este código para activar la opción:
1
<option value="tu_valor"<?php echo $_POST['variable_select'] == 'tu_valor' ? ' selected="selected"' : NULL ?>>tu_valor</option>

Seguro que me dejo cosas en el tintero pero creo que la lógica se ajusta bastante a lo que buscas. Espero que si no te sirve al 100% almenos te haya dado ideas para acabar de ajustarlo a tus necesidades.

Un saludo y espero haberte ayudado!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

recuperar consulta con datos ingresados por el usuario

Publicado por Hugo (37 intervenciones) el 02/05/2022 04:38:52
Buenas noches Ivan.

Gracias a tu gran ayuda he logrado lo que tanto me costó hacer, ahora sí cuando recarga la página vuelve a cargarse con los datos seleccionados originalmente por el usuario.

Muchas gracias no solo por el tiempo que tomaste en intentar ayudarme, sino por la paciencia para explicarme de manera muy amena, entendible y sobre todo por el aprendizaje que esto deja en mí, realmente es de mucha valía.

Te envío un gran saludo y nuevamente gracias!
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 Ivan

recuperar consulta con datos ingresados por el usuario

Publicado por Ivan (118 intervenciones) el 02/05/2022 18:52:08
Hola Hugo,

me alegra haberte ayudado y muchas gracias por tus comentarios y valoraciones ;)
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

recuperar consulta con datos ingresados por el usuario

Publicado por isaac rviera (2 intervenciones) el 08/05/2022 15:52:29
Hola amigos,¿ Alguien sabe como puedo hacer un codigo de php donde pueda realizar operaciones aritmeticas utilizando el comando post en formularios?,
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