Foros del Web » Programando para Internet » PHP »

Como puedo realizar esta simple conslta

Estas en el tema de Como puedo realizar esta simple conslta en el foro de PHP en Foros del Web. Os comento mi idea y mi problema. Tengo 3 tablas Users id nombre_user Archivo id_archivo id_user Tituloarchivo id_categoria Categoria id_cat categoria De aquí con una ...
  #1 (permalink)  
Antiguo 19/05/2012, 11:16
 
Fecha de Ingreso: enero-2002
Ubicación: Riells, Spain
Mensajes: 10
Antigüedad: 22 años, 2 meses
Puntos: 0
Pregunta Como puedo realizar esta simple conslta

Os comento mi idea y mi problema.

Tengo 3 tablas

Users
id
nombre_user

Archivo
id_archivo
id_user
Tituloarchivo
id_categoria

Categoria
id_cat
categoria

De aquí con una o dos consultas a MSQL consigo como sabéis sacar la categoría y el titulo del archivo. (hasta aquí es fácil para mi)

Pero lo normal seria esto

Titulo categoria

1 1
2 1
3 2
4 1

Pero lo que me esta comiendo la cabeza es que yo lo quiero así.


Categoría 1 (con echo row[])

1/2/4 (con echo row)

categoría 2
3


Espero haber podido explicarme bien.

Y donde me quedo es aqui
$codigo = $_SESSION["id"];

$consulta = "SELECT * FROM Users
JOIN panel ON Users.id = id_user
JOIN cat ON id_cat=cat_id
WHERE Users.id='$codigo'";

$query = mysql_query($consulta);

while ($row = mysql_fetch_assoc($query)) {
echo $row['categoria'] ;


}

Una ayuda que ya no me circula la sangre por el celebro
  #2 (permalink)  
Antiguo 19/05/2012, 12:24
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Como puedo realizar esta simple conslta

No se si entendí bien pero algo asi?

Código PHP:

$codigo 
$_SESSION["id"];

$consulta "SELECT * FROM Users
JOIN Archivo ON Users.id = Archivo.id_user
JOIN Categoria ON id_categoria=id_cat
WHERE Users.id='$codigo'"
;

$query mysql_query($consulta);

while (
$row mysql_fetch_assoc($query)) {

   
// Muestro nombre de la categoria
   
echo $row['categoria'];



   
$idcategoria $row['id_cat'] ; 

   
$sql_archivos "SELECT * FROM Archivo 
   WHERE id_categoria='$idcategoria'"
;

   
$query_archivos mysql_query($sql_archivos);

   
// Muestro los titulos de archivos para la categoria actual
   
while ($fila_archivo mysql_fetch_assoc($query_archivos)) {
          echo 
$fila_archivo['Tituloarchivo'] . "/";
   }


Tiene algún fallo pero creo que se puede entender bien.

Saludos
  #3 (permalink)  
Antiguo 19/05/2012, 14:04
 
Fecha de Ingreso: enero-2002
Ubicación: Riells, Spain
Mensajes: 10
Antigüedad: 22 años, 2 meses
Puntos: 0
Respuesta: Como puedo realizar esta simple conslta

La idea es esa

pero el resultado es el siguiente

categoría pepe archivos 123456

categoría luis archivos 123456

me repite los resultados en cada categoría y no me los cataloga bien.


y ya no se que hago mal...
  #4 (permalink)  
Antiguo 19/05/2012, 14:09
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Como puedo realizar esta simple conslta

¿Puedes poner el código que tienes hecho? A ver si detecto el fallo.
  #5 (permalink)  
Antiguo 19/05/2012, 14:36
 
Fecha de Ingreso: enero-2002
Ubicación: Riells, Spain
Mensajes: 10
Antigüedad: 22 años, 2 meses
Puntos: 0
Respuesta: Como puedo realizar esta simple conslta

$codigo = $_SESSION["id"];

$consulta = "SELECT * FROM Users
JOIN panel ON Users.id = panel.id_user
JOIN cat ON id_cat=cat_id
WHERE Users.id='$codigo'";

$query = mysql_query($consulta);

while ($row = mysql_fetch_assoc($query)) {

// Muestro nombre de la categoria
echo $row['categoria'];
?> <br /><?

$idcategoria = $row['cat_id'] ;

$sql_archivos = "SELECT * FROM panel
WHERE id_cat='$idcategoria'";

$query_archivos = mysql_query($sql_archivos);

// Muestro los titulos de archivos para la categoria actual
while ($fila_archivo = mysql_fetch_assoc($query_archivos)) {
echo $fila_archivo['titulo'] . "<br>";
}

}




las tablas son

User
id

Panel
id
id_user
titulo
id_cat

cat

cat_id
categoria


Y si no lo consigues igualmente te doy mil gracias por contestarme, ayudarme e intentarlo
  #6 (permalink)  
Antiguo 19/05/2012, 15:13
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Como puedo realizar esta simple conslta

Así debería funcionar.
El DISTINCT hace que no se repita la misma categoria.

Código PHP:
        $codigo $_SESSION["id"];
    
    
$consulta "SELECT DISTINCT(cat_id), categoria FROM Users
    JOIN panel ON Users.id = panel.id_user
    RIGHT JOIN cat ON id_cat=cat_id
    WHERE Users.id=$codigo"
;

    
$query mysql_query($consulta);
    
    while (
$row mysql_fetch_assoc($query)) {
    
        
// Muestro nombre de la categoria
        
echo $row['categoria'] . " <br/> ";
        
        
$idcategoria $row['cat_id'] ;
        
        
$sql_archivos "SELECT * FROM panel
        WHERE id_cat=$idcategoria AND id_user = $codigo"
;
    
        
$query_archivos mysql_query($sql_archivos);
    
        
// Muestro los titulos de archivos para la categoria actual
        
while ($fila_archivo mysql_fetch_assoc($query_archivos)) {
            echo 
$fila_archivo['titulo'] . "<br>";
        }
    
    } 

Saludos
  #7 (permalink)  
Antiguo 19/05/2012, 15:20
 
Fecha de Ingreso: enero-2002
Ubicación: Riells, Spain
Mensajes: 10
Antigüedad: 22 años, 2 meses
Puntos: 0
Respuesta: Como puedo realizar esta simple conslta

Eres el Amo

funciona genial muchísimas gracias

Etiquetas: Ninguno
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 09:54.