mmm non è una cosa semplicissima: un simile funzionamento cambia a seconda che si tratti di votazioni da un utente registrato o meno.

Vediamo il secondo caso
Suddividiamo il lavoro in 3 parti: HTML, Javascript e PHP.

Per la parte di HTML devi solo riprodurre un layout simile a quello di quella pagina.

Per la parte di Javascript, questo non è il forum più adatto.

Per cui, direi di soffermarci sulla parte di PHP.

Ora, un utente arriva sulla tua pagina e vota, cosa dovrà ottenere il server?
Il server dovrà ottenere un dato che mi identifichi l'Utente, un Timestamp (data ed ora) che sarà il momento di esecuzione, ed il punteggio che l'utente ha indicato.

Ora, nel database io andrò a salvare tutti questi dati, direi che una tabella basta:
tabella
Voto{
id INT NOT NULL Primary Key AUTO_INCREMENT,
IP INT(11) NOT NULL,
data TIMESTAMP NOT NULL,
VOTO INT(3) NOT NULL
}

ora il motivo per cui salverei l'ip in un int(11) è per questo:
http://www.christonium.com/SearchEng...11919601314131

L'idea è che ogni volta che quacuno vota la pagina, PHP controlli se Esiste un record con IP = ip del browser dell'utente (ottenuto da $_SERVER['REMOTE_ADDR']), data >= mktime() - (60 * 60 * 24) (adesso - un giorno), in caso positivo, ritorna un messaggio "Già votato", in caso negativo inserisce il record nel DB, ed aggiorna il display con il punteggio medio.

Spero di averti dati un idea su come il DB e il file PHP dovrebbe essere.