PHP - Ayuda con variable de sesión e isset()

   
Vista:

Ayuda con variable de sesión e isset()

Publicado por Gaspar hellomynameis@live.cl (2 intervenciones) el 09/12/2012 20:52:24
Hola buenas, soy algo nuevo en esto de php y tengo una duda urgente.
El tema es el siguiente:

Tengo que hacer un proyecto, hasta este miércoles. En el proyecto tengo que trabajar con ciertos datos que incluiré luego en un base de datos, pero antes de hacerlo, tengo que trabajar los datos a nivel php. Para esto, pensé utilizar arreglos en variables de sesión.
El problema aparece en el siguiente fragmento de código (que, de hecho, ni siquiera entra de lleno en el tema que quiero abordar a finalidad):

1
2
3
4
5
6
7
8
9
10
if (isset($_POST["cboArticulos"])) {
    if (!isset($_SESSION["indice"])) {
        echo "Indice no existe";
        $_SESSION["indice"] = 0;
    } else {
        echo "Indice existe";
        $_SESSION["indice"] = $_SESSION["indice"] + 1;
    }
    echo "<br/>El índice es: " . $_SESSION["indice"];
}


En este fragmento, cuando recibo el formulario que trae la información de "cboArticulos", necesito iniciar una variable de sesión que indique el índice de un arreglo, que también es una variable de sesión, pero que en este fragmento ni siquiera está declarado.
El punto es que, según yo, esto debería verificar si la variable de sesión "indice" no existe o es nula. En caso de que no exista o sea nula, se le asigna el valor 0, con lo que ya debería existir y dejar de ser nula, y así, cuando vuelva a pasar por este mismo fragmento de código, debería ser siempre existente y no nula, sumándose el valor 1 al valor total que ya tenía, pero lo que realmente pasa es que siempre se va por el lado que dice que es nula o no existe.
Intenté poniéndole valor 1 en vez de cero al iniciarla, de forma que no pudiese quedar nula bajo ningún aspecto, pero tampoco funcionó.
Ojalá me puedan ayudar :(
Sludos.

Añado el código completo:

agregar_prestamo.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
<?php
session_start();
$link = mysql_connect("localhost", "root", "");
mysql_select_db("encargofinal");
$articulo = "";
$cantidad = "";
if (isset($_POST["cboArticulos"])) {
    $articulo = $_POST["cboArticulos"];
    $cantidad = $_POST["txtCantidad"];
    if (!isset($_SESSION["indice"])) {
        echo "Indice no existe";
        $_SESSION["indice"] = 1;
    } else {
        echo "Indice existe";
        $_SESSION["indice"] = $_SESSION["indice"] + 1;
    }
    echo "<br/>El índice es: " . $_SESSION["indice"];
    $_SESSION["datos"][$_SESSION["indice"]] = array("articulo" => $articulo, "cantidad" => $cantidad);
}
?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Pañol</title>
        <link type="text/css" rel="stylesheet" href="css/estilo.css"/>
    </head>
    <body>
        <div id="header">
            <h1 class="titulos">Nueva Salida de Pañol</h1>
            <?php
            echo $_SESSION["id"] = "";
            ?>
            <h2 class="titulos">ID Session <?= session_id(); ?></h2>
        </div>
        <div id="menu">
            <form action="#" method="post">
                <label for="cboOperarios" class="lbl">Operarios</label>
                <select name="cboOperarios" id="cboOperarios" class="box">
                    <option value="0">Seleccione</option>
                    <?php
                    $sql = "SELECT * FROM operario";
                    $res = mysql_query($sql, $link);
                    while ($registro = mysql_fetch_array($res)) {
                        ?>
                        <option value="<?= $registro["rut"] ?>"><?= $registro["nombre"] ?></option>
                        <?php
                    }
                    ?>
                </select>
                <br/>
 
                <table border="1">
                    <tr>
                        <td>
                            Articulo
                        </td>
                        <td>
                            Cantidad
                        </td>
                        <td>
                            Eliminar
                        </td>
                    </tr>
                    <?php
                    $total = 0;
                    if (isset($_POST["cboArticulos"])) {
                        for ($i = 0; $i < sizeof($_SESSION["datos"]); $i++) {
                            ?>
                            <tr>
                                <td>
                                    <?= $_SESSION["datos"][$i]["articulo"] ?>
                                </td>
                                <td>
                                    <?= $_SESSION["datos"][$i]["cantidad"] ?>
                                    <?php $total = $total + $_SESSION["datos"][$i]["cantidad"]; ?>
                                </td>
                                <td>
                                    <a href="#" onclick="" >Eliminar</a>
                                </td>
                            </tr>
                            <?php
                        }
                    }
                    ?>
                    <tr>
                        <td>
                            &nbsp;
                        </td>
                        <td>
                            &nbsp;
                        </td>
                        <td>
                            &nbsp;
                        </td>
                    </tr>
                </table>
                <br/>
                <input type="button" name="btnMas" id="btnMas" value="+" onclick="location.href='asociar_articulo.php'"/>
                <br/>
                <h2>Total Artículos</h2><h2><?= $total ?></h2>
                <br/>
                <input type="button" name="btnGuardar" id="btnGuardar" value="Guardar"/>
                <input type="button" name="btnLimpiar" id="btnLimpiar" value="Limpiar" onclick="<?php session_destroy(); ?>"/>
            </form>
        </div>
    </body>
</html>


asociar_articulo.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
<?php
$link = mysql_connect("localhost", "root", "");
mysql_select_db("encargofinal");
?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Artículos</title>
        <script type="text/javascript" src="javascript/validar.js"></script>
        <link type="text/css" rel="stylesheet" href="css/estilo.css"/>
    </head>
    <body>
        <form action="agregar_prestamo.php" method="post" onsubmit="return validarArticulo();">
            <label for="cboArticulos" class="lbl">Artículo</label>
            <select name="cboArticulos" id="cboArticulos" class="box">
                <option value="0">Seleccione</option>
                <?php
                $sql = "SELECT * FROM articulo";
                $res = mysql_query($sql, $link);
                while ($registro = mysql_fetch_array($res)) {
                    ?>
                    <option value="<?= $registro["codigo"] ?>"><?= $registro["nombre"] ?></option>
                    <?php
                }
                ?>
            </select>
            <label for="txtCantidad" class="lbl">Cantidad</label>
            <input type="text" name="txtCantidad" id="txtCantidad" class="box"/>
            <input type="submit" value="Agregar"/>
            <a href="agregar_prestamo.php">Volver</a>
        </form>
    </body>
</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

Ayuda con variable de sesión e isset()

Gaspar, para empezar, tendrias que incluir el comienzo de sesion en cada archivo donde quieras que esten disponibles esas variables.
Proba con eso y, si no funciona, vemos el resto del codigo.
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