Ir al contenido


Foto

Problema con la impresión de una query


  • Por favor identifícate para responder
22 respuestas en este tema

#21 armonick

armonick

    Member

  • Miembros
  • PipPip
  • 41 mensajes

Escrito 20 enero 2012 - 07:00

Hola César,

He realizado lo que has hecho, pero sigue sin funcionar.
id_usuario lo recojo con el método:


public function get_usuarios()


fíjate:

Antes del for lo llamo
$n=$not->get_usuarios();
y después lo llamo aquí pasándoselo por referencia
<?php echo $not->get_descripcion_perfil_by_id_usuario($n[$i]["id_usuario"]);?> 



<?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 echo $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>



Alomejor esto no se puede hacer, no sé, pero la locura va in-creciendo jeje
  • 0

#22 armonick

armonick

    Member

  • Miembros
  • PipPip
  • 41 mensajes

Escrito 21 enero 2012 - 11:20

Anoche estuve pensando sobre el problema que tengo y os explico:

No sé si tengo bien lo que he realizado por lo siguiente:

1.-Llamo a la función
$n=$not->get_usuarios();
$n se convierte en un array que contiene los campos de los usuarios de la base de datos Usuarios.

2.-Realizo un for, para imprimir los datos de esos usuarios:
 for ($i=0;$i<sizeof($n);$i  ) 


3.- (aquí creo que tengo el error) El campo Descripción que lo obtengo a partir de otro método:
get_descripcion_perfil_by_id_usuario(id_usuario)
y retorna una variable también de tipo array con los registros de Descripción. La pregunta es: Es correcto que le pase el id_usuario por referencia llamando a la función get->usuarios de la siguiente manera:
<?php echo $not->get_descripcion_perfil_by_id_usuario($n[$i]["id_usuario"]);?> 
teniendo en cuenta que le estoy pasando por referencia el id_usuario como si fuera un array,

No sé si me he explicado bien, es que estoy ya dándome cabezazos en la pared.  :cry:
  • 0

#23 armonick

armonick

    Member

  • Miembros
  • PipPip
  • 41 mensajes

Escrito 22 enero 2012 - 12:26

Hola,

Voy a plantear el problema de otra manera que alomejor es más sencillo y alguien con más conocimiento que yo podrá ayudarme. La explicación es un poco larga pero si tenéis paciencia de leerla queda más clara y posiblemente lo entenderéis mejor y así posiblemente también me podáis ayudar.

Gracias de antemano

Comienzo:
 
Tengo estas 3 tablas:

[table]
[tr]
[td]USUARIOS[/td]
[/tr]
[tr]
[td]id_usuario(primary Key)[/td]
[/tr]
[tr]
[td]nombre[/td]
[/tr]
[tr]
[td]correo[/td]
[/tr]
[tr]
[td]user[/td]
[/tr]
[tr]
[td]fecha[/td]
[/tr]
[tr]
[td]estado[/td]
[/tr]
[tr]
[td]id_perfil[/td]
[/tr]
[/table]
 
[table]
[tr]
[td]PERFILES[/td]
[/tr]
[tr]
[td]id_perfil(primary Key)[/td]
[/tr]
[tr]
[td]perfil[/td]
[/tr]
[tr]
[td]id_tipoperfil[/td]
[/tr]
[/table]
 
[table]
[tr]
[td]TIPO_PERFIL[/td]
[/tr]
[tr]
[td]id_tipoperfil(primary Key)[/td]
[/tr]
[tr]
[td]Descripcion[/td]
[/tr]

[/table]
 


Lo que necesito es mostrar todos los usuarios con sus campos, y ademas debería de mostrar su perfil y la Descripción del tipo perfil. Para que quede más claro muestro el contenido de las tablas PERFILES y TIPO_PERFIL que es un contenido no dinámico y siempre será el mismo:

Contenido PERFILES:

id_perfil, perfil, id_tipoperfil)
(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);
 

Contenido TIPO_PERFIL:

