Foros del Web » Programando para Internet » PHP »

PHP OO Inconveniente con variables en una clase

Estas en el tema de Inconveniente con variables en una clase en el foro de PHP en Foros del Web. Hola Que tal. Tengo el siguiente inconveniente en una Clase, que no muestra su contenido, explico: Estoy haciendo un scrip para Gestionar una Empresa, para ...
  #1 (permalink)  
Antiguo 05/07/2011, 17:38
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Inconveniente con variables en una clase

Hola Que tal.

Tengo el siguiente inconveniente en una Clase, que no muestra su contenido, explico:

Estoy haciendo un scrip para Gestionar una Empresa, para ello quiero que sea multilenguaje, por lo cual cree 2 carpetas, una en Inglés EN y otra en Español ES, dentro de esas carpetas hay un archivo mensajes.inc.php en la cual se crean las variables y sus contenidos.

Mientras leo estas variables de distintos archivos tales como index.php, backend.php, muestra_usuario.php, todo ok.

Por otro lado tengo clases en las cuales manejo los INSERT, UPDATE, INSERT y esas cosas, como también el acceso a usuarios, y sus privilegios. He aquí el inconveniente ya que debo leer las variables que se encuentran en el archivo mensajes.inc.php, que es el que produce los mensajes y textos del sistema, ya sean en español o en inglés.

Aquí el Código de la Clase Usuarios() y

Código:
public function verifica_acceso($usuario)
                {
                        $sql="SELECT * FROM ge_admin WHERE usuario='$usuario'";
                        $res=mysql_query($sql,Conectar::con());

                        if ($row=mysql_fetch_array($res))
                        {
                                if ($row['privilegio']==1)
                                {
                                        $privil=$row['privilegio'];
                                        $privil =  "$MSG_PERMISO_SOLOLEE";
                                        //echo $privil;
                                }
                                if ($row['privilegio']==2)
                                {
                                        $privil=$row['privilegio'];
                                        $privil = " $MSG_PERMISO_LEE_ESCRIBE ";
                                        //echo $privil;
                                }
                                if ($row['privilegio']==3)
                                {
                                        $privil=$row['privilegio'];
                                        $privil = " $MSG_PERMISO_LEE_ESCRIBE_MODIFICA  ";
                                        //echo $privil;
                                }
                                if ($row['privilegio']==9)
                                {
                                        $privil=$row['privilegio'];
                                        $privil = "$MSG_PERMISO_LEE_ESCRIBE_MODIFICA";
                                        //echo $privil;
                                }
                                 echo "<h3 id='izquierda' class='verde'>","$MSG_DATOS_INGRESO","</h3>";
                                 echo "<h3 id='izquierda' class='azul'>$MSG_NOMBRE_ES $row[nombre]</h3>";
                                 echo "<h3 id='izquierda' class='azul'>$MSG_SUS_PRIVILEGIOS <span class='rojo'>$privil </span></h3>";
                                 echo "<h3 id='izquierda' class='azul'>$MSG_USUARIO_ES $row[usuario]</h3>";
                        }
                 }
El asunto es que esas variables que se encuentran en NEGRITA no muestran su contenido en la página, si pongo el texto plano si funciona, como tambien funcionan las variables o campos de la tabla que son leídos y mostrados con $row que es el nombre del usuario.

Tambien comprobé que estuviera leyendo lo siguiente : require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php"); ya que incluyo el lenguaje seleccionado en una $_SESSION he puesto
Código:
echo "../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php";
y muestra bien la ruta ya sea EN o ES según haya seleccionado el usuario al entrar.

Por favor si alguien me puede decir que estoy haciendo mal, si debo leer las variables de otra forma, agradezco cualquier ayuda que me puedan brindar.

Un Cordial saludo desde Valparaíso - Chile
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #2 (permalink)  
Antiguo 06/07/2011, 00:23
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Inconveniente con variables en una clase

