Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/05/2014, 06:04
fonsoesp
 
Fecha de Ingreso: agosto-2013
Mensajes: 7
Antigüedad: 10 años, 9 meses
Puntos: 0
Mostrar datos de tablas relacionadas con PHP

Buenos días.
Seguramente mi consulta es de principiante, aunque no he encontrado ningún post que me pueda ayudar.
La duda es bastante sencilla: Tengo varias tablas relacionadas entre sí en una base de datos. En un momento dado necesito hacer una consulta compleja sobre varias tablas para mostrar algo similar a esto:
<codigoHTML>
USUARIO#1
<codigoHTML>
Producto#1
<codigoHTML>
Item#1
<codigoHTML>
Item#2
<codigoHTML>
Producto#2
<codigoHTML>
Item#3
<codigoHTML>
USUARIO#2
<codigoHTML>
Producto#3
<codigoHTML>
Item#4
<codigoHTML>
Producto#4
<codigoHTML>

La consulta en cuestión es algo así:
Código:
SELECT Usuarios.usuario, Productos.producto, Items.item
FROM Usuarios INNER JOIN
   Productos ON Usuarios.codUsuario = Productos.codUsuario INNER JOIN
   Items ON Productos.codProducto = Items.codProducto;
Sé que el EJEMPLO no es exactamente así porque no tiene mucho sentido; la cuestión es que si diéramos ese código por válido al recoger los resultados de esa consulta no sabría darle ese formato:
Código:
while ($datos = mysql_fetch_array($resultado)){
//la primera pasada me devolvería un Array('USUARIO#1','Producto#1','Item#1')
//la segunda pasada me devolvería un Array('USUARIO#1','Producto#1','Item#2')
//la tercera pasada Array('USUARIO#1','Producto#2','Item#3')
}
Y el problema es que es demasiado complicado para meter el código HTML entre cada lectura de un registro comparando cada pasada con la anterior para saber si ese nuevo registro se encuentra en el mismo USUARIO o es un USUARIO nuevo, o si se trata del mismo PRODUCTO o es un PRODUCTO nuevo, etc...
Se me ocurre crear un array multidimensional y rellenarlo con TODOS los datos de la BD y después mediante bucles for o foreach ir escribiendo el código HTML (esa es la opción fácil, pero larga).
Pido si hay alguna otra manera en PHP que desconozca y pueda tratar los datos directamente de la base de datos.

GRACIAS!!!!