Foros del Web » Programando para Internet » PHP »

Ayuda con sesiones

Estas en el tema de Ayuda con sesiones en el foro de PHP en Foros del Web. Tengo un problema que en realidad no se bien que es, el tema es que yo en una pagina utilizo una variable de sesion en ...
  #1 (permalink)  
Antiguo 21/05/2008, 21:53
 
Fecha de Ingreso: enero-2008
Mensajes: 84
Antigüedad: 16 años, 2 meses
Puntos: 0
Ayuda con sesiones

Tengo un problema que en realidad no se bien que es, el tema es que yo en una pagina utilizo una variable de sesion en la que guardo objetos, ademas tambien utilizo otras variables de sesion para realizar otras cosas. El problema es que cuando incluyo un archivo que sirve para verificar si el usuario se ha registrado para poder acceder a esa pagina en el que tambien utilizo sesiones, comienza a haber fallas con la variable en la que guardo los objetos. Lo que pasa es que cada vez que se ingresa un objeto en ese arreglo de sesion puedo ver los datos que contiene ese objeto pero no los anteriores que se ingresearon en el arreglo. Osea que cuando se recorre el arreglo con el foreach para ver los datos de los objetos , me muestra los datos del ultimo objeto que ingrese y los anteriores parecen que se hubieran borrado.
Este problema aparece solo cuando incluyo el archivo que les decia con el include_once(). Aca les pongo el codigo que tiene el archivo que incluyo y que me da problemas. Gracias.

<?php

session_start();
if ($_SESSION["autentificado"] != "SI") {
header("Location: IngresoSistema.php");
exit();
}

?>
  #2 (permalink)  
Antiguo 21/05/2008, 22:21
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Ayuda con sesiones

Hola gerkin, cómo vas??

A pesar de que entiendo tu problema, las causas pueden ser varias cosas... Postea tu arreglo de sesión para ver que pasa por que el condicional que pomes, aparentemente está bien...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 22/05/2008, 10:11
 
Fecha de Ingreso: enero-2008
Mensajes: 84
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ayuda con sesiones

Hola carxl, aca te pongo la funcion que trabaja con el arreglo de session que esta en otro archivo y que es llamado desde la pagina a la que le agrego el archivo que mostre antes, esa funcion, se llama con un boton.