De qué manera recibe la clase estos valores?
Son variables globales?
Te recomiendo que el método que requiera estos valores los reciba como parámetro, de manera que si
$msg son los mensajes en EN, entonces tu método queda:

Código PHP:
Ver original
  1. public function verifica_acceso($usuario, $msg)

Espero que sirva, salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 06/07/2011, 07:28
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Gracias por la Respuesta.

La clase recibe las variables con una llamada al archivo de los mensajes que es el siguiente
Código PHP:
Ver original
  1. require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
donde $_SESSON[lenguaje] es la variable de idioma EN o ES según haya seleccionado el usuario al entrar.

En el metodo no puedo recibir $MSG ya que no todos los mensajes comienzan de esa forma, tengo otros que comienzan $TIT o $ERR, por eso requiero el mensajes.inc.php al principio del archivo usuario.class.php despues de $session_start().

Un Cordial Saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #4 (permalink)  
Antiguo 06/07/2011, 07:48
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Inconveniente con variables en una clase

Que hagas una inclusión no significa que los valores sean visibles desde dentro de la clase.
Si el archivo contiene variables, debes convertir estas variables en variables locales, por ejemplo
Código PHP:
Ver original
  1. include("file.php") //Contiene la variable $msg
  2. $this->msg = $msg:

Es un ejemplo habría que ver tu código. Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 06/07/2011, 08:07
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Gracias, aunque igual tengo una duda, me dices que debo poner $this->msg = $msg, el asunto es que las variables comienzan algunas con $MSG eso es solo el comienzo, son mas largas, y tambien hay otras que comienzan con $TIT, $LABEL y $OPT, que debiera hacer en esos casos tendr+ía que poner
Código PHP:
Ver original
  1. $this->msg = $MSG_LISTADO_AFP
  2. $this->msg = $MSG_PERMISO_SOLOLEE
  3. $this->msg = $TIT_PAG_AFP
  4. $this->msg = $LABEL_COL_CODIGO
y así continuar con cada una de las variables?

Un Cordial saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #6 (permalink)  
Antiguo 06/07/2011, 08:32
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Inconveniente con variables en una clase

Exacto, tambien puedes hacer algo así:

Código PHP:
Ver original
  1. $this->msg = require("file.php"),

Ahora $this->msg es un array que contiene todas las variables que hay en el archivo, para acceder a ellas utilizas

Código PHP:
Ver original
  1. $this->msg['MSG']; //etc...

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #7 (permalink)  
Antiguo 06/07/2011, 08:50
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Nuevamente Gracias.

Ahora voy entendiendo mejor, pero aún me falta un poquito más, y apelando a tu paciencia y biuena voluntad me explico, hice lo siguiente.
Como primera linea del metodo verifica_acceso(usuario) puse
Código PHP:
Ver original
  1. $this->msg = require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
despues donde correspondía puse algo como esto
Código PHP:
Ver original
  1. if ($row['privilegio']==9)
  2. {
  3.     $privil=$row['privilegio'];
  4.     $privil = $this->msg[$MSG_PERMISO_LEE_ESCRIBE_MODIFICA];
  5.     //echo $privil;
  6. }
  7.      echo "<h3 id='izquierda' class='verde'>$this->msg['$MSG_DATOS_INGRESO']</h3>";
  8.      echo "<h3 id='izquierda' class='azul'>$this->msg['$MSG_NOMBRE_ES'] $row[nombre]</h3>";
  9.      echo "<h3 id='izquierda' class='azul'>$this->msg['$MSG_SUS_PRIVILEGIOS'] <span class='rojo'>$privil </span></h3>";
  10.      echo "<h3 id='izquierda' class='azul'$this->msg['$MSG_USUARIO_ES'] $row[usuario]</h3>";

el resulta fue:
1['']
1[''] Claudio González
1['']

