Pagina 1 di 2

Non letto/ letto

Inviato: 11/05/2010, 18:18
da BMercer
Salve a tutti,
Di recente ho deciso di inoltrarmi nella creazione di un cms forum personale e mi sono sorte alcune domande del tipo "how-to", che ho una dopo l'altra risolto tranne questa:

Come faccio a gestire i topic letti o non letti per ogni utente?
Mi spiego, se io ho ,mettiamo, 10 utenti, e 1 topic: come faccio a mostrare ad ongi utente un'icona diversa a seconda se quest'ultimo ha letto o non letto l'ultima risposta?

Re: Non letto/ letto

Inviato: 11/05/2010, 19:24
da Carlo
Ciao, buona idea la tua. Una cosa del genere la stò sviluppando io, che sarà raggiungibile al seguente indirizzo: www.bokehcms.tk

Ritornando alla tua richiesta, invece, dai un occhiata al sistema adottato da phpBB. Se non sbaglio c'è una tabella chiamata phpbb_topic_watch dove viene creato ogni volta che un utente vede un topic un nuovo record con due colonne "topic_id" e "user_id", e quindi da qui capisce che l'utente ha visto il topic in questione.

Re: Non letto/ letto

Inviato: 11/05/2010, 20:36
da BMercer
Grazie mille per il link, aspetto con ansia l'uscita del tuo cms :D
Anche perchè mi serve ispirazione.
Una volta completato il mio (che a differenza del tuo non sarà open source, almeno non per il momento) lo hosterò e te lo farò vedere se vuoi.

Comunque grazie per la risposta, anche se temevo proprio che la soluzione fosse una cosa del genere.
Se non sbaglio però quella tabella occuperà un sacco di spazio...

Re: Non letto/ letto

Inviato: 11/05/2010, 21:09
da Carlo
Beh, puoi fare qualche proporzioni tra topic/utenti vendendo anche il peso di tale tabella sul tuo forum.
Sul mio forum non supera i 300 KB se non sbaglio.

Re: Non letto/ letto

Inviato: 11/05/2010, 21:14
da BMercer
Non ho mai approfondito questo argomento, ma non dovrebbe essere proprio tanto leggero fare una " select * " in quella tabella, considerando che ogni visita viene registrata.
Immaginati un forum di 2 anni con 1.000 utenti e abbastanza attivo ... provi ad estrarre e BOOM.
:)
Comunque grazie, farò così.

Re: Non letto/ letto

Inviato: 11/05/2010, 21:22
da Carlo
phpBB.com come fa?!? Il sistema utilizzato sarà veloce è leggero. Ma poi non estrae tutti i records, ma solo quegli relativi ad un utente o ad un preciso topic.

Re: Non letto/ letto

Inviato: 11/05/2010, 21:31
da BMercer
carlino1994 ha scritto:phpBB.com come fa?!? Il sistema utilizzato sarà veloce è leggero. Ma poi non estrae tutti i records, ma solo quegli relativi ad un utente o ad un preciso topic.
Ma pensavo che potrebbe essere un idea dare un ottimizzata al tutto, magari sovrascivendo dei dati simili.
Mettiamo per esempio che c'è un topic A, B e C e tre utenti Paperino, pluto e pippo.
I dati potrebbero essere salvati così:

ID Utente | Topic

1 Paperino | A
2 Pluto | A
3 Pippo | B
4 Pluto | B
5 Pippo | B
6 Pluto | B
7 Paperino | B
8 Pluto | C

Al momento della scrittura della riga 6, la numero 4 non serve più a nulla e quindi potrebbe essere eliminata.
Per esempio nel momento in cui Pluto guarda di nuovo il topic B:
- Estraiamo i dati dalla tabella
- Controlliamo se nella colonna Utente e nella colonna Topic vi sono contemporanemente Pluto e B e se ci sono elimiamo quella riga
- Inseriamo la nuova riga

Re: Non letto/ letto

Inviato: 11/05/2010, 21:36
da Carlo
Di sicuro il codice di phpBB è ottimizzato e pulito. Ripeto, guarda il codice di phpBB.