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
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
)
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 />";
}
}