Un Cordial saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #8 (permalink)  
Antiguo 06/07/2011, 10:52
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Inconveniente con variables en una clase

ok, primero aquí estás sobreescribiendo la variable por lo que se pierde el valor original de $privi


Código PHP:
Ver original
  1. $privil=$row['privilegio']; //Aqui tiene un valor
  2. $privil = $this->msg[$MSG_PERMISO_LEE_ESCRIBE_MODIFICA]; //Ahora tiene otro

En segundo lugar, el acceso al array es incorrecto:

Código PHP:
Ver original
  1. echo "<h3 id='izquierda' class='verde'>$this->msg['$MSG_DATOS_INGRESO']</h3>";

Debe ser

echo "<h3 id='izquierda' class='verde'>{$this->msg[$MSG_DATOS_INGRESO]}</h3>";
Código PHP:
Ver original
  1.  

Verfiica que realmente $this->msg es un array o un string, eso depende de la estructura del archivo donde se guardan los mensajes. Utiliza las funciones gettype y var_dump para obtener el tipo y el contenido de la variable respectivamente.
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #9 (permalink)  
Antiguo 06/07/2011, 12:38
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

gettype($this->msg) = boolean
var_dump($this->msg) = bool(true)

Y el código quedo así
Código PHP:
Ver original
  1. //$privil=$row['privilegio'];
  2. $privil = $this->msg[$MSG_PERMISO_LEE_ESCRIBE_MODIFICA];
  3. //echo $privil;
  4. }
  5.     echo "<h3 id='izquierda' class='verde'>{$this->msg[$MSG_DATOS_INGRESO]}</h3>";
  6.     echo "<h3 id='izquierda' class='azul'>{$this->msg['$MSG_NOMBRE_ES']} $row[nombre]</h3>";
  7.     echo "<h3 id='izquierda' class='azul'>{$this->msg['$MSG_SUS_PRIVILEGIOS']}
  8.             <span class='rojo'>$privil </span></h3>";
  9.     echo "<h3 id='izquierda' class='azul'>{$this->msg['$MSG_USUARIO_ES']} $row[usuario]</h3>";

Sin Resultado, solo imprime lo nombres con $row[nombre]

Un Cordial Saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #10 (permalink)  
Antiguo 06/07/2011, 12:46
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Inconveniente con variables en una clase

Postea el contenido del archivo que contiene los mensajes.
__________________
Fere libenter homines, id quod volunt, credunt.
  #11 (permalink)  
Antiguo 06/07/2011, 13:01
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

ok

