Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/02/2007, 23:01
Avatar de DeeR
DeeR
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 5 meses
Puntos: 17
Re: frase aleatoria que no se repita

Se me ocurre de la Siguiente Manera. (Talvez un poco enredada, pero debe funcionar).

Una tabla config con el siguiente parametro
id|mes_actual|numero_dia|frase_diaria

Esta tabla vasta que tenga un solo registro, ya que mes_actual siempre va a tener el mes en curso, numero_dia va a tener el numero del dia en curso y frase_diaria va a tener el id a la frase del dia.

La tabla de las Frases Celebres
id|titulo|frase|autor|repeticions_en_el_mes|
Esta tabla va a tener todos los registros de tus frases, inicialmente el campo repeticiones_en_el_mes debe ser int y como default 0.

------------------------------------------
Ahora viene lo bonito

En tu Script principal del Sitio, debes tener esto (Esta en Pseucodigo), La idea esque se entiende lo que tienes que hacer, para que tu lo realizes
Código PHP:
<?
/* Conexion Mysql y Extremos los Datos de la Tabla Config*/

$mes_actual=date("n",time());
$num_dia_actual=date("t",time());

// Vemos el Mes
if (  $mes_actual != $mes_en_config )
{
    
// Si el Mes es distinto, quiere decir que cambiamos de Mes
    // Tenemos que reiniciar repeticiones_en_el_mes a 0 en la Tabla Frases
    
    // Y actualizar el mes de la Config
    
}

if ( 
$num_dia_actual != $num_dia_en_config  )
{
    
// Son distintos, es decir estamos en un Nuevo Dia
    // Debemos Selecionar al Azar la Nueva Frase, pero con la condicion
    // que repeticiones_en_el_mes sea 0
    
$sql="SELECT * FROM frases WHERE repeticiones_en_el_mes=0";
    
$select $mysql->query($sql);
    
$i=0;
    while ( 
$row $mysql->f_array$select ) )
    {
        
$frases[$i]=$row;
        
$i++;
    }
    
// Finalmente en $frases tenemos una matriz con todas las frases con al doncion de repeticiones_en_el_mes = 0
    
$frase_selecionada=$frases[rand(0,(count($frases)-1))];
    
// Y hemos selecionado una Frase al Azar
    // ---- Ahora debemos actualizar el id de la frase en la Tabla Config con el $frase_selecionada['id']
    
    // ---- Actualizar el Dia del Mes en la Tabl Config
    // ---- Aumentar el Contador de la Frase en la Tabla Flases
    
    
    
    
}
?>
Explicacion
En la Tabla Config Tenemos los Datos del Mes Actual, Dia Actual y Frase Diaria, si detectamos que cambio el mes, reiniciamos todos los contadores de todas las frases, si detectamos que cambio el dia, debemos selecionar una nueva frase con la condicion que repeticiones_en_el_mes sea 0 , ya selecionada una al azar, a esta debemos incrementarle su contador

Entonces el mismo Script va a updateamos fechas, eligiendo frases no selecionadas, etc etc ...

Finalmente en tu Sitio, debemos mostrar la Frase que del id alojado en frase_diaria en la Tabla Config


Ojala te Sirva.
PD : Esta en pseudocodigo, la misma consulta sql esta incomplenta (ya que utilizo una clase para ello), Lo importante es la idea para el problema


Saludos