Foros del Web » Programando para Internet » PHP »

Variable de sesión e isset.

Estas en el tema de Variable de sesión e isset. en el foro de PHP en Foros del Web. Hola buenas, soy nuevo en el foro y tengo una duda urgente. El tema es el siguiente: Tengo que hacer un proyecto, hasta este miércoles. ...
  #1 (permalink)  
Antiguo 09/12/2012, 14:11
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 4 meses
Puntos: 0
Variable de sesión e isset.

Hola buenas, soy nuevo en el foro 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):

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
Código:
<?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
Código:
<?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>
  #2 (permalink)  
Antiguo 09/12/2012, 15:35
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Variable de sesión e isset.

Para todo aquel que intentó resolver el problema, y para el que no también, ya lo descubrí por mí.
Resulta que intenté mezclar ciertas tecnologías que no son taaaan compatibles.
El error estaba acá:

<input type="button" name="btnLimpiar" id="btnLimpiar" value="Limpiar" onclick="<?php session_destroy(); ?>"/>

Ese trozo me destruía la sesión cada vez que usara la página, de forma que era imposible usar los datos de sesión.
Hice eso pensando en que me ahorraría el tener que hacer un archivo extra para destruir la sesión cuando lo necesitara. Mala idea.
Saludos.

Etiquetas: formulario, html, mysql, registro, sesión, sql, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:28.