Código PHP:
Ver original
  1. <?php
  2. /***************************************************************************
  3.  *   copyright                            : © 2008, 2009 WeBid
  4.  *   sitio                                    : http://www.servpcweb.com/
  5.  *   Autor                                  : Claudio González Soto
  6.  *   Aplicación                           : Gestíon de Empresas
  7.  *   Archivo mensajes.inc.php   : Variables y Constantes del Sistema
  8.  *   Idioma                                : Español
  9.  ***************************************************************************/
  10.  
  11. /***************************************************************************
  12. * Mensajes : index.php
  13. * ubicación : /includes/
  14. ***************************************************************************/
  15.  
  16. $MSG_TIT_PAG_IND = "Acceso Gestión Empresas";
  17. $MSG_ACCESO_SIS  = "Acceso al Sistema";
  18. $MSG_COPYRIGHT = "Copyright &copy; 2010 www.servpcweb.com";
  19.  
  20. /***************************************************************************
  21. * Mensajes : acceso.php
  22. * ubicación : /includes/
  23. ***************************************************************************/
  24. $MSG_INGRESO_ADMIN = "Ingrese sus datos de Administrador";
  25. $MSG_LABEL_USU = "Usuario";
  26. $MSG_LABEL_PASS = "Clave";
  27. $MSG_LABEL_LANG = "Seleccione Idioma";
  28. $MSG_BOTON_ING = "Ingresar";
  29.  
  30. /**************************************************************************
  31. * Mensajes : admin-ini.php
  32. * Ubicación : /includes/
  33. **************************************************************************/
  34. $MSG_TIT_PAG_ADMIN_INI = "Acceso restringido Administradores sistema Gestion Empresa";
  35. $MSG_VERIFICANDO_DATOS = "Verificando sus Datos";
  36. $MSG_ING_DATOS_SOLICITADOS = "Por favor ingrese los datos solicitados";
  37. $MSG_USUARIO_NOEXISTE = "'El usuario ".$_POST["nickadmin"]." No existe como Administrador'";
  38. $MSG_USUARIO_NOCOINCIDE = "'El usuario ".$_POST["nickadmin"]." y la clave ".$_POST["passadmin"]." No coinciden'";
  39.  
  40. /**************************************************************************
  41. * Mensajes : backend.php
  42. * Ubicación : /includes/
  43. **************************************************************************/
  44. $MSG_TIT_PAG_BACKEND = "Gestion Empresa Inicio";
  45. $MSG_TIT_SISTEMA_GEMPRESA = "Sistema Gestion Empresa";
  46. $MSG_USUARIO_LOGUEADO = "'Usted no esta Identificado'";
  47.  
  48. /**************************************************************************
  49. * Mensajes : menu.php
  50. * Ubicación : /includes/
  51. **************************************************************************/
  52. $TITULO_MENU = "Menú";
  53. $OPT_MENU_AFP = "Fondos de Pensión";
  54. $OPT_MENU_CARGOS ="Cargos";
  55. $OPT_MENU_EMPRESAS ="Empresas";
  56. $OPT_MENU_ITEMS = "Items";
  57. $OPT_MENU_INDICADORES = "Indicadores";
  58. $OPT_MENU_MOVTOS ="Movimientos";
  59. $OPT_MENU_SALUD = "Fondo de Salud";
  60. $OPT_MENU_EMPLEADOS = "Empeados";
  61. $OPT_MENU_SALIR = "Salir";
  62.  
  63. $TITULO_MENU_ADMIN = "Administración";
  64. $OPT_MENU_ADM_USU = "Usuarios";
  65. $OPT_MENU_ADM_ACT_MES = "Activa Mes";
  66. $OPT_MENU_ADM_CRR_MES = "Cierra Mes";
  67.  
  68. /**************************************************************************
  69. * Mensajes : usuario.class.php
  70. * Ubicación : /clases/
  71. **************************************************************************/
  72. $MSG_NOREG_USU = "No existe Registro de Usuarios";
  73. $MSG_ENCONTRO_USU = "Se encontró ";
  74. $USUARIO ="Usuario(s)";
  75.  
  76. /* Metodo : verifica_acceso()*/
  77. $MSG_PERMISO_SOLOLEE =" Permiso de Solo Lectura ";
  78. $MSG_PERMISO_LEE_ESCRIBE =" Permisos de Lectura y Escritura ";
  79. $MSG_PERMISO_LEE_ESCRIBE_MODIFICA =" Permisos de Lectura, Escritura y Modificación ";
  80. $MSG_DATOS_INGRESO =" Usted ha ingresado al sistema con los siguiente  Datos : ";
  81. $MSG_NOMBRE_ES =" Su Nombre es : ";
  82. $MSG_SUS_PRIVILEGIOS =" Sus Privilegios son : ";
  83. $MSG_USUARIO_ES =" Su Usuario es : ";
  84.  
  85. /**************************************************************************
  86. * Mensajes : muestra_afp.php
  87. * Ubicación : /includes/
  88. **************************************************************************/
  89. $TIT_PAG_AFP ="Datos Administradoras Fondos de Pensiones";
  90. $MSG_LISTADO_AFP ="Listado Administradoras Fondos de Pensiones";
  91. $LABEL_COL_CODIGO ="Código";
  92. $LABEL_COL_AFP ="AFP";
  93. $LABEL_COL_EDIT ="Edit";
  94. $LABEL_COL_DEL ="Del";
  95. $TIT_IMG_EDIT_AFP ="Editar Afps";
  96. $TIT_IMG_DEL_AFP ="Eliminar Afps"
  97. ?>
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #12 (permalink)  
Antiguo 06/07/2011, 13:54
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Inconveniente con variables en una clase

