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 " > ";
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 " €<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 />";
}