Ver Mensaje Individual
  #11 (permalink)  
Antiguo 26/07/2009, 03:23
Avatar de Anastasiaphp
Anastasiaphp
 
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Registros ordenados alfabéticamente usando datos de distintas tablas

Pues no consigo el resultado que quiero...

Me sigue ocurriendo que si elimino el primer bucle: solo salen los productos del primer id_relacion. Con el bucle, salen todos los productos que quiero pero no todos juntos, sino separados por cada id_relacion al que pertenecen. Con lo cual, estoy igual que al principio (eso sí, con el código más limpio )

Yo pienso que de alguna manera tengo que poder decir una vez que tengo el resultado de todos los productos, decirle que los reordene de nuevo, bien por precio, bien por orden alfabético, pero no sé cómo hacer esto...

Vuelvo a poner el código que tengo hasta ahora con tu ayuda, abidibo (he eliminado algunas partes que no son necesarias de momento para que sea más claro)

Gracias mil!!!

Código PHP:
if($id_categoria or $id_marca){
                    
    
// 1) Busco la relación dependiendo de si la búsqueda es con id_categoria o con id_marca o con id_categoria e id_marca
            
        
$where = array(); 
        if(
$id_categoria && !$id_marca$where[] = "id_categoria=$id_categoria"
        else if(
$id_marca && !$id_categoria$where[] = "id_marca=$id_marca"
        else if(
$id_categoria && $id_marca$where[] = "id_marca=$id_marca AND id_categoria=$id_categoria"
        
$where_string = (count($where)>0)? "WHERE ".implode(' AND '$where):""
        
        
$conn db_connect(); 
        
$query_r " SELECT id_relacion FROM relaciones $where_string";     
        
        
$result_r = @$conn->query($query_r); 
        
$num_rows_r $result_r->num_rows;             


    
// 2) Busco la marca, sección, categoria y productos
    
        
if($num_rows_r){
            while(
$row_r $result_r->fetch_assoc()){
                
//$row_r = $result_r->fetch_assoc(); // aqui tendrias que tener todos los id_relaciones selecionados con la primera query
        
                        
$query_producto =
                        
"
                        SELECT *
                        FROM productos
                        WHERE id_relacion IN ("
.implode(",",$row_r).")
                        ORDER BY $orden ASC
                        "
;
            
                    
$result_producto=@$conn->query($query_producto);
                    
$num_rows $result_producto->num_rows;
                    
                    
// 2.1) Extraigo la sección y categoría a la que pertenecen los productos
                    
                    
if ($num_rows!=0){
                    
                        
$id_relacion $row_r['id_relacion'];
                        
                        
$conn db_connect(); 
                        
$query_mc =
                        
"
                        SELECT *
                        FROM marcas, categorias, relaciones, secciones
                        WHERE secciones.id_seccion=$id_seccion
                        AND relaciones.id_relacion=$id_relacion
                        AND relaciones.id_marca=marcas.id_marca
                        AND relaciones.id_categoria=categorias.id_categoria
                        "
;
                        
                        
$result_mc = @$conn->query($query_mc);
                        
$row_mc $result_mc->fetch_assoc();
                                
                    }    
                    
            
                    
// 2.2) Extraigo los datos de los productos
    
                    
while($row_producto=$result_producto->fetch_assoc()){ 
                      
/** DATOS DE LOS PRODUCTOS **/            
                        
}
                        
                }
        }
        
            else{
            echo 
"<br />No se han encontrado productos<br />";
            }
    


Última edición por Anastasiaphp; 26/07/2009 a las 09:46 Razón: Error en el texto (he puesto en negrita lo cambiado)