ok, empecemos otra vez:
Objetivo: que la clase pueda acceder a los mensajes.
Problema: los mensajes están guardados cada uno en una variable.
Solución: guardar todos los mensajes en un array para poder manejarlos en bloque.
=> modifica la estructura de tu archivo de mensajes para que te quede así:

Código PHP:
Ver original
  1. $msg = array(); //inicialización
  2. $msg['MSG_TIT_PAG_IND'] = "Acceso Gestión Empresas";
  3. $msg['MSG_ACCESO_SIS '] = "Acceso al Sistema";
  4. $msg['MSG_COPYRIGHT'] = "Copyright &copy; 2010 www.servpcweb.com"; //etc...

En tu clase

Código PHP:
Ver original
  1. requiere("mensajes.php");
  2. $this->msg = $msg; //Ahora this->msg tiene el contenido de $msg, o sea, todos los mensajes

Accede a los mensajes así:

Código PHP:
Ver original
  1. echo $this->msg['MSG_TIT_PAG_IND']; //Esto equivale a "Acceso Gestión Empresas";

Ahora puedes manejar los mensajes de a uno o en bloque.
Personalmente creo que la clase no debe hacer la inclusión sino que eso se debe hacer desde fuera de la clase. La clase debería recibir el array $msg como parámetro, pero ese es otro tema. Primero que funcione, después ya verás lo que haces.

Otra cosa: ya puedes empezar a utilizar la sintaxis {} para expandir variables, es más claro y más práctico: en lugar de
Código PHP:
Ver original
  1. $msg['MSG_USUARIO_NOCOINCIDE'] = "El usuario ".$_POST["nickadmin"]." y la clave ".$_POST["passadmin"]." No coincide
utiliza:
Código PHP:
Ver original
  1. $msg['MSG_USUARIO_NOCOINCIDE'] = "El usuario {$_POST["nickadmin"]} y la clave {$_POST["passadmin"]} No coinciden
Que te diviertas. Me voy a dormir.
__________________
Fere libenter homines, id quod volunt, credunt.
  #13 (permalink)  
Antiguo 06/07/2011, 14:26
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Muchas Gracias.

Un Cordial Saludo desde Valparaíso - Chile
Que tengas una vida saludable
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com

Última edición por claudio_hbl; 06/07/2011 a las 16:46
  #14 (permalink)  
Antiguo 06/07/2011, 18:22
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Hola que tal

