Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/02/2007, 14:28
atribis
 
Fecha de Ingreso: abril-2006
Ubicación: De vuelta en Asturias
Mensajes: 209
Antigüedad: 18 años
Puntos: 1
Re: frase aleatoria que no se repita

Bueno al final cogiendo de acá y de allá he conseguido algo que en principio parece funcionar A ver que les parece

Tengo estas dos tablas: fecha (id, dia, frase); y frase (id, frase, autor, publicada)

Código PHP:
//Me conecto a la base de datos y...
//COMPROBAR SI HA CAMBIADO EL DÍA O ES EL MISMO:

    
$dia_hoy=date("d",time()); // recojo el día de hoy
    
$consulta=mysql_query("select * from fecha"); //selecciono el contenido de la tabla fecha
    
$resultado=mysql_fetch_array($consulta); 

    if(
$dia_hoy!=$resultado["dia"]){ //si el día recogido es distinto del que hay en la base de datos, es otro día, buscamos otra frase

        //SELECCIÓN DE FRASE

        
$fecha=getdate(); //fecha actual
        
$hoy=$fecha['year'].'-'.$fecha['mon'].'-'.$fecha['mday'];  //fecha actual formateada aaaa/mm/dd
        
$dias=30//días que deben haber transcurrido como mínimo para publicar otra vez una frase (así pienso que es más facil variarlo como comenté antes)

        
$publicada=date("Y-m-d",strtotime("$hoy-$dias day")); //calculo la fecha mínima de las frases que pueden volver a ser publicadas

        
$consulta="select * from frases where publicada <'".$publicada."' order by rand() limit 1";  //selecciono una frase al azar siempre que la fecha sea menor que la establecida como mínima

        
$resultado=mysql_query($consulta);
        
$filas=mysql_fetch_array($resultado);


        
mysql_query("update frases set publicada='".$hoy."' where id=".$filas['id']); //actualizo la fecha de la frase seleccionada.

        
mysql_query("update fecha set dia=".$dia_hoy.", frase=".$filas["id"]." where id=1"); //actualizo el día y la frase en la tabla fecha

    
}else{ //si el día recogido es el mismo que está en fecha, seguimos en el mismo día, y la frase no cambia
        
$consulta="select * from frases where id=".$resultado["frase"];
        
$resultado=mysql_query($consulta);
        
$filas=mysql_fetch_array($resultado);
    }

    echo 
$filas["frase"]."<BR>";
    echo 
"(".$filas["autor"].")<BR>"