Foros del Web » Programando para Internet » PHP »

Problemas para crear una $_Session

Estas en el tema de Problemas para crear una $_Session en el foro de PHP en Foros del Web. hola buenos dias, estoy haciendo un sistema que lleva la contabilidad, registro de datos, etc, de varias empresas con un mismo dueño, los usuarios mediante ...
  #1 (permalink)  
Antiguo 12/01/2012, 05:18
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 8 meses
Puntos: 1
Problemas para crear una $_Session

hola buenos dias, estoy haciendo un sistema que lleva la contabilidad, registro de datos, etc, de varias empresas con un mismo dueño, los usuarios mediante un login pueden ver una o mas empresas en una pagina de inicio y al pinchar una de las empresas la llevara a su pagina de inicio, pero aca donde tengo el problema creo unas sesiones para poder tener el nombre de usuario, el IDusuario, Nombre empresa IDempresa, y asi el usuario cuando ingrese algun dato insertar el idempresa segun en la empresa que eligio para trabajar:les muestro el codigo que tengo:
index.php o login.php

session_start();
$_SESSION['DMM_auth']=true;
$_SESSION['DMM_usuario']=$usuario;
$_SESSION['idusuario']=$d['id_usuario'];
$_SESSION['DMM_email']=$d['email_usuario'];
$_SESSION['DMM_nombre']=$d['nombre_usuario'];

$sql="SELECT empresas.id_empresa, nombre_empresa
FROM empresas, usuario_empresa
where usuario_empresa.id_usuario='$_SESSION[idusuario]'
AND empresas.id_empresa=usuario_empresa.id_empresa";
conectarDB();


$query_emp=mysql_query($sql) or die("error al mostra la empresa:".mysql_error());
while($empresa=mysql_fetch_array($query_emp))

{

$_SESSION['id_empresa']=$empresa[0];
$_SESSION['nombre_empresa']=$empresa[1];


}

header("Location: inicio.php");
exit();
}
pero al logearme entro bien pero solo me muestra una empresa
en inicio coloco al principio para ver que me trae :

session_start();
echo "<pre>";
var_dump($_SESSION);
echo "</pre>";

y me muestra esto:

array(7) {
["DMM_auth"]=>
bool(true)
["DMM_usuario"]=>
string(5) "admin"
["idusuario"]=>
string(1) "1"
["DMM_email"]=>
string(18) "[email protected]"
["DMM_nombre"]=>
string(13) "claudio "
["id_empresa"]=> /*aca me muestra la empresa pero una sola y deberia mostrarme dos ya que eso tengo como prueba en mi BD*/
string(1) "2"
["nombre_empresa"]=>
string(8) "libreria"
}

probe con foreach pero nada con
for($i=0;$i<count($_SESSION[idempresa]);$i++)
$SESSION[idempresa][$i]

pero nada me a funcionado, espero que ud me puedan ayudar, gracias.
  #2 (permalink)  
Antiguo 12/01/2012, 05:25
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Problemas para crear una $_Session

Dos cosas

1) Utiliza la herramienta de "Highlight" para el código, por favor.

2)

En
Código PHP:
while($empresa=mysql_fetch_array($query_emp))