Disculpa las molestias, pero sabes que igual no funciona, el Método verifica_usuario() quedó de la siguiente forma:
Código PHP:
Ver original
  1. <?php
  2.         session_start();
  3.         //print_r($_SESSION);
  4.         include_once('../clases/conexion.class.php');
  5.         require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
  6.         //echo "../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php";
  7.         class Usuario
  8.         {
  9.                 private $admin;
  10.                 //private $msg;
  11.  
  12.                 public function __construct()
  13.                 {
  14.                         $this->admin=array();
  15.                 }
  16.  
  17.                
  18.                 public function verifica_acceso($usuario)
  19.                 {
  20.                         $this->msg = require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
  21.                         $sql="SELECT * FROM ge_admin WHERE usuario='$usuario'";
  22.                         $res=mysql_query($sql,Conectar::con());
  23.  
  24.                         if ($row=mysql_fetch_array($res))
  25.                         {
  26.                                 if ($row['privilegio']==1)
  27.                                 {
  28.                                         //$privil=$row['privilegio'];
  29.                                         $privil=$this->msg['MSG_PERMISO_SOLOLEE'];
  30.                                         //echo $privil;
  31.                                 }
  32.                                 if ($row['privilegio']==2)
  33.                                 {
  34.                                         //$privil=$row['privilegio'];
  35.                                         $privil=$this->msg['MSG_PERMISO_LEE_ESCRIBE'];
  36.                                         //echo $privil;
  37.                                 }
  38.                                 if ($row['privilegio']==3)
  39.                                 {
  40.                                         //$privil=$row['privilegio'];
  41.                                         $privil=$this->msg['MSG_PERMISO_LEE_ESCRIBE_MODIFICA'];
  42.                                         //echo $privil;
  43.                                 }
  44.                                 if ($row['privilegio']==9)
  45.                                 {
  46.                                         //$privil=$row['privilegio'];
  47.                                         $privil=$this->msg['MSG_PERMISO_LEE_ESCRIBE_MODIFICA'];
  48.                                         //echo "$privil";
  49.                                         //echo var_dump($this->msg);
  50.                                         //echo gettype($this->msg);
  51.                                 }
  52.                                  echo "<h3 id='izquierda' class='verde'>",$this->msg['MSG_DATOS_INGRESO'],"</h3>";
  53.                                  echo "<h3 id='izquierda' class='azul'>",$this->msg['MSG_NOMBRE_ES'], $row['nombre'],"</h3>";
  54.                                  echo "<h3 id='izquierda' class='azul'>",$this->msg['MSG_SUS_PRIVILEGIOS'],"<span class='rojo'>",$privil,"</span>","</h3>";
  55.                                  echo "<h3 id='izquierda' class='azul'>",$this->msg['MSG_USUARIO_ES'], $row['usuario'],"</h3>";
  56.                         }
  57.                  }
  58.  
  59.                
  60.         }
  61. ?>

Solo imprime las variables nombre y usuario que son las extraídas de la tabla con $row['nombre'] y $row['usuario']

Un Cordial saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #15 (permalink)  
Antiguo 07/07/2011, 11:14
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Inconveniente con variables en una clase

Tiene que quedar así:

Código PHP:
Ver original
  1. ...
  2. require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
  3. $this->msg = $msg; //$msg es la variable definida en el archivo mensajes.inc.php
  4. ...
__________________
Fere libenter homines, id quod volunt, credunt.
  #16 (permalink)  
Antiguo 07/07/2011, 12:20
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Gracias

Quedó así el Método verifica_acceso()

Código PHP:
Ver original
  1. public function verifica_acceso($usuario)
  2.                 {
  3.                         require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
  4.                         $this->msg = $msg;
  5.                         $sql="SELECT * FROM ge_admin WHERE usuario='$usuario'";
  6.                         $res=mysql_query($sql,Conectar::con());
  7.  
  8.                         if ($row=mysql_fetch_array($res))
  9.                         {
  10.                                 if ($row['privilegio']==1)
  11.                                 {
  12.                                         //$privil=$row['privilegio'];
  13.                                         $privil=$this->msg['MSG_PERMISO_SOLOLEE'];
  14.                                         //echo $privil;
  15.                                 }
  16.                                 if ($row['privilegio']==2)
  17.                                 {
  18.                                         //$privil=$row['privilegio'];
  19.                                         $privil=$this->msg['MSG_PERMISO_LEE_ESCRIBE'];
  20.                                         //echo $privil;
  21.                                 }
  22.                                 if ($row['privilegio']==3)
  23.                                 {
  24.                                         //$privil=$row['privilegio'];
  25.                                         $privil=$this->msg['MSG_PERMISO_LEE_ESCRIBE_MODIFICA'];
  26.                                         //echo $privil;
  27.                                 }
  28.                                 if ($row['privilegio']==9)
  29.                                 {
  30.                                         //$privil=$row['privilegio'];
  31.                                         $privil=$this->msg['MSG_PERMISO_LEE_ESCRIBE_MODIFICA'];
  32.                                         //echo "$privil";
  33.                                         //echo var_dump($this->msg);
  34.                                         //echo gettype($this->msg);
  35.                                 }
  36.                                  echo "<h3 id='izquierda' class='verde'>",$this->msg['MSG_DATOS_INGRESO'],"</h3>";
  37.                                  echo "<h3 id='izquierda' class='azul'>",$this->msg['MSG_NOMBRE_ES'], $row['nombre'],"</h3>";
  38.                                  echo "<h3 id='izquierda' class='azul'>",$this->msg['MSG_SUS_PRIVILEGIOS'],"<span class='rojo'>",$privil,"</span>","</h3>";
  39.                                  echo "<h3 id='izquierda' class='azul'>",$this->msg['MSG_USUARIO_ES'], $row['usuario'],"</h3>";
  40.                         }
  41.                  }