(id_tipoperfil, Descripcion)
(1, 'Leer'),
(11, 'Leer, modificar'),
(111, 'Leer, modificar, insertar'),
(112, 'Leer, modificar, eliminar'),
(1112, 'Leer, modificar, insertar y eliminar');
 


Como habréis podido observar; USUARIOS se relaciona con PERFILES a través del campo id_perfil y PERFILES se relaciona con TIPO_PERFIL a través del capo id_tipoperfil.
Las relaciones serían: USUARIOS (id_perfil) --> PERFILES (id_perfil, id_tipoperfil) --> TIPO_PERFIL(id_tipoperfil)
 

Bien, explicado esto muestro como debería ser el resultado (sólo pongo un registro para resumir, es decir como si hubiera sólo 1 usuario):

Nombre        Correo            User        Fecha        Estado        Perfil            Descripción
Pepito        pepito@pepe.com  pepe    25/12/2011    activo    administrador  Leer,modificar,eliminar

En este caso si seguimos la relación anterior:

Las relaciones serían: USUARIOS (id_perfil=4) --> PERFILES (id_perfil=4, id_tipoperfil=112) --> TIPO_PERFIL(id_tipoperfil=112)
 

Hasta aquí he explicado lo que deseo mostrar y como tengo los datos estructurados en las tablas. Ahora os voy a indicar lo que hago bien y lo que no hago bien y por tanto necesito ayuda:

1.: Mostrar los datos de la tabla USUARIOS
En este punto no tengo ningún problema.
Tengo una clase Usuarios en la cual hay un método
get_usuarios()
que hace la llamada a la base de datos.
Copio el método:

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;
 
  }


Copio trozo de código desde el cual llamo a esté método y aparte muestro los datos de este array:


<?php
$n=$not->get_usuarios(); //Aqui llamo al método



for ($i=0;$i<sizeof($n);$i  ) //Realizo un for para recorrer el array


{
?>
<tr>
<td valign="top" align="left">
<?php echo $n[$i]["nombre"];?> //muestro campo nombre
</td>
<td valign="top" align="left">
<?php echo $n[$i]["correo"];?>//muestro campo correo
</td>
<td valign="top" align="left">
<?php echo $n[$i]["user"];?>//muestro campo user
</td>
<td valign="top" align="left">
<?php echo $not->get_descripcion_perfil_by_id_usuario($n[$i]["id_usuario"]);?>
</td>
<td valign="top" align="left">
<?php echo $n[$i]["fecha"];?>//muestro campo fecha
</td>
<td valign="top" align="left">
<?php echo $n[$i]["estado"];?>//muestro campo 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>


Hasta aquí todo correcto, ahora vamos al paso 2:

2.: Mostrar los datos Descripcion de la tabla TIPO_PERFIL y campoperfil de la tabla PERFILES

He aquí mi problema, no tengo ni idea de hacer esto.

Yo lo he hecho de la siguiente manera:
Tengo un método al que le paso por referencia un id_usuario y que me devuelve la descripción que le corresponda según la tabla TIPO_PERFIL.

El método es el siguiente:

  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";
      $res=mysql_query($sql,Conectar::con());
      while ($reg=mysql_fetch_array($res))
     
      {
        $this->usuariodescripcion[]=$reg;
      }
        return $this->usuariodescripcion;
  }
}


El trozo de código, dentro de la tabla que he apuntado antes, dónde llamo a ese método es:


<td valign="top" align="left">
<?php echo $not->get_descripcion_perfil_by_id_usuario($n[$i]["id_usuario"]);?>
</td>


Bien, pues esto no funciona, no sé porqué. El resultado que me dá esto es "Array". La sql funciona, ya que la he puesto en PhPMyadmin (lógicamente sustituyendo '".strip_tags($id_usuario)."' por un '1', le pongo el id usuario 1).

Espero que la explicación haya sido clara y alguien me pueda decir que puedo hacer.

Gracias a tod@s.
  • 0




IP.Board spam blocked by CleanTalk.