Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/03/2006, 09:19
Avatar de emiliodeg
emiliodeg
 
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 8 meses
Puntos: 55
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