Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314

    Messaggi e Documenti Letti

    Salve
    Il mio problema è semplice e riguarda un piccolo sistema di messaggistica privata.

    Vorrei mettere una barra con un'icona dove indico se l'utente ha un messaggio non letto (un pò come facebook) e se ha documenti non letti.

    Per quanto riguarda i messaggi il mio problema è che il destinatario può essere di due tipi: un utente singolo, od un gruppo a cui appartiene l'utente.

    Non riesco ad impostare la query per vedere se l'utente ha effettivamente messaggi non letti. Usare la differenza tra i timestamp non mi piace molto perchè se un utente entra ed esce senza leggere i messaggi non letti poi la notifica scompare.

    Penso di dover creare una tabella chiamata messaggi_letti ma poi gli effettivi campi da impostare e successivamente da analizzare non li ho ancora capiti bene.

    Stessa cosa per quanto riguarda i documenti, vengono creati dei documenti o caricati sul server ed automaticamente messi in DB SQL da qui poi penso di dover creare una tabella chiamata documenti_letti dove devo vedere quanti sono i documenti letti dell'utente e fare la differenza tra il conto totale dei documenti e quelli effettivamente letti.

    Grazie per l'aiuto Daniele
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: Messaggi e Documenti Letti

    Originariamente inviato da danlupo
    Salve
    Il mio problema è semplice e riguarda un piccolo sistema di messaggistica privata.

    Vorrei mettere una barra con un'icona dove indico se l'utente ha un messaggio non letto (un pò come facebook) e se ha documenti non letti.

    Per quanto riguarda i messaggi il mio problema è che il destinatario può essere di due tipi: un utente singolo, od un gruppo a cui appartiene l'utente.

    Non riesco ad impostare la query per vedere se l'utente ha effettivamente messaggi non letti. Usare la differenza tra i timestamp non mi piace molto perchè se un utente entra ed esce senza leggere i messaggi non letti poi la notifica scompare.

    Penso di dover creare una tabella chiamata messaggi_letti ma poi gli effettivi campi da impostare e successivamente da analizzare non li ho ancora capiti bene.

    Stessa cosa per quanto riguarda i documenti, vengono creati dei documenti o caricati sul server ed automaticamente messi in DB SQL da qui poi penso di dover creare una tabella chiamata documenti_letti dove devo vedere quanti sono i documenti letti dell'utente e fare la differenza tra il conto totale dei documenti e quelli effettivamente letti.

    Grazie per l'aiuto Daniele
    La richiesta è molto generica, non conoscendo come hai modellato il DB. Personalmente porrei un flag letto sulla tabella dei messaggi e dei documenti. Inizialmente assume valore false, alla lettura assume valore true.

  3. #3
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314
    Il Database è abbastanza semplice per ora

    * Utenti ( ID, User, Password, Email, Gruppo, Ruolo) => Tutti Varchar tranne ID che è una
    chiave primaria auto incrmentante e Ruolo che è un ENUM (PUser, User, Mod, Admin)

    * Eventi (ID, Titolo, Data, Ora, Luogo, Commento, Locandina) Tutti Varchar tranne ID che è
    una chiave primaria auto incrmentante

    * MailBox (Id, Mittente, Destinatario, Oggetto, Messaggio, Data, Ora, Allegati) Tutti Varchar
    tranne ID che è una chiave primaria auto incrmentante

    * Documenti (ID, NomeDocumento, File) Tutti Varchar tranne ID che è una chiave primaria auto incrmentante
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

  4. #4
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da danlupo
    Il Database è abbastanza semplice per ora

    * Utenti ( ID, User, Password, Email, Gruppo, Ruolo) => Tutti Varchar tranne ID che è una
    chiave primaria auto incrmentante e Ruolo che è un ENUM (PUser, User, Mod, Admin)

    * Eventi (ID, Titolo, Data, Ora, Luogo, Commento, Locandina) Tutti Varchar tranne ID che è
    una chiave primaria auto incrmentante

    * MailBox (Id, Mittente, Destinatario, Oggetto, Messaggio, Data, Ora, Allegati) Tutti Varchar
    tranne ID che è una chiave primaria auto incrmentante

    * Documenti (ID, NomeDocumento, File) Tutti Varchar tranne ID che è una chiave primaria auto incrmentante
    Bene, se aggiungessi a MailBox un campo fl_letto credo che ti risolveresti i problemi. Idem per Documenti

  5. #5
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314
    Originariamente inviato da Joe Taras
    Bene, se aggiungessi a MailBox un campo fl_letto credo che ti risolveresti i problemi. Idem per Documenti
    Il problema è, come dicevo nel primo post

    Per quanto riguarda i messaggi il mio problema è che il destinatario può essere di due tipi: un utente singolo, od un gruppo a cui appartiene l'utente.
    .

    Quindi quando il messaggio è inviato ad un gruppo non posso usare un campo nella tabella mailbox perchè il primo che me lo legge mi cambia il valore.

    Se, per esempio, un messaggio è inviato al gruppo 'Coro', il primo del gruppo 'Coro' che legge il messaggio, lo rende 'letto' per tutti.

    Utilizzando AV non volevo inviare il messaggio a tutti gli utenti per limitare il numero di queries.

    Per quanto riguarda i documenti, il problema è simili, nel senso che un documento vale per tutti quindi mettendo un flag di lettura una volta che il primo lo leggi lo segna come già letto per tutti.

    Daniele
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

  6. #6
    Ciao,
    secondo me devi fare delle tabelle di relazione tra gli utenti e i messaggi/documenti

    ad esempio puoi fare una tabella,
    *documenti_non_letti (id_utente, id_documento)
    quando segnali all'utente 33 che ci sono da leggere i docuemnti 5 e 7 inserisci
    33,5
    33,7

    quando ti risulta che l'utente ha letto il documento 7 cancelli il recod 33,7 dalla tabella

    così nella tabella tieni sempre traccia, dei documenti che ogni utente non ha ancora letto


    è solo un esempio...
    potresti aggiungere altri campi, ad esempio un campo data e ora per sapere da quanto un docuemnto aspetta di essere letto

    oppure anziché cancellare il record quando il doc è letto
    potresti aggiungere un campo 'letto (datetime)' che è null quando il docuemnto è da leggere e valorizzato alla data di lettura quando il doc è stato letto

  7. #7
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da danlupo
    Il problema è, come dicevo nel primo post

    .

    Quindi quando il messaggio è inviato ad un gruppo non posso usare un campo nella tabella mailbox perchè il primo che me lo legge mi cambia il valore.

    Se, per esempio, un messaggio è inviato al gruppo 'Coro', il primo del gruppo 'Coro' che legge il messaggio, lo rende 'letto' per tutti.

    Utilizzando AV non volevo inviare il messaggio a tutti gli utenti per limitare il numero di queries.

    Per quanto riguarda i documenti, il problema è simili, nel senso che un documento vale per tutti quindi mettendo un flag di lettura una volta che il primo lo leggi lo segna come già letto per tutti.

    Daniele
    Allora come consiglia Philibert crea una sotto tabella dei documenti e dei messaggi, dove associ utente / documento e utente / messaggio ed il fl_letto

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.