y no produce ningún cambio

Un Cordial Saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #17 (permalink)  
Antiguo 08/07/2011, 00:08
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Inconveniente con variables en una clase

Costó pero salió. Ahora ya sabes cómo hacerlo, salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #18 (permalink)  
Antiguo 08/07/2011, 06:53
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Hola que tal

Disculpa de nuevo, parece que no me expliqué bien.

La verdad es que igual no funciona, no muestra los mensajes.

Un Cordial Saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #19 (permalink)  
Antiguo 08/07/2011, 07:54
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

repara2, sabes, descubrí lo siguiente:

Resulta que en ningún momento el método esta leyendo el archivo de mensajes, hice lo siguiente, dentro del método, puse un echo con la ruta y no muestra nada.

Código PHP:
Ver original
  1. require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
  2. echo "../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php";

y o muestra la ruta, osea no produce ningún mensaje como debiera esperarse, sin embargo si esas mismas lineas la pongo al principio del archivo, antes de declarar la class usuarios {}, si me muestra el mensaje con la ruta del archivo mensajes: arriba, lo primero que muestra antes de la interface es ../lenguaje/ES/mensajes.inc.php.

Por lo que asumo que dentro del método no lo esta leyendo, y por ende, no muestra los contenidos de la variable $msg, como se esperaba.

Que habría que hacer?

Un Cordial Saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #20 (permalink)  
Antiguo 08/07/2011, 08:11
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Inconveniente con variables en una clase

Antes de hacer el require e instanciar las variables en el atributo, has

Código PHP:
Ver original
  1. $this->msg=array();

Después de lo ya mencionado intenta hacer un

Código PHP:
Ver original
  1. var_dump($this->msg); // O en su defecto, ejecutar un
  2. print_r($this->msg);

Te mostrará el arreglo obtenido, si da un arreglo vacío no se cargaron correctamente, en este caso asumiría que es un problema en el require, si te resulta un arreglo con variables cargadas, verifica si estas están bien declaradas dentro del archivo.

Saludos. Dios te bendiga.

Última edición por Carlmycol; 08/07/2011 a las 08:17 Razón: Super error ortográfico! xD
  #21 (permalink)  
Antiguo 08/07/2011, 08:42
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Gracias Carlmycol por la respuesta.

Hice lo siguiente: puse $this->msg=array(); como primera linea del método verifica_acceso() quedando de la siguiente forma:
Código PHP:
Ver original
  1. $this->msg=array();
  2. require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
  3. $this->msg = $msg;
  4. $sql="SELECT * FROM ge_admin WHERE usuario='$usuario'";
  5. $res=mysql_query($sql,Conectar::con());
  6. echo var_dump($this->msg);
  7. //echo gettype($this->msg);
  8. print_r($this->msg);

var_dump($this->msg) mostró NULL y

