yo mas bien haria algo asi, pq como dice
dammian el rand() puede caer en una noticia q no exista
luego de obtener todas las noticias con mas de 500 lecutras haces
Código PHP:
$res=mysql_query("SELECT * FROM mensajes WHERE `lecturas` >= '500'");
while($row=mysql_fetch_assoc($res)){
$noticias[]=$row['id'];
}//con esto guardas todos los ids de las noticias disponibles a mostrar
$cant_not=count($noticias)-1;
if($cant_not>5)//tenemos q elegir solo 5
{
$vueltas=5
for($i=0;$i<$vueltas;$i++){
$repetida=FALSE;
$not_selec=$noticias[rand(0,$cant_not)];
for($j=0;$j<5;$j++){
if($not_fin[$i]==$not_selec)
$repetida=TRUE;
}//for $j
if(!$repetida)//si no esta repetida la guardamos
$not_fin[]=$not_selec;
if($repetida)
$vueltas++;
if(count($not_fin)>=5)
break;//si ya enemos nuestas 5 noticias salimos
}//for $i
//creamos un array con las sentencias validas
for($k=0;$k<5;$k++){
$sql[]="SELECT * FROM mensajes WHERE id='".$not_fin[$k]."' LIMIT 1";
}
}//if
else{
//creamos un array con las sentencias validas
for($k=0;$k<$cant_not;$k++)
$sql[]="SELECT * FROM mensajes WHERE id='".$noticias[$k]."' LIMIT 1";
}
:P nunca pense q fuera a quedar tan largo el codigo :P
creo q no tiene errores, y muy probalbmente se pueda hacer con algun metodo mas sencillo
saludos