Flash a parte che non sopporto affiancato alla parola dinamico...
Potresti creare una tabella nel database con tutti i premi.
Per ogni premio metti un immagine, la descrizione e un campo boleano.
Quando un utente si aggiudica il premio, quello viene cambiato in 1 e non è più disponibile.
Oppure puoi metterti un timestamp quando viene vinto e per, che sò, 2 ore non è disponibile.
Oppure con lo stesso campo timestamp detto sopra, puoi fare così:
Se viene vinto aggiorni il campo del premio aggiungendo il timestamp di quel momento.
Quindi SE il campo timestamp non è vuoto, allora vuol dire che è stato vinto e non è più disponibile E devono passare almeno 7200 secondi (2 ore) da quel timestamp per poter vincere un altro premio.
Così con un campo solo ti risolvi due problemi.
Riassunto:
nella tabella dei premi aggiungi un campo testo.
Quando un utente vince, ad esempio, l'ipod, il sistema aggiorna il campo testo timestamp con il timestamp del momento della vincita.
Quando un altro utente cerca di vincere l'ipod, quello non sarà più disponibile in quanto il campo timestamp non è vuoto e quindi è già stato vinto.
Può vincere un altro premio SE sono passati più di 7200 secondi dall'ultimo premio vinto.

Per il numero massimo di giocatori, metti in palio tanti premi quanti sono i giocatori che vuoi far vincere.
Se ci sono più premi di quanti giocatori vuoi far vincere, ci sono due modi:
O crei un campo boleano che, se è 1 vuol dire che è in palio, oppure 0 non è in palio,
oppure selezioni tutti i campi il cui timestamp è compreso in quella giornata.
Conti quanti campi ti sono venuti fuori e se sono più di 20, allora non vince più nessuno.