Foros del Web » Programando para Internet » PHP »

Variables $_SESSION pierden el valor

Estas en el tema de Variables $_SESSION pierden el valor en el foro de PHP en Foros del Web. Hola, por favor espero puedan ayudarme, tengo dias tratando de buscar la solución a este problema y no puedo.. me urge El objetivo de mi ...
  #1 (permalink)  
Antiguo 29/04/2011, 08:36
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Variables $_SESSION pierden el valor

Hola, por favor espero puedan ayudarme, tengo dias tratando de buscar la solución a este problema y no puedo.. me urge

El objetivo de mi programa es mostrar en pantalla 10 graficas con valores correspondientes a la consulta a una base de datos. Para ello uso PHP y la libreria JpGraph. Mi problema es que el programa me muestra las 10 gráficas pero todas con los mismos valores de la ultima consulta. =S es decir, al parecer mis variables $_SESSION solo toman el ultimo valor que se les da y con eso muestra todas las gráficas. EXPLICO RESUMIDAMENTE LO QUE HACE MI PROGRAMA:

♥ Tengo una consulta a la base de datos (todos los resultados numericos)
♥ Almaceno los valores de las consultas en los arreglos ($Arreglo1, $Arreglo2, $Arreglo3, y $Arreglo4).
♥ Realizo un while en el cual:
*Almaceno el valor de los arreglos en las variables $_SESSION
* Imprimo las 10 gráficas. Usando la variable $i que va de 0 a 10.

Código PHP:
mysql_connect("localhost","root","mysql");
mysql_select_db("monitoreo");
$resultmysql_query ("SELECT variable1, variable2, variable3, variable4  FROM tabla");
$j=0;
while (
$row=mysql_fetch_array($resultMYSQL_BOTH))
      {
       
$Arreglo1[$j]= $row["variable1"];
       
$Arreglo2[$j]= $row["variable2"];
       
$Arreglo3[$j]= $row["variable3"];
       
$Arreglo4[$j]= $row["variable4"];
       
$j=$j+1;

       }
mysql_free_result($result);




while (
$i<10)
     {
    
//Almaceno en las variables $_SESSION el valor de las consultas de la BDD
       
$_SESSION['$a']=$Arreglo1[$i];
       
$_SESSION['$b']=$Arreglo2[$i];
       
$_SESSION['$c2']=$Arreglo3[$i];
       
$_SESSION['$d']=$Arreglo4[$i];

      
//Mando a imprimir un gráfico haciendo uso de los datos de las SESSION anteriores
       
echo '<img src="barra1.php" alt="" border="0" width: 2000px;>';
       
//Donde barra1.php es el script que contiene el codigo para generar cada  grafica de JpGraph, el cual funciona perfectamente y recibe a las variables $_SESSION.
       
        
$i=$i+1;
      } 


FUNCIONA PERFECTO SOLO QUE APARECEN 10 GRAFICAS Y TODAS CON EL ULTIMO VALOR QUE S ELE DIO A CADA VARIABLE SESSION, ES DECIR, TODAS LAS GRAFICAS ME DAN IGUAL

GRACIAS DE ANTEMANO
  #2 (permalink)  
Antiguo 29/04/2011, 09:11
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Variables $_SESSION pierden el valor

creo que necesitas el session_start() al principio de tu código ;)

-EDIT-

Lo había leído mal, aunque igual te falte; no creo que venga de ahí tu problema...
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #3 (permalink)  
Antiguo 29/04/2011, 11:04
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Variables $_SESSION pierden el valor

A simple vista y aunque parece que tienes más lineas que hacen ciertas cosas, creo que haces muchas cosas de más.
Desde que recorres la base de datos ya podrías generar los gráficos sin pasar los campos a arreglos.
Ya que lo haces así, al recorrer los arreglos podrías generar los graficos sin pasarlos a variables de sesión.

Supongo que los gráficos los generas con otro while, manejando las variables de sesión, de ser así, ahí está el problema. Las variables de sesión las sobreescribes 10 veces, y se quedan desde luego con el último valor que les da el while. Si necesitas las variables de sesión por que estás pasando dichos valores a otro script, tendrías que hacer algo como esto:


Código PHP:
Ver original
  1. mysql_select_db("monitoreo");
  2. $result= mysql_query ("SELECT variable1, variable2, variable3, variable4  FROM tabla");
  3. while ($row=mysql_fetch_array($result, MYSQL_BOTH))
  4.       {
  5.        $_SESSION["a"][]= $row["variable1"];
  6.        $_SESSION["b"][]= $row["variable2"];
  7.        $_SESSION["c2"][]= $row["variable3"];
  8.        $_SESSION["d"][]= $row["variable4"];
  9.        }
luego recorrer las variables de sesion:

Código PHP:
Ver original
  1. while ($i<10)
  2.      {
  3.     //Almaceno en las variables $_SESSION el valor de las consultas de la BDD
  4.        $a=$_SESSION["a"][$i];
  5.        $b=$_SESSION["b"][$i];
  6.        $c2=$_SESSION["c2"][$i];
  7.        $d=$_SESSION["d"][$i];
  8.  
  9.       //Mando a imprimir un gráfico haciendo uso de los datos de las SESSION anteriores
  10.        echo '<img src="barra1.php" alt="" border="0" width: 2000px;>';
  11.        //Donde barra1.php es el script que contiene el codigo para generar cada  grafica de JpGraph, el cual funciona perfectamente y recibe a las variables $_SESSION.
  12.        
  13.         $i++;//Ya deberías conocer esta instrucción más simple
  14.       }  
  15.  
  16. //o bien mediante un foreach
  17.  
  18. foreach($_SESSION["a"] as $indice =>$valor){
  19.       $a=$valor;
  20.       $b=$_SESSION["b"][$indice];
  21.       $c2=$_SESSION["c2"][$indice];
  22.       $d=$_SESSION["d"][$indice];
  23.       //Mando a imprimir un gráfico haciendo uso de los datos de las SESSION anteriores
  24.        echo '<img src="barra1.php" alt="" border="0" width: 2000px;>';
  25.        //Donde barra1.php es el script que contiene el codigo para generar cada  grafica de JpGraph, el cual funciona perfectamente y recibe a las variables $_SESSION.
  26. }
  #4 (permalink)  
Antiguo 30/04/2011, 21:56
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Variables $_SESSION pierden el valor

Supongo que en barra1.php recoges las variables desde $_SESSION, para serte sincero, no le veo caso, lo mejor seria pasar las variables como parámetros(ejemplo: src="barra1.php?a=valora&b=valorb&c2=valorc2&d=val ord"), ya que $_SESSION solo funciona si se recarga la página, si no se recarga, las variables no se propagan.
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 01/05/2011, 19:36
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Variables $_SESSION pierden el valor

Cita:
Iniciado por Bam_Margera Ver Mensaje
creo que necesitas el session_start() al principio de tu código ;)

-EDIT-

Lo había leído mal, aunque igual te falte; no creo que venga de ahí tu problema...
Si, muchas gracias... ya tengo el session_start, solo que olvide colocarlo en este codigo. Aun con eso no funciona =(
  #6 (permalink)  
Antiguo 01/05/2011, 19:47
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Variables $_SESSION pierden el valor

Cita:
Iniciado por ocp001a Ver Mensaje
A simple vista y aunque parece que tienes más lineas que hacen ciertas cosas, creo que haces muchas cosas de más.
Desde que recorres la base de datos ya podrías generar los gráficos sin pasar los campos a arreglos.
Ya que lo haces así, al recorrer los arreglos podrías generar los graficos sin pasarlos a variables de sesión.

Supongo que los gráficos los generas con otro while, manejando las variables de sesión, de ser así, ahí está el problema. Las variables de sesión las sobreescribes 10 veces, y se quedan desde luego con el último valor que les da el while. Si necesitas las variables de sesión por que estás pasando dichos valores a otro script, tendrías que hacer algo como esto:


Código PHP:
Ver original
  1. mysql_select_db("monitoreo");
  2. $result= mysql_query ("SELECT variable1, variable2, variable3, variable4  FROM tabla");
  3. while ($row=mysql_fetch_array($result, MYSQL_BOTH))
  4.       {
  5.        $_SESSION["a"][]= $row["variable1"];
  6.        $_SESSION["b"][]= $row["variable2"];
  7.        $_SESSION["c2"][]= $row["variable3"];
  8.        $_SESSION["d"][]= $row["variable4"];
  9.        }
luego recorrer las variables de sesion:

Código PHP:
Ver original
  1. while ($i<10)
  2.      {
  3.     //Almaceno en las variables $_SESSION el valor de las consultas de la BDD
  4.        $a=$_SESSION["a"][$i];
  5.        $b=$_SESSION["b"][$i];
  6.        $c2=$_SESSION["c2"][$i];
  7.        $d=$_SESSION["d"][$i];
  8.  
  9.       //Mando a imprimir un gráfico haciendo uso de los datos de las SESSION anteriores
  10.        echo '<img src="barra1.php" alt="" border="0" width: 2000px;>';
  11.        //Donde barra1.php es el script que contiene el codigo para generar cada  grafica de JpGraph, el cual funciona perfectamente y recibe a las variables $_SESSION.
  12.        
  13.         $i++;//Ya deberías conocer esta instrucción más simple
  14.       }  
  15.  
  16. //o bien mediante un foreach
  17.  
  18. foreach($_SESSION["a"] as $indice =>$valor){
  19.       $a=$valor;
  20.       $b=$_SESSION["b"][$indice];
  21.       $c2=$_SESSION["c2"][$indice];
  22.       $d=$_SESSION["d"][$indice];
  23.       //Mando a imprimir un gráfico haciendo uso de los datos de las SESSION anteriores
  24.        echo '<img src="barra1.php" alt="" border="0" width: 2000px;>';
  25.        //Donde barra1.php es el script que contiene el codigo para generar cada  grafica de JpGraph, el cual funciona perfectamente y recibe a las variables $_SESSION.
  26. }

Mil gracias... tienes mucha razon. Mi programa en realidad es un poco mas complejo. Lo coloque asi porque quise simplificar y enfocarme en el problema para que asi lo entendieran mejor. Esto que comentaste me va a ayudar. Lo voy a probar y estare en contacto por aca. Si no me funciona te explico con mas detalle lo que intenta hacer realmente mi programa. De verdad muy agradecida con tu aporte ocp001a

Etiquetas: session, 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 11:20.