Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Riconoscere i topic letti in un forum home-made

    Ciao ragazzi,
    dopo aver scartabellato un po' di topics qui, mi tocca scrivere un topic nuovo in quanto non ho trovato nulla che mi possa aiutare.

    Ho realizzato un forum fatto in casa, niente phpbb, niente vbulletin etc etc. Il forum va alla grande, ha quasi tutte le utilities che hanno i due detti sopra, ma su una cosa mi sono arenato pesantemente:

    Non riesco a trovare una soluzione soddisfacente per far vedere all'utente loggato quali topic ha letto e quali no. So che bisogna lavorare sui vari tempi di collegamento dell'utente e quelli dei topic, ma non riesco a trovare una soluzione chiara.

    Quale è la soluzione migliore è più elegante per far si che un utente possa vedere quali topic ha letto e quali no?

    Qualcuno mi da una mano?
    Thanks.

    p.s. ho provato a sbirciare nel codice dei suddetti forum e penso di aver capito che le info sono tutte in un cookie, ma non ho ben capito come, quando, dove e perchè.

  2. #2
    credo che è un pò difficcile consigliarti senza sapere come hai strutturato gli archivi, in ogni modo, credo che hai un identificativo univoco di ogni post, eventualmente, puoi salvare nell'anagrafica di ogni utente, all'uscita dal sito, l'ultimo id post in modo che al succesivo ritorno, sai per differenza i post non letti.
    qualche piccola complicazione potresti averla per i reply, ma anche qua dipende da come hai organizzato i dati nel db, ma non credo che ci sono particolari problemi.

    se non risolvi, facci sapere in linea generale come hai organizzato i db, se usi una sola tabella o più tabelle in master/detail e come realizzi le referenze.

    saluti

  3. #3
    l'argomento mi interessa molto....

    Io avevo pensato di risolvere creando un tabella "discussioni_lette" che abbia 2 soli campi, entrambi chiavi esterne:

    - id_utente
    - id_discussione

    A primo acchitto la sol. sembra ragionevole, ma immagginiamoci molte e molte discussioni con moltissimi utenti... secondo voi è ancora fattibile?
    Poi un'altra domanda: è più efficiente tenere traccia delle discussioni già lette o di quelle non lette?

  4. #4
    Originariamente inviato da Insaponata
    Io avevo pensato di risolvere creando un tabella "discussioni_lette" che abbia 2 soli campi, entrambi chiavi esterne:
    cosa non ti convince della mia soluzione?

    secondo me funziona e si manutiene con poco.

    nella tua, a prima idea, credo che ci vuole un bel pò di lavoro per tenere aggiornati gli archivi che francamente ritengo inutile.

    ti faccio un esempio di come funziona la mia soluzione.

    all'ultima visita del forum, il contatore dei post (chiamiamolo $post_id) vale 100, tu lo salvi nell'archivio nel mio profilo.

    all'accesso successivo, $post_id vale sempre 100, mentre se lo rileggi dal db ottieni $new_post_id=120, significa che quando crei la pagina con tutti i thread, se l'id del post che stai scrivendo è > di $post_id allora lo colori diversamente.

    per prendere l'id corrente basta fare una SELECT MAX...

    secondo me non ci vuole altro.

    è una cosa che messa in piedi, funziona da sola...

  5. #5
    allora ragazzi,ci sono un milione di cose di cui tener conto.
    Il mio sito ha 4 forum.

    4 tabelle:
    forums
    topics
    posts
    posts_text.

    Le ultime due non ci interessano in quanto ogni topic ha una cell chiamata topic_time che si updata ogni volta che qualcuno risponde ad un mess.

    Pure la prima in realtà non ci interess perchè sempre la tabella topics ha una cell chiamata forum_id e quindi sai già quali sono i messaggi nuovi in quel forum, basta selectare le righe che hanno forum_id uguale a quello del forum che visualizzi nell'elenco forum.

    Pensavo di fare una tabella sessions in cui andare a salvare un array dei topic non letti e con nuovi messaggi. E andare a modificare ogni volta quel'array, in modo che ogni utente abbia il suo array. Questo array viene creato in una sessione quando si apre la pagine che fa vedere i topic in modo che, salvato sul db, rimane sempre uguale finchè l'utente non va a leggere ogni topic eliminando così quel numero dall'array.

    Purtroppo non ci può basare su un unico tempo di attività utente perchè se hai più forum, in home page, dovresti tenere un tempo specifico per ogni forum.

    So che ho fatto un gran casino, ma cercate di capire quello che ho scritto...

  6. #6
    Ciao,
    la soluzione maggiormente adottata, come da te scritto, è quella di salvare queste informazioni in un cookie.

    Il cookie avrà la struttura delle tue categorie..cioè

    Array [IdCategoria] => array [IdDiscussione] => data ultima visita

    e così via...quindi farai il confronto sulla data dell' ultima visita fatta dall' utente

    Questo array come noti se vai a vedere i tuoi cookie viene serializzato e codificato in base 64 per renderlo abbastanza compatto..



  7. #7
    sento parlare di array... mai memorizzare un array in un campo DB (significherebbe usare male il db relazionale), ma penso che già lo sappiate tutti.
    Ad ogni modo ho forse capito quello che dice bDaniele e penso che sia effettivamente la soluzione che adotterei io. Di certo non è affidabile come quella proposta da me all'inizio, ma di certo è più efficiente.

  8. #8
    nessun forum memorizza tale array nel database...come ho scritto questa informazione è salvata in un cookie.

  9. #9
    Originariamente inviato da ellecubo
    nessun forum memorizza tale array nel database...come ho scritto questa informazione è salvata in un cookie.
    E che succede quando accedo da un'altro pc dove non ho il cookie?
    Mi fa vedere tutti i messaggi come non letti?!?? Pesante!!

    In più, l'encoding in 64 prende circa il 33% in più di spazio dei dati normali...il mio cookie è lunghissimo e pesa decine di KB. I cookie di forum come phpbb et simila sono cortissimi...qualche idea?

  10. #10
    ciao,
    io ho risolto aggiungendo una stringa nel db dove memorizzo tutti gli id clienti che vanno visto il post, in modo che per stabilire se è stato letto o meno basta che controllo la presenza dell'id nella stringa.

    se il tuo forum può avere molte visite, puoi pensare a creare una tabella aggiuntiva con le sole visite effettuate.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.