PHP - problema con la funcion base64_decode

 
Vista:
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con la funcion base64_decode

Publicado por Alejandro (172 intervenciones) el 03/09/2020 22:35:49
Hola buenos dias,

estoy programando en PHP y tengo las dos siguientes paginas:

En esta valido los datos pasados en un formulario y si es correcto el UPDATE envio un mensaje de confirmacion y vuelvo a la pagina principal de mi intranet codificando el ID:

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
<?php
 
session_start();
include("conexion.php");
 
 
$id = $_POST['id'];
 
$accion = $_POST['accion'];
 
switch ($accion){
 
    case "modificarSituacion":
 
        $situacionActual = $_POST['situacionActual'];
 
        $SQL = "UPDATE datos_personales SET situacion_actual=? WHERE id_personal=?";
        $result = mysqli_prepare($GLOBALS['conn'], $SQL);
 
        $ok = mysqli_stmt_bind_param($result, "si", $situacionActual, $id);
        $ok = mysqli_stmt_execute($result);
 
        if($ok==false){
 
            echo "Error al modificar";
 
 
        }else{
 
 
            echo "Modificados los datos de 'Situación actual'</br>
            <a href ='empleo.php?id_personal=".base64_encode($id)."' text-decoration='none'>Volver</a>";
 
 
        }
 
    break;
 
    case "modificarDiscapacidad":
 
        $idDiscapacidad = $_POST['idDiscapacidad'];
        $tipoDiscapacidad = $_POST['tipoDiscapacidad'];
        $gradoDiscapacidad = $_POST['gradoDiscapacidad'];
        $documentacionDiscapacidad = $_POST['documentacionDiscapacidad'];
 
        $SQL = "UPDATE discapacidad SET tipo=?, grado=?, ruta_documentacion=? WHERE id_discapacidad=? AND codigo_persona_discapacidad=?";
        $result = mysqli_prepare($GLOBALS['conn'], $SQL);
 
        $ok = mysqli_stmt_bind_param($result, "sssii", $tipoDiscapacidad, $gradoDiscapacidad, $documentacionDiscapacidad, $idDiscapacidad, $id);
        $ok = mysqli_stmt_execute($result);
 
        if($ok==false){
 
            echo "Error al modificar";
 
 
        }else{
 
 
            echo "Modificados los datos de 'Discapacidad'</br>
            <a href ='empleo.php?id_personal=".base64_encode($id)."' text-decoration='none'>Volver</a>";
 
 
        }
 
    break;
 
}
 
 
cerrarBD();
 
?>


Esta es la pagina principal a la que vuelvo:

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
	<head>
 
        <meta name="robots" content="noindex">
	      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="style_propio.css" rel="stylesheet" type="text/css" />
        <script src="funcion_mostrar.js" async></script>
 
        <title>Barrio empleo</title>
 
 
  </head>
  <?php
    ob_start();
    session_start();
    include("conexion.php");
 
  ?>
 
  <body>
 
    <?php
 
    $id = base64_decode($_GET['id_personal']);
    $consulta = "SELECT * FROM datos_personales WHERE id_personal=".$id;
    $resultado = mysqli_query($GLOBALS['conn'], $consulta);
    while($filas = mysqli_fetch_array($resultado)){
 
     //Aqui va un todo un menu con formularios muy largo que no voy a poner puesto que no es el problema
 
    }
 
<?php
        }
        mysqli_free_result($resultado);
        cerrarBD();
        ob_end_flush();
    ?>
</body>
</html>

Resulta que la variable $id no recoge el id codificado en la situacion de modificarDiscapacidad del Switch pero en modificarSituacion si funciona y me saca la pagina principal pero en la otra situacion recibo los siguientes errores:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in (ruta) on line 30

Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, bool given in (ruta) on line 1373

No realiza la consulta porque no recibe ese id, lo he comprobado con var_dump(), quisiera saber por que.

Gracias de antemano.
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 Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con la funcion base64_decode

Publicado por Yoel (198 intervenciones) el 03/09/2020 23:18:42
Hola alejandro, el mensaje que te esta enviando no es un error ya que es un Warning. Ese mensaje se te esta produciendo por que la consulta esta devolviendo NULL en el query, Con respecto al error del id_personal que no se esta decodificando puede ser por que la cadena de string no este completa por lo que puedes hacer es lo siguiente:

1. Verifica que el valor del $_GET['id_personal'] este correcto y no venga ni NULL ni incompleto puede ser una longitud muy larga para el URL.

2. Después que verifiques ese dato realiza un echo a la variable $id para ver si esta correcto.

3. Si lo anterior está todo correcto verifica que tu consulta no tenga errores.

Nota: Para quitar ese mensaje puedes validar el resultado te dejo un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
$id = base64_decode($_GET['id_personal']);
$consulta = "SELECT * FROM datos_personales WHERE id_personal=".$id;
$resultado = mysqli_query($GLOBALS['conn'], $consulta);
if(mysqli_num_rows($resultado) > 0){
while($filas = mysqli_fetch_array($resultado)){
 
 //Aqui va un todo un menu con formularios muy largo que no voy a poner puesto que no es el problema
 
}
 
<?php
    }
    mysqli_free_result($resultado);
    }
    cerrarBD();
    ob_end_flush();
?>
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: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con la funcion base64_decode

Publicado por Alejandro (172 intervenciones) el 14/09/2020 19:10:16
Yoel ya esta solucionado.

Era cuando enviaba los datos del formulario, listaba los resultados de un select con while ( $fila = mysqli_fetch_array($consulta) ) en empleo.php para rellenar los campos del formulario. Y en el campo del id, que es el que pasaba a la url, en vez de $fila['id'] habia puesto $filas["id"]. Entonces era logico que no me cogiera el id jaja.

Gracias por la pronta respuesta. 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