{

$_SESSION['id_empresa']=$empresa[0];
$_SESSION['nombre_empresa']=$empresa[1];



Sobreescribes todo el rato la misma variable. Debería ser un array... algo así:
Código PHP:
while($empresa=mysql_fetch_array($query_emp))

{

$_SESSION['id_empresa'][]=$empresa[0];
$_SESSION['nombre_empresa'][]=$empresa[1];



Así, cada vez que guardas, añadirá un elemento al array ;)

Un saludo
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 12/01/2012, 06:07
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Problemas para crear una $_Session

Gracias por responder tan rápido, pero eso también lo hice y me da este error

[] operator not supported for strings.

pero al agregar este codigo

Código PHP:
Ver original
  1. while($empresa=mysql_fetch_array($query_emp))
  2.  //$empresa=mysql_fetch_array($query_emp);
  3.  {
  4. $_SESSION['id_empresa']=array();
  5. $_SESSION['nombre_empresa']=array();
  6. $_SESSION['id_empresa'][]=$empresa[0];
  7. $_SESSION['nombre_empresa'][]=$empresa[1];
  8.   }
  9. header("Location: inicio.php");
  10. exit();

me sigue mostrando esto en inicio
array(7) {
["DMM_auth"]=>
bool(true)
["DMM_usuario"]=>
string(5) "admin"
["idusuario"]=>
string(1) "1"
["DMM_email"]=>
string(18) "[email protected]"
["DMM_nombre"]=>
string(13) "Claudio Lagos"
["id_empresa"]=>
array(1) {
[0]=>
string(1) "2"
}
["nombre_empresa"]=>
array(1) {
[0]=>
string(8) "libreria"
}
}

como muestro o lo llamo desde la pagina de inicio con un foreach, por que lo he intentado y me dice que
Warning: Invalid argument supplied for foreach().

gracias.
  #4 (permalink)  
Antiguo 12/01/2012, 06:16
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Problemas para crear una $_Session

¿Y si haces esto?

Código PHP:
$_SESSION['id_empresa'] = array();
$_SESSION['nombre_empresa'] = array();
while(
$empresa=mysql_fetch_array($query_emp))

{

$_SESSION['id_empresa'][]=$empresa[0];
$_SESSION['nombre_empresa'][]=$empresa[1];



__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 12/01/2012, 06:29
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Problemas para crear una $_Session

me entrega esto:
Código PHP:
Ver original
  1. array(7) {
  2.   ["DMM_auth"]=>
  3.   bool(true)
  4.   ["DMM_usuario"]=>
  5.   string(5) "admin"
  6.   ["idusuario"]=>
  7.   string(1) "1"
  8.   ["DMM_email"]=>
  9.   string(18) "[email protected]"
  10.   ["DMM_nombre"]=>
  11.   string(13) "Claudio Lagos"
  12.   ["id_empresa"]=>
  13.   array(4) {
  14.     [0]=>
  15.     string(1) "1"
  16.     [1]=>
  17.     string(1) "2"
  18.     [2]=>
  19.     string(1) "1"
  20.     [3]=>
  21.     string(1) "2"
  22.   }
  23.   ["nombre_empresa"]=>
  24.   array(4) {
  25.     [0]=>
  26.     string(5) "lakes"
  27.     [1]=>
  28.     string(8) "libreria"
  29.     [2]=>
  30.     string(5) "lakes"
  31.     [3]=>
  32.     string(8) "libreria"
  33.   }
  34. }

y lo llame desde el inicio con un for asi :
Código PHP:
Ver original
  1. for ($i=0;$i<count($_SESSION['id_empresa']);$i++)
  2. {
  3.       echo $_SESSION['id_empresa'][$i];
  4. }
ahi me entrego id1 y id2.

gracias con esto he estado como 4 dias... solucionado
  #6 (permalink)  
Antiguo 12/01/2012, 07:13
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Problemas para crear una $_Session

consulta: como lo llamo de otra pagina : mira tengo un botton asi :
Código PHP:
Ver original
  1. for($i=0;$i<count($_SESSION['nombre_empresa']);$i++)
  2. {
  3. <a href="mod.php?seccion=Empresa"><button>$_SESSION['nombre_empresa'][$i]</button></a>
  4. }
aca me salen ejemplo:
botones:
INICIO HOLA

esta me lleva a una pagina donde dice Bienvenido a la adminsitracion
Código PHP:
Ver original
  1. $_SESSION['nombre_empresa'][$i]
pero aca no me aparece nada, como lo hago ya que igual debo saber el id de la empresa en las demás paginas donde trabajara el usuario.

gracias
  #7 (permalink)  
Antiguo 12/01/2012, 23:34
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Problemas para crear una $_Session

hola sigo con el problema dejare mi codigo para ver en que estoy fallando para saber cual es el id_empresa o nombre_empresa.

login:
Código PHP:
Ver original
  1. // recuperar datos del usuario
  2.                         session_start();
  3.                         $_SESSION['DMM_auth']=true;
  4.                         $_SESSION['DMM_usuario']=$usuario;
  5.                         $_SESSION['idusuario']=$d['id_usuario'];
  6.                         $_SESSION['DMM_email']=$d['email_usuario'];
  7.                         $_SESSION['DMM_nombre']=$d['nombre_usuario'];
  8.                         //$i=1;                  
  9.                         $sql="SELECT empresas.id_empresa, nombre_empresa FROM empresas, usuario_empresa
  10.                        where usuario_empresa.id_usuario='$_SESSION[idusuario]' AND empresas.id_empresa=usuario_empresa.id_empresa";
  11.                         conectarDB();
  12.                         $query_emp=mysql_query($sql) or die("error al mostra la empresa:".mysql_error());
  13.                         $_SESSION['id_empresa']=array();
  14.                         $_SESSION['nombre_empresa']=array();
  15.  
  16.                         while($empresa=mysql_fetch_array($query_emp))
  17.                         {
  18.                                 $_SESSION['id_empresa'][]=$empresa[0];
  19.                                 $_SESSION['nombre_empresa'][]=$empresa[1];
  20.  
  21.                         }
  22.                         //$i++;
  23.                         header("Location: inicio.php");
  24.                         exit();

en inicio lo llamo asi :

Código PHP:
Ver original
  1. <?php
  2. for ($i=0;$i<count($_SESSION['nombre_empresa']);$i++)
  3. {
  4. ?>
  5.     <td align="center"><a href="indexempresa.php?<?php echo $_SESSION['nombre_empresa'][$i]?>&amp;<? echo $_SESSION['id_empresa'][$i]?>">
  6.         <button style="width:100px;height:70px;"><?php echo $_SESSION['nombre_empresa'][$i]?></button></a>
  7.  
  8. <?
  9. echo "</td>";
  10. }
  11. ?>
esto me entrega los botones con los nombres de cada empresa, pero al enviarlo a a indexempresa.php no me muestra el nombre de esta empresa

asi se ve en la URL:indexempresa.php?nombre_empresa&1

indexempresa.php
esto es lo que tengo:
Código PHP:
Ver original
  1. <input name="id_empresa" value="<?php echo $_SESSION['id_empresa'][$i]?>" type="text">/*para que valor ID me entrega*/
  2. <span style="font-size:24px">Bienvenido a la administracion de la Empresa <b><? echo $GET['empresa'][$i]?></b></span>
todo esto no me muestra nada en que puedo estar fallando...

Etiquetas: registro, session, sql, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:54.