Tambien prové poniendo $this->msg=array() en el método __construct()
print_r($this->msg) no mostró resultado, osea vacío
Código PHP:
Ver original
  1. public function __construct()
  2.                 {
  3.                         $this->admin=array();
  4.                         $this->msg=array();
  5.                 }

Un Cordial Saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #22 (permalink)  
Antiguo 08/07/2011, 08:57
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Inconveniente con variables en una clase

No se si seguirá así, sin embargo, en tu código de arriba tienes "private $msg" dentro de comentarios, verifica si sigue dentro de comentarios.

Saludos. Dios te bendiga.
  #23 (permalink)  
Antiguo 08/07/2011, 09:38
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

si estaba comentada, la active y no pasa nada, sigue todo igual
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com
  #24 (permalink)  
Antiguo 08/07/2011, 14:20
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 18 años
Puntos: 0
Respuesta: Inconveniente con variables en una clase

Despues de los últimos cambios efectuados el método verifica:acceso(), quedó de la siguiente forma:
Código PHP:
Ver original
  1. public function verifica_acceso($usuario)
  2.                 {
  3.                         //$this->msg=array();
  4.                         require_once("../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php");
  5.                         echo "../lenguaje/$_SESSION[lenguaje]/mensajes.inc.php";
  6.                         $sql="SELECT * FROM ge_admin WHERE usuario='$usuario'";
  7.                         $res=mysql_query($sql,Conectar::con());
  8.                         //echo var_dump($this->msg);
  9.                         //echo gettype($this->msg);
  10.                         //print_r($this->msg);
  11.                         if ($row=mysql_fetch_array($res))
  12.                         {
  13.                                 if ($row['privilegio']==1)
  14.                                 {
  15.                                         $privil=$row['privilegio'];
  16.                                         $privil=$this->msg['MSG_PERMISO_SOLOLEE'];
  17.                                         //echo $privil;
  18.                                 }
  19.                                 if ($row['privilegio']==2)
  20.                                 {
  21.                                         //$privil=$row['privilegio'];
  22.                                         $privil=$msg['MSG_PERMISO_LEE_ESCRIBE'];
  23.                                         //echo $privil;
  24.                                 }
  25.                                 if ($row['privilegio']==3)
  26.                                 {
  27.                                         //$privil=$row['privilegio'];
  28.                                         $privil=$this->msg['MSG_PERMISO_LEE_ESCRIBE_MODIFICA'];
  29.                                         //echo $privil;
  30.                                 }
  31.                                 if ($row['privilegio']==9)
  32.                                 {
  33.                                         $privil=$row['privilegio'];
  34.                                         $privil=$this->msg['MSG_PERMISO_LEE_ESCRIBE_MODIFICA'];
  35.                                         //echo $privil;
  36.                                         //echo var_dump($this->msg);
  37.                                         //echo gettype($this->msg);
  38.                                         //print_r($this->msg);
  39.                                 }
  40.                                  echo "<h3 id='izquierda' class='verde'>$this->msg['MSG_DATOS_INGRESO']</h3>";
  41.                                  echo "<h3 id='izquierda' class='azul'>$this->msg['MSG_NOMBRE_ES']</h3>";
  42.                                  echo  $row['nombre'];
  43.                                  echo "<h3 id='izquierda' class='azul'>$this->msg['MSG_SUS_PRIVILEGIOS']<span class='rojo'>$privil</span></h3>";
  44.                                  echo "<h3 id='izquierda' class='azul'>$this->msg['MSG_USUARIO_ES']</h3>";
  45.                                  echo $row['usuario'];
  46.                         }
  47.                  }
y lo que muestra en pantalla lo inserto con una imagen


ahi se puede apreciar que solo imprime la variabe, y no su contenido

Un Cordial Saludo
__________________
Un Cordial Saludo
Claudio González Soto
Negocios Online
http;//www.servpcweb.com

Etiquetas: clase, inconveniente, tabla, 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:41.