Function Agregar_Producto($Arreglo,$Mje){


$Tabla = "";

$res = mysql_query("select * from Productos where Categoria = '".$Arreglo['Categoria']."' AND Medida = '".$Arreglo['Medida']."'");
//Obtengo el registro de la tabla productos correspondiente al nombre del producto seleccionado en el formulario
session_start();
if(!($fila=mysql_fetch_array($res)) && (!is_array($_SESSION['Linea_Pedidos'])))
{

$Tabla .= "<h1 align='center' class='Error'>No se ha seleccionado ningun producto para agregar</h1>";

return $Tabla;
exit();
}
if(is_array($fila))
{

$Linea_Pedido = new Linea_Pedido($fila['idProducto'],$fila['Categoria'],$fila['Medida'],$fila['Descripcion'],$fila['Precio'],$fila['idProducto'],$Arreglo['Cantidad'],(($fila['Precio'])*($Arreglo['Cantidad'])),0,0);

//Instancio un objeto de la clase Linea_pedido iniciandolo con los datos del producto que se selecciona en el form

session_start();
//en en la variable de sesion Linea_Peidos se va almacenando los productos que se van solicitando
if(!is_array($_SESSION['Linea_Pedidos'])){

if(($Arreglo['Cantidad'] > $fila['Stock']))
{

$Tabla .= "<h1 align='center' class='Mensaje'>El stock es insuficiente. En deposito hay ".$fila['Stock']." unidades</h1>";
$Tabla .= "<br>";
if($Arreglo['Presupuesto'] == "si")
{
$_SESSION['Linea_Pedidos'][0] = $Linea_Pedido;
}
}else{
$_SESSION['Linea_Pedidos'][0] = $Linea_Pedido;
}
}else{
//Si no esta vacio agrago el objeto en el arreglo
$Agregado = False;
//Primero verifico si el objeto a agregar no esta ya agregado, de ser asi, solo debo incrementar la propiedad cantidad y la propiedad Subtotal. Para verificarlo, se recorre el array para buscar un objeto que sea igual al que se desea ingresar

Foreach($_SESSION['Linea_Pedidos'] as $Indice => $Valor){
if($Valor->idProducto == $Linea_Pedido->idProducto)
{
$Agregado = True;
if(!($fila['Stock']>=($Valor->Cantidad + $Linea_Pedido->Cantidad)))
{
$Tabla .= "<h1 align='center' class='Mensaje'>El stock es insuficiente. En deposito hay ".$fila['Stock']." unidades</h1>";
$Tabla .= "<br>";

if($Arreglo['Presupuesto'] == "si")
{
$Valor->Cantidad += $Linea_Pedido->Cantidad;
$Valor->SubTotal = ($Valor->Cantidad)*($Valor->Precio);
}
}else{
$Valor->Cantidad += $Linea_Pedido->Cantidad;
$Valor->SubTotal = ($Valor->Cantidad)*($Valor->Precio);
}
}
}
if(!$Agregado)
{
if(($Arreglo['Cantidad'] > $fila['Stock']))
{
$Tabla .= "<h1 align='center' class='Mensaje'>El stock es insuficiente. En deposito hay ".$fila['Stock']." unidades</h1>";
$Tabla .= "<br>";
if($Arreglo['Presupuesto'] == "si")
{
array_push($_SESSION['Linea_Pedidos'],$Linea_Pedido);
}
}else{
array_push($_SESSION['Linea_Pedidos'],$Linea_Pedido);
}

}

}

}
session_start();
if(is_array($_SESSION['Linea_Pedidos']))
{
if($Mje != "")
{
$Tabla .= $Mje;
}
$Tabla .= "<table width='70%' border='3' align='center' cellpadding='0' cellspacing='0' bordercolor='#33CCFF'>";
$Tabla .= "<tr>";
$Tabla .= "<th width='21%' scope='col'>Producto</th>";
$Tabla .= "<th width = '21%' scope='col'>Medida</th>";
$Tabla .= "<th width='23%' scope='col'>Descripcion</th>";
$Tabla .= "<th width='29%' scope='col'>Precio Unitario </th>";
$Tabla .= "<th width='15%' scope='col'>Cantidad</th>";
$Tabla .= "<th width='14%' scope='col'>Subtotal</th>";
$Tabla .= "</tr>";

$Total = 0;

Foreach($_SESSION['Linea_Pedidos'] as $Indice => $Valor){

$Tabla .= "<TR><TD align = 'center'>".$Valor->Categoria."</TD><TD align = 'center'>".$Valor->Medida."</TD><TD align = 'center'>".$Valor->Descripcion."</TD><TD align = 'center'>".$Valor->Precio."</td><td align = 'center'>".$Valor->Cantidad."</td><td align = 'center'>".$Valor->SubTotal."</td><td align = center><a href = '#Productos_Pedidos' onclick = xajax_Quitar_Producto(".$Valor->idLinea_Pedido.")><img src='Iconos/delete_16x16.gif'></a></TD></tr>";
$Total += $Valor->SubTotal;
}
$Tabla .= "<tr>";
$Tabla .= "<td align = 'right' scope='col'></td>";
$Tabla .= "<td align = 'right' scope='col'></td>";
$Tabla .= "<td align = 'right' scope='col'></td>";
$Tabla .= "<td align = 'right' scope='col'></td>";
$Tabla .= "<th align = 'center' scope='col'>Total</th>";
$Tabla .= "<td align = 'center' scope='col'>".$Total."</td>";
$Tabla .= "</tr>";
$Tabla .= "</TABLE>";
}

return $Tabla;

}
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 16:51.