Bueno al final cogiendo de acá y de allá he conseguido algo que en principio parece funcionar
![:-P](http://static.forosdelweb.com/fdwtheme/images/smilies/tongue.png)
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>";