Esto
<?php echo $not->get_descripcion_perfil_by_id_usuario($n([$i]["id_usuario"])); ?>
es lo que ya tenía desde un principio.
Creo que voy a explicarme de nuevo porque no me he explicado bien:
1.- Tengo estas tablas:
USUARIOS:
CREATE TABLE IF NOT EXISTS `usuarios` (
`id_usuario` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(100) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
`correo` varchar(100) NOT NULL,
`user` varchar(50) NOT NULL,
`pass_js` varchar(100) NOT NULL,
`pass_php` varchar(100) NOT NULL,
`fecha` date NOT NULL,
`estado` varchar(10) NOT NULL,
`id_perfil` int(11) NOT NULL,
PRIMARY KEY (`id_usuario`),
KEY `id_perfil` (`id_perfil`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=24 ;
Con este contenido:
INSERT INTO `usuarios` (`id_usuario`, `nombre`, `correo`, `user`, `pass_js`, `pass_php`, `fecha`, `estado`, `id_perfil`) VALUES
(1, 'Óscar', 'oscar.diaz.pedraza@gmail.com', 'peligro', 'E10ADC3949BA59ABBE56E057F20F883E', 'f59bd65f7edafb087a81d4dca06c4910', '2011-10-26', 'activo', 1);
PERFILES:
CREATE TABLE IF NOT EXISTS `perfiles` (
`id_perfil` int(11) NOT NULL AUTO_INCREMENT,
`perfil` varchar(100) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
`id_tipoperfil` int(8) NOT NULL,
PRIMARY KEY (`id_perfil`),
KEY `id_tipoperfil` (`id_tipoperfil`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=18 ;
Con este contenido:
INSERT INTO `perfiles` (`id_perfil`, `perfil`, `id_tipoperfil`) VALUES
(1, 'Administrador', 1),
(2, 'Administrador', 11),
(3, 'Administrador', 111),
(4, 'Administrador', 112),
(5, 'Administrador', 1112),
(6, 'Editor', 1),
(7, 'Editor', 11),
(8, 'Editor', 111),
(9, 'Editor', 112),
(10, 'Editor', 1112),
(11, 'Registrado', 1),
(12, 'Registrado', 11),
(13, 'Encuestador', 1),
(14, 'Encuestador', 11),
(15, 'Encuestador', 111),
(16, 'Encuestador', 112),
(17, 'Encuestador', 1112);
TIPO_PERFIL:
CREATE TABLE IF NOT EXISTS `tipo_perfil` (
`id_tipoperfil` int(8) NOT NULL,
`Descripcion` varchar(50) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
PRIMARY KEY (`id_tipoperfil`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
Con el contenido:
INSERT INTO `tipo_perfil` (`id_tipoperfil`, `Descripcion`) VALUES
(1, 'Leer'),
(11, 'Leer, modificar'),
(111, 'Leer, modificar, insertar'),
(112, 'Leer, modificar, eliminar'),
(1112, 'Leer, modificar, insertar y eliminar');
Es decir cada id_usuario tiene un perfil que puede ser: Administrador, Editor, Encuestador y/o registrado y cada perfil tiene un tipo perfil que son los del contenido de la tabla tipo_perfil.
Lo que quiero es listar a los usuarios en una tabla html y php y además que esté el perfil que tiene y la Descripción de este.
Bien para listar los usuarios en una tabla realizo una clase con 2 métodos, la cual la copio a continuación:
<?php
require_once("class/class.php");
class Usuarios
{
private $perfil;
private $usuario;
public function __construct()
{
$this->perfil=array();
$this->usuario=array();
$this->usuariodescripcion=array();
}
public function get_usuarios()
{
$sql="SELECT * FROM usuarios ORDER BY fecha DESC";
$res=mysql_query($sql,Conectar::con());
while ($reg=mysql_fetch_assoc($res))
{
$this->usuario[]=$reg;
}
return $this->usuario;
}
public function get_descripcion_perfil_by_id_usuario($id_usuario)
{
$sql="select tp.Descripcion from usuarios AS u, tipo_perfil AS tp, perfiles AS p where id_usuario='".strip_tags($id_usuario)."' AND u.id_perfil = p.id_perfil AND p.id_tipoperfil = tp.id_tipoperfil";
// $sql="select tp.Descripcion from usuarios AS u, tipo_perfil AS tp, perfiles AS p where id_usuario=" .strip_tags($id_usuario) . " AND u.id_perfil = p.id_perfil AND p.id_tipoperfil = tp.id_tipoperfil";
$res=mysql_query($sql,Conectar::con());
while ($reg=mysql_fetch_array($res))
{
$this->usuariodescripcion[]=$reg;
}
return $this->usuariodescripcion;
}
}
?>
Y el fichero dónde quiero listar a los usuarios es el siguiente:
<?php
require_once("class/class_usuarios.php");
if (isset($_SESSION["acceso"]) and isset($_SESSION["sesion_perfil"]))
{
//print_r($_SESSION);
$not=new Usuarios();
$cat=new Usuarios();
$t=new Trabajo();
$nom=$t->saluda_al_usuario($_SESSION["acceso"]);
$perfil=$t->get_perfil_por_id();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ver Usuarios</title>
<!--<style type="text/css">
a{font-family:Verdana; font-size:11px; text-decoration:none;}
</style>-->
<script type="text/javascript" src="js/prettyForms.js"></script>
<script language="javascript" type="text/javascript" src="js/funciones.js"></script>
<link rel="stylesheet" href="css/estilos_formularios.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/menu_admin.css" type="text/css" media="screen" />
</head>
<body onload="prettyForms()">
<div id="cabecera">
<h1>BackEnd de tu perfil</h1>
<div id="sesion">
<?php echo "Hola ".$nom[0]["nombre"]." bienvenid@";?> tu perfil es <?php echo $perfil[0]["perfil"];?>
<br/>
<a href="salir.php">Cerrar Sesión</a>
</div>
</div>
<div id="menu-horizontal">
<?php include("menuadmin.php");?>
</div>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<!--<a href="home.php"><img src="ima/flechaverdeizq.PNG" title="Volver atrás" border="0"/></a>-->
<!-- inicio contenido -->
<?php
switch($_GET{"m"})
{
case '1':
?>
<h2>El Usuario fue insertado correctamente</h2>
<?php
break;
case '2':
?>
<h2>El usuario fue editado correctamente</h2>
<?php
break;
case '3':
?>
<h2>El usuario fue eliminado correctamente</h2>
<?php
break;
}
?>
<h3>Usuarios</h3>
<table id="tabla" width="50%">
<tr style="font-weight:bold;">
<td valign="top" align="center">
<a href="userordenarnombre.php" title="Ordenar por Nombre" onclick="UsuariosOrdenarPorNombre();">Nombre</a>
</td>
<td valign="top" align="center">
<!--<a href="#" title="Ordenar por Categoría">Categoría</a>-->
<a href="userordenarcorreo.php" title="Ordenar por Correo" onclick="OrdenarPorCorreo();">Correo</a>
</td>
<td valign="top" align="center">
<a href="userordenaruser.php" title="Ordenar por Usuario" onclick="UsuariosOrdenarPorUsuario();">Usuario</a>
</td>
<td valign="top" align="center">
<a href="userordenarperfil.php" title="Ordenar por Perfil" onclick="UsuariosOrdenarPorPerfil();">Perfil</a>
</td>
<td valign="top" align="center">
<a href="userordenarfecha.php" title="Ordenar por Fecha" onclick="UsuariosOrdenarPorFecha();">Fecha de Registro</a>
</td>
<td valign="top" align="center">
<a href="userordenarestado.php" title="Ordenar por Estado" onclick="UsuariosOrdenarPorEstado();">Estado</a>
</td>
<td valign="top" align="center">
Editar
</td>
<td valign="top" align="center">
Eliminar
</td>
</tr>
<?php
$n=$not->get_usuarios();
for ($i=0;$i<sizeof($n);$i )
{
?>
<tr>
<td valign="top" align="left">
<?php echo $n[$i]["nombre"];?>
</td>
<td valign="top" align="left">
<?php echo $n[$i]["correo"];?>
</td>
<td valign="top" align="left">
<?php echo $n[$i]["user"];?>
</td>
<td valign="top" align="left">
<?php print_r($not->get_descripcion_perfil_by_id_usuario($n[$i]["id_usuario"]));?>
</td>
<td valign="top" align="left">
<?php echo $n[$i]["fecha"];?>
</td>
<td valign="top" align="left">
<?php echo $n[$i]["estado"];?>
</td>
<td valign="top" align="center">
<a href="edit_usuarios.php?id_usuario=<? echo $n[$i]["id_usuario"];?>" title="Editar <?php echo $n[$i]["user"];?>"><img src="ima/editar.png" border="0" /></a>
</td>
<td valign="top" align="center">
<a href="javascript:eliminar_usuario('eliminar_usuario.php?id_usuario=<? echo $n[$i]["id_usuario"];?>');" title="Eliminar <?php echo $p[$i]["user"];?>"><img src="ima/eliminar.png" border="0" /></ a>
</td>
</tr>
<?php
}
?>
</table>
<!--fin contenido -->
</body>
</html>
<?php
}else
{
echo "
<script type='text/javascript'>
alert('Debe loguearse primero para acceder a este contenido');
window.location='logreg.php';
</script>
";
}
?>
De momento estoy probando de imprimir la "Descripción" de los perfiles de los usuarios y el problema que tengo es que se imprime Array en vez de la descripción. En cambio la sql del método funciona sin problemas en phpmyadmin.
Espero haberme explicado mejor ahora.
Saludos!