Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    13

    Sviluppo Forum: quale metodo per i nuovi messaggi?

    Salve a tutti, mi sono appena iscritto a questo forum e parto subito con la prima domanda, anche se più che altro è un parere

    Sto sviluppando un forum in asp, non sto a scendere nei particolari dello sviluppo perchè credo non sia importante in questa questione.
    Adesso mi trovo impantanato perchè non ho idea di quale sia il metodo migliore/corretto per evidenziare le discussioni con nuovi post non letti dall'utente che visita il forum.
    Prima di arrivare a questo punto credevo fosse una baggianata risolvere la cosa ma invece si sta rivelando più ostica di cosa credevo.
    L'idea di base era di memorizzare (tramite cookie o session o direttamente nel db ) la data dell'ultima visita e evidenziare di conseguenza le discussioni alla 'loggata' successiva.
    Purtroppo però mi sono reso conto che non è la strada giusta perchè, fino al momento che non sovrascrivo quella data con una data più recente, le discussioni risulteranno come nuove anche se già lette. D'altra parte se sovrascrivo quella data con una data più recente al momento della prima visualizzazione di una discussione mi risulteranno letti anche i post non letti...
    L'unica alternativa valida mi sembra, al momento, aggiungere una tabella con i post letti non letti con un record per ogni utente e ogni discussione ma mi sembra trooooooppo dispendioso in termini di risorse.
    Sicuramente mi sta sfuggendo una via più semplice e pratica, quindi chiedo a voi delle idee valide per affrontare il problema ^^

    Saluti a tutti!

  2. #2
    Non stare a preoccuparti delle risorse che vai ad occupare.. usa il database e centralizza il controllo dell'applicazione via database.
    A me risulta infatti più comodo basare tutta la logica in una sola componente applicativa anzichè sparpagliare dati su cookie o fare controlli che possono essere facilmente arginati con impostazioni differenti dei browser..

    Ad ogni modo ti chiedo: perchè sviluppare un forum quando ce ne sono migliaia di pronti all'uso, collaudati e funzionanti con migliaia di funzionalità?

    Ti posto qualche link.. e ti consiglio anche di scaricarti i file così da dare un'occhiata a come gli altri sviluppatori hanno attraversato il tuo problema


    http://forum.snitz.com/

    WebWiz Forum


    Ciao!
    www.magimax.it - Servizi per l'evoluzione digitale delle imprese
    My blog: zerointeractive.wordpress.com

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    13
    Grazie per la risposta ^^

    Sto sviluppando un nuovo forum perchè mi serve un forum da 'incasso': in pratica un forum che, all'occorenza, posso inserire nelle mie pagine web come se fosse parte di esse; in sintesi un forum che sia fuso con pagine preesistenti solamente allegando un file e che non abbia bisogno di una sezione a parte...
    Beh, a parte ciò che vorrei e ciò che poi effettivamente farò (a volte la distanza è notevole ), credo che spulcerò gli script dei due forum free che mi hai linkato per vedere un po'.

    Ciauz

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    13
    Riporto come ho risolto così, per chi come me cercava una soluzione teorica, potrà avere un indicazione sul da farsi.

    1) Senza scendere nella caratteristiche tecniche del DB che contiene il forum supponiamo che, suddetto DB, contenga almeno le Tabelle 'Utenti' e 'Messaggi', la prima contiene i dati degli utenti e la seconda i messaggi del forum.

    2) Diamo anche per scontato che la tabella 'Messaggi' contenga i Campi 'ID', un campo univoco che identifica il messaggio, e 'Data', contenente la data del messaggio in formato data/ora; e che la Tabella 'Utenti' contenga almeno i campi 'UltimaVisita', in formato data/ora, 'UltimaAzione', sempre data/ora, e 'EccezioniNews' in formato 'memo'

    3) Prima cosa da fare è aggiungere in ogni pagina una query UPDATE per aggiornare il campo 'UltimaAzione' alla data/ora attuale.

    4) Aggiungere, al momento del primo login dell'utente, due Update:
    4.1) La prima per passare il valore del campo 'UltimaAzione' al campo 'UltimaVisita'.
    4.2) La seconda per impostare il campo 'EccezioniNews' a '_'

    5) Al momento della lettura di una discussione o di un messaggio con il campo 'Data' > del campo 'UltimaVisita' dell'utente si controlla se una stringa del formato _IDDiscussione:IDMessaggio_ è presente nel campo 'EccezioniNews' dell'utente. Se non lo è si aggiunge suddetta stringa a 'EccezioniNews'. Se invece la stringa è presente si sostituisce con la stringa _IDDiscussione:IDUltimoMessaggio_

    6) A questo punto potremmo determinare se in una discussione è presente un nuovo messaggio seguendo questa prassi:
    6.1) Controllando se l'ultimo post ha il camo 'Data' superiore al campo 'UltimaVisita' dell' utente.
    Se 'no' la discussione non ha nuovi messaggi

    6.2) Se 'si' cercando l'ID della discussione nel campo 'EccezioniNews' dell'Utente con formato _IDDiscussione:
    Se 'no' la discussione non ha nuovi messaggi

    6.3) Se 'si' recuperiamo la stringa in formato _IDDiscussione:IDPost_ nel campo 'EccezioniNews' e ricaviamo il valore dell'ID del post tramite un istr/mid o un'espressione regolare.
    6.4) Confrontiamo sell'ID dell'ultimo messaggio della discussione è superiore all'ID ricavato dalla stringa.
    Se 'no' la discussione non ha nuovi messaggi.

    6.5) La discussione ha nuovi messaggi.

    Ammetto che è un metodo molto 'artificioso' ma è il metodo migliore che sono riuscito a creare. Inoltre è lungo da elencare ma in sostanza si traduce in poche righe di codice.
    Allego, a titolo di esempio, la funzione che ho creato che restituisce l'icona che identifica la discussione in base alla presenza di nuovi messaggi e numero di post.


    utLV contiene il valore 'UltimaVisita' dell'utente
    utID contiene il valore 'ID' dell'utente
    utNews contiene il valore 'EccezioniNews' dell'utente

    alla funzione gli vengono passati:
    ID del post da controllare (in questo caso l'ultimo della discussione)
    PostData la data del Post da controllare (in questo caso l'ultimo della discussione)
    IDAutore l'Id dell'utente che ha creato il post
    NPost il numero dei post che la discussione contiene
    IDTreadh l'ID della discussione

    codice:
    function get_icon(IDPost, PostData, IDAutore, NPost, IDTreadh)
       dim iconstring, initEN, initEP, fineEP, IDEP
       iconstring="folder"
       if session("username")<>"" then
          initEN = instr(utNews,"_" & IDTreadh & ":")
          if initEN<1 then
             if cdate(utLV)<cdate(postdata) and int(IDAutore)<>int(utID) then
                iconstring=iconstring & "_new"
             end if
          else
             initEP=instr(initEN,utNews,":")+1
             fineEp=instr(initEP,utNews,"_")
             IDEP=mid(utnews,initep,fineep-initep)
             if int(IDEP)<int(IDPost) and int(IDAutore)<>int(utID) then
                iconstring=iconstring & "_new"
             end if
          end if
       end if
       if int(NPost)>20 then
          iconstring=iconstring & "_hot"
       end if
       iconstring=iconstring & ".gif"
       get_icon=iconstring
    end function
    Spero di essermi riuscito a spiegare almeno la metà di quanto volevo

    Ciauz

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 © 2026 vBulletin Solutions, Inc. All rights reserved.