Foros del Web » Programando para Internet » PHP »

¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Estas en el tema de ¿que estoy haciendo mal al asignar un valor a una variable de sesion? en el foro de PHP en Foros del Web. B uenas caballeros! Tengo un error, el cual no me "guarda" el resultado de una consulta en una variable de sesion, pongo el ejemplo exacto ...
  #1 (permalink)  
Antiguo 02/10/2012, 15:19
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Buenas caballeros!

Tengo un error, el cual no me "guarda" el resultado de una consulta en una variable de sesion, pongo el ejemplo exacto :

Código:


Código PHP:
Ver original
  1. $query = "SELECT UsuarioID FROM Usuarios WHERE nick = '$nick'";
  2.          $id = mysqli_query($conect, $query);
  3.          $_SESSION["userid"] = $id;

mas tarde cuando en la pagina de usuario, la uso , no me sale un valor, es decir, que no he hecho algo bien por el camino ¿que estoy haciendo mal?
  #2 (permalink)  
Antiguo 02/10/2012, 15:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

No puedes guardar el resultado de una consulta en una variable de sesión, ese tipo de variables son recursos que son liberados al terminar la ejecución de tu script, por eso por más que lo asignes nunca va a llegar a tu otro script.

Vas a tener que pasar los datos, o volver a hacer la consulta en el otro archivo.

Saludos.
  #3 (permalink)  
Antiguo 02/10/2012, 15:22
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años
Puntos: 52
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Estas haciendo mal, en la 2 linea a la variable $id asignas el resultado de la consulta mas no el campo unico que quieres obtener.

Asegurate tambien de que antes de cualquier otra cosa tengas session_start() tanto donde creas la session como donde la muestras.
__________________
Aprendiendo!!!
  #4 (permalink)  
Antiguo 02/10/2012, 15:30
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Cita:
Iniciado por GatorV Ver Mensaje
No puedes guardar el resultado de una consulta en una variable de sesión, ese tipo de variables son recursos que son liberados al terminar la ejecución de tu script, por eso por más que lo asignes nunca va a llegar a tu otro script.

Vas a tener que pasar los datos, o volver a hacer la consulta en el otro archivo.

Saludos.

Estoy haciendo el area de usuario de mi web, ¿que tipo de variables super globales de usuario uso con sesion_start() para reconocer al usuario? , tenia entendido que la id era una de ellas.
  #5 (permalink)  
Antiguo 02/10/2012, 15:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Sí, puedes usar el id, pero fíjate en el código que expones estas guardando el resultado de mysqli_query, tienes que luego bajar los resultados a una variable local antes de pasarlos, lo que se conoce como "fetching".
  #6 (permalink)  
Antiguo 02/10/2012, 15:43
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años
Puntos: 52
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Cita:
Iniciado por GatorV Ver Mensaje
Sí, puedes usar el id, pero fíjate en el código que expones estas guardando el resultado de mysqli_query, tienes que luego bajar los resultados a una variable local antes de pasarlos, lo que se conoce como "fetching".
Justo lo que te decia.
__________________
Aprendiendo!!!
  #7 (permalink)  
Antiguo 02/10/2012, 20:25
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

he buscado en php manual y he encontrado : mysqli_fetch_array() , pero esto devuelve un array cuando lo que yo quiero es un valor concreto.

Parece que esa forma es la mas comun y reiterada pero para lo que yo quiero no me sirve, alguien tendria la amabilidad de explicarme un poco mas en detalle eso del "fetching"?
  #8 (permalink)  
Antiguo 02/10/2012, 21:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

De hecho es lo correcto, tienes que bajar el valor a un array y de ahí extraer el valor que quieres, ej:
Código PHP:
Ver original
  1. $array = mysqli_fetch_array();
  2. $_SESSION['id'] = $array['id'];
  #9 (permalink)  
Antiguo 03/10/2012, 09:08
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Creo que entiendo la dinamica, pero sin enbargo sigo sin comprender por que es necesario.


De todas formas he rehecho las sentencias, y sigue sin funcionar :

Código:


Código PHP:
Ver original
  1. $query = "SELECT UsuarioID FROM Usuarios WHERE nick = '$nick'";
  2. $idd = mysqli_query($link, $query);  
  3. $Qid = mysqli_fetch_array($idd);
  4.  $_SESSION["userid"] = $Qid[' UsuarioID'];
  #10 (permalink)  
Antiguo 03/10/2012, 09:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

¿Te haz asegurado que $Qid tenga los valores que esperas? Puedes usar var_dump() para ver lo que tiene tu variable.

Saludos.
  #11 (permalink)  
Antiguo 03/10/2012, 09:33
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Lo que pasa es que mysqli_query no te devolverá los resultados de la consulta en si, te devuelve un mysqli_result que contiene información de la sentencia y la respuesta del motor, mas no los registros de la tabla de la base de datos.

Por ese motivo es que es necesario utilizar el fetch_array, para que los registros sean guardados en una variable local o u arreglo o lo que quieras.

Adicional a lo que dice GatorV fíjate que $Qid[' UsuarioID']; tiene un espacio después de la primer comilla simple, que es completamente diferente de $Qid['UsuarioID']; que no tiene ese espacio.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #12 (permalink)  
Antiguo 03/10/2012, 09:35
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: ¿que estoy haciendo mal al asignar un valor a una variable de sesion?

Okey, entenido , gracias jotaincubus.


Ps. GatorV , ya esta, tube un error al escribir la ultima sentencia, un espacio dentro de las `` que hacia que el codigo no funcionase

Etiquetas: haciendo, mysql, variables, usuarios
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 17:06.