Cita:
Iniciado por abidibo
Eso no, porque lleno el array $where, i luego hago el implode entonces no hace falta poner un if o otra cosa...
Tienes razón, no era necesario.
He probado con lo nuevo pero no me funciona
Me mezcla los datos y no saca los productos que debe, pongo el código hasta ahora con lo nuevo:
Código PHP:
if($id_categoria or $id_marca){
// 1) Buscamos el id_relacion
$where = array();
if($id_categoria) $where[] = "id_categoria=$id_categoria";
if($id_marca) $where[] = "id_marca=$id_marca";
$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;
echo "Relaciones encontradas: ";
echo $num_rows_r;
echo "<br />";
// 2) Buscamos la marca, sección, categoria y productos
if($num_rows_r){
$res_query = array();
$results = $result_r->fetch_assoc();
// vamos a preparar el array
foreach($results as $k=>$v) {
$res_query[] = $v['id_relacion'];
}
$query_producto =
"
SELECT *
FROM productos
WHERE id_relacion IN (".implode(",",$res_query).")
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 = $v['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 />";
}
}
icarocu: no entiendo muy bien lo que propones, creo que no es lo que necesito, gracias.