PHP - Envío de array por POST - serialize - unserialize

 
Vista:

Envío de array por POST - serialize - unserialize

Publicado por José Manuel (3 intervenciones) el 08/10/2018 17:41:42
Estimados programadores, tengo que desarrollar para una práctica de programación en PHP, una agenda que almacene los datos de contacto en un array asociativo y los auto-envíe por POST para la visualización de todos los contactos que tenga almacenados. Os paso el código, a ver si sabéis qué es lo que puede estar fallando:

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
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Unidad de Trabajo 1 - Ejercicio 9</title>
</head>
    <body>
        <h2>Unidad de Trabajo 1 - Ejercicio 9</h2>
        <h3>Debes programar una aplicación para mantener una pequeña agenda en una única página web programada en PHP y que almacene los datos en un array asociativo.</h3>
 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <?php
            if (!empty($_POST["datosagenda"]))
            {
                $agenda = unserialize($_POST['datosagenda']);
                echo("Ha entrado en unserialize");
            } else
            {
                $agenda = array();
                echo("Ha creado el array de nuevo");
            }
        ?>
        <table>
            <?php
                if(isset($agenda)) {
                    echo("Ha entrado en isset - agenda");
                    var_dump($agenda);
                    foreach ($agenda as $nom => $tel) {
                        print "Ha entrado en el foreach";
                        print "<tr>";
                        print "<td class=\"col-nombre\">";
                        print $nom;
                        print "</td>";
                        print "<td class=\"col-telefono\">";
                        print $tel;
                        print "</td>";
                        print "</tr>";
                    }
                }
            ?>
            <tr>
                <td>Nombre: </td>
                <td><input name="nombre" type="text" size="50" maxlength="50"/></td>
            </tr>
            <tr>
                <td>Telefono: </td>
                <td><input name="telefono" type="text" size="12" maxlength="12"/></td>
            </tr>
            <tr>
                <td class="botones">
                    <input name='datosagenda' type='hidden' value='<?php echo serialize($agenda);?>' />
                    <input name="enviar" type="submit" value="Añadir a la agenda"/>
                </td>
            </tr>
        </table>
    </form>
 
    </body>
</html>

He agregado algunas líneas para verificar si entra o no en algunos bloques de código, nunca llega a entrar en el foreach.
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Envío de array por POST - serialize - unserialize

Publicado por xve (6935 intervenciones) el 08/10/2018 19:13:00
Es correcto que no te entre nunca, porque la variable $agenda la defines mas arriba!!!

Recuerda que isset() devuelve true si la variable no esta definida!!!

Prueba a eliminar la linea 19!!!
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: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Envío de array por POST - serialize - unserialize

Publicado por Yamil Bracho (888 intervenciones) el 08/10/2018 19:34:16
isset retorna true si la variable esta definida y es diferente de null
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
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

Envío de array por POST - serialize - unserialize

Publicado por xve (6935 intervenciones) el 08/10/2018 20:22:39
Si, es cierto Yamil!!! lo he dicho al revés!!! gracias por rectificarme!!!

José Manuel, lo he dicho al revés... te tiene que entrar en el if() a no ser que el unserialize te devuelva null!!!
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