Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/07/2009, 05:33
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
Registros ordenados alfabéticamente usando datos de distintas tablas

Hola a tod@s!

Es un poco largo, pero a ver si me podéis ayudar:

Estoy intentando que me salgan ordenados alfabéticamente varios productos según el criterio de búsqueda seleccionado por el usuario, os cuento lo que he hecho y lo que quiero que aparezca (más abajo está el código):

1) Tengo una QUERY con un while que me busca todos los id_relacion que coincidan con el criterio de búsqueda seleccionado por el usuario
2) Dentro de este while, existe otra QUERY con otro while que busca en la tabla productos todos los productos que coincidan con los id_relacion hallados anteriormente
3) Ahora quiero que me salgan todos los productos ordenados alfabéticamente sin tener en cuenta un primer orden de los id_relacion.
Lo que me sale es esto (por ejemplo):

(id_relacion = 1)
prod asa
prod boa
prod kilo

(id_relacion = 2)
prod aniv
prod tela
prod yoyo

Lo que quiero es esto:
(que junte ambos)

prod aniv
prod asa
prod boa
prod kilo
prod tela
prod yoyo

¿Se os ocurre cómo hacerlo? ¡Gracias!

Aquí dejo el código:



Código PHP:
    // 1) Buscamos la relación dependiendo de si la búsqueda es con id_categoria o con id_marca o con id_categoria e id_marca
    
        
if(!empty($id_categoria) && empty($id_marca)){
        
            
$conn db_connect();
            
$query_r =
            
"
            SELECT *
            FROM relaciones
            WHERE id_categoria=$id_categoria
            "
;    
            
            }
            
        else if    (!empty(
$id_marca) && empty($id_categoria)){
        
            
$conn db_connect();
            
$query_r =
            
"
            SELECT *
            FROM relaciones
            WHERE id_marca=$id_marca
            "
;    
            
            }
        
        else if    (!empty(
$id_marca) && !empty($id_categoria)){
        
            
$conn db_connect();
            
$query_r =
            
"
            SELECT *
            FROM relaciones
            WHERE id_marca=$id_marca
            AND id_categoria=$id_categoria
            "
;    
            
            }
    
    
        
$result_r = @$conn->query($query_r);
        
$num_rows_r $result_r->num_rows;
        
        
//echo "Relaciones encontradas: ";
        //echo $num_rows_r;
        //echo "<br />";
    
    
    // 2) Buscamos la marca, sección y categoría
    
        
if(!empty($num_rows_r)){
        
            echo 
"Ordenar por: <a href=\""$PHP_SELF "?" $_SERVER['QUERY_STRING'] . "&orden=precio\">Precio</a> | ";
            echo 
"<a href=\""$PHP_SELF "?" $_SERVER['QUERY_STRING'] . "&orden=nombre_producto\">Nombre</a><br />";
                    
            
            while(
$row_r $result_r->fetch_assoc())
                {                
                    
                    
$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
                    "
;
                        
                        
// Estos datos los uso luego 
                        
$result_mc = @$conn->query($query_mc);
                        
$row_mc $result_mc->fetch_assoc();
                        
                    
                    
// 2.1) Busco los productos dependiendo de si existe $frase o no
                    
                    
$conn db_connect();
                    if (!empty(
$frase)){
                                        
                            
$query_producto =
                            
"
                            SELECT *
                            FROM productos
                            WHERE MATCH (nombre_producto, texto_producto)
                            AGAINST ('$frase' IN BOOLEAN MODE)
                            AND id_relacion = $id_relacion
                            ORDER BY $orden ASC
                            "
;
                        }    
                    
                    else {    
                            
$query_producto =
                            
"
                            SELECT *
                            FROM productos
                            WHERE id_relacion = $id_relacion
                            ORDER BY $orden ASC
                            "
;
                        }
                
                    
                    
$result_producto=@$conn->query($query_producto);
                    
$num_rows $result_producto->num_rows;
    
                    
// 2.2) Saco el número total de productos y la sección y categoría a la que pertenecen
                    
                    
if ($num_rows!=0){
                    
                        echo 
"--\n<div id='guia'>\n";
                        echo 
$row_mc['nombre_seccion'];
                        echo 
" &gt; ";
                        echo 
$row_mc['nombre_categoria'];
                        echo 
"<br />\n<span class='prod_encontrados'>Total: ";
                        echo 
$num_rows;
                        echo 
"</span>";
                        echo 
"\n</div>\n";
                                
                    }    
            
                    
// 2.3) Saco los datos de los productos
    
                    
while($row_producto=$result_producto->fetch_assoc())
                        {
    
                        echo 
"\n<div id='producto'>\n";
                            echo 
"<div id='img_dcha'>";
                            echo 
"<img src='imagen_mini.php?valor=" $row_producto['id_producto'] .".jpg' />";
                            echo 
"</div>\n";    
                        
                        echo 
"<div id='capa_listado'>\n";    
                            echo 
"<div id='tit_producto'>";
                            echo 
"[" .$row_mc['nombre_marca']. "] ";
                            echo 
"<a href='busqueda.php?id_seccion=" $id_seccion "&id_categoria=" $id_categoria "&id_marca=" $id_marca "&id_producto=" $row_producto['id_producto'] .  "&id_relacion=" $id_relacion "&frase=" $frase "'>";
                            echo 
$row_producto['nombre_producto'];
                            echo 
"</a>";
                            echo 
"</div>\n";    
                            echo 
"Precio: ";
                            echo 
number_format($row_producto['precio'], 2',' '.');
                            echo 
" &euro;<br />";                                        
                        echo 
"\n</div>\n";
                        echo 
"</div>\n";                                    
                        }
                        
}    
//----- final de while($row_r = $result_r->fetch_assoc())


//---- FINAL DE if(!empty($num_rows_r))
        
            
else{
            echo 
"<br />No se han encontrado productos<br />";
            }