Código PHP:
<?php
$consulta_1 = mysql_query("SELECT * FROM fondos where subcategoria_corto='$array[subcategoria_corto]' and visible='1' ORDER BY descargas DESC limit 20", $conexion);
$row_1 = mysql_num_rows($consulta_1);
if($row_1 >= 20) {
while($array_1 = mysql_fetch_array($consulta_1)) {
$carrusel .= '<a href="' . $url_script . $array_1[categoria_corto] . '/' . $array_1[subcategoria_corto] . '/' . $array_1[nombre_corto] . '/ver/' . $array_1[id] . '"> <img src="' . $url_script . 'vista-previa/' . $array_1[id] .'.jpg" width="116" height="86" alt="' . $array_1[nombre] . '" title="' . $array_1[nombre] . '" /></a>';
}
}
else
{
$consulta_2 = mysql_query("SELECT * FROM fondos where subcategoria_corto='$array[subcategoria_corto]' and visible='1' ORDER BY descargas DESC limit " . $row_1 ."", $conexion);
while($array_2 = mysql_fetch_array($consulta_2)) {
$carrusel .= '<a href="' . $url_script . $array_2[categoria_corto] . '/' . $array_2[subcategoria_corto] . '/' . $array_2[nombre_corto] . '/ver/' . $array_2[id] . '"> <img src="' . $url_script . 'vista-previa/' . $array_2[id] .'.jpg" width="116" height="86" alt="' . $array_2[nombre] . '" title="' . $array_2[nombre] . '" /></a>';
$not .= $array_2[id] . ",";
}
$trim_1 = trim ($not,",");
$limit_1 = 20 - $row_1; #numero de reusltados que faltan mostrar
$consulta_3 = mysql_query("SELECT * FROM fondos where categoria_corto='$array[categoria_corto]' and visible='1' and id NOT IN(" . $trim_1 . ") ORDER BY descargas DESC limit " . $limit_1 ."", $conexion);
$row_3 = mysql_num_rows($consulta_3); # numero de resultado encontrados por categoria
if($row_3 >= $limit_1) {
while($array_3 = mysql_fetch_array($consulta_3)) {
$carrusel .= '<a href="' . $url_script . $array_3[categoria_corto] . '/' . $array_3[subcategoria_corto] . '/' . $array_3[nombre_corto] . '/ver/' . $array_3[id] . '"> <img src="' . $url_script . 'vista-previa/' . $array_3[id] .'.jpg" width="116" height="86" alt="' . $array_3[nombre] . '" title="' . $array_3[nombre] . '" /></a>';
}
}
else
{
$consulta_4 = mysql_query("SELECT * FROM fondos where categoria_corto='$array[categoria_corto]' and visible='1' ORDER BY descargas DESC limit " . $row_3 ."", $conexion);
while($array_4 = mysql_fetch_array($consulta_4)) {
$carrusel .= '<a href="' . $url_script . $array_4[categoria_corto] . '/' . $array_4[subcategoria_corto] . '/' . $array_4[nombre_corto] . '/ver/' . $array_4[id] . '"> <img src="' . $url_script . 'vista-previa/' . $array_4[id] .'.jpg" width="116" height="86" alt="' . $array_4[nombre] . '" title="' . $array_4[nombre] . '" /></a>';
$not .= $array_4[id] . ","; # se agregan resultados mostrados por categoria
}
$trim_2 = trim ($not,",");
$limit_2 = 20 - ($row_1 + $row_3); #numero de reusltados que faltan mostrar
$consulta_5 = mysql_query("SELECT * FROM fondos where visible='1' and id NOT IN(" . $trim_2 . ") ORDER BY descargas DESC limit " . $limit_2 ."", $conexion);
while($array_5 = mysql_fetch_array($consulta_5)) {
$carrusel .= '<a href="' . $url_script . $array_5[categoria_corto] . '/' . $array_5[subcategoria_corto] . '/' . $array_5[nombre_corto] . '/ver/' . $array_5[id] . '"> <img src="' . $url_script . 'vista-previa/' . $array_5[id] .'.jpg" width="116" height="86" alt="' . $array_5[nombre] . '" title="' . $array_5[nombre] . '" /></a>';
}
}
}
?>
modificacion: me faltaba agregar que nose pueden repetir ninguna imagen, es por eso del uso del NOT IN.
nota: no hay ningun error de ejecucción, solo es una dudas, espero que me puedan ayudar