Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Consiglio sulla progettazione di un DB per la gestione di messaggi

    Ciao a tutti,
    vorrei realizzare una piccola applicazione in PHP che gestisca i messaggi all'interno del sito. Un pò come quella di Facebook.

    Ho pensato di fare così il DB :

    id_messaggio | data | mittente | destinatario | letto | messaggio


    Problema : non c'è differenza tra messaggio inviato e messaggio di risposta.
    Allora ho provato a risolvere con il campo id_messaggio. In pratica il primo messagio ha un id 1 ad esempio, il secondo ha un id 2 mentre la risposta ha un id 1.
    In questo modi riesco a visualizzare tutti i campi con id 1 che fanno parte dello stesso dislogo.

    Ora rimane il problema di voler visualizzare tutti gli id una sola volta e per ogni id che si ripete visualizzare solo l'ultimo.
    E' possibile fare una cosa del genere?
    Spero di essere stato chiaro
    Grazie!

  2. #2
    Puoi farlo e ricostruire la sequenza dei messaggi usando la data.
    Oppure puoi usare un'altra tabella per tenere traccia della gerarchia dei messaggi (id padre, id figlio), così eventualmente puoi consentire la risposta a un messaggio di risposta.

  3. #3
    una tabella di thread (la conversazione) e una tabella di post (il singolo messaggio)

  4. #4
    Ma da un DB se ho n campi con id uguale posso dirli di visualizzarne solo uno?

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Ma da un DB se ho n campi con id uguale posso dirli di visualizzarne solo uno?
    Per definizione non puoi avere n campi con Id uguale ( sulla stessa tabella )
    __________________________________________________ ________________
    __________________________________________________ ________________
    __________________________________________________ ________________




    Se ho capito bene tu vuoi gestire:

    ___La conversazione ( composta da piu messaggi )
    ___Il messaggio ( che è un elemento della conversazione )
    e vuoi avere 1 sola tabella ( Perche non 2 ???? )
    __________________________________________________ _____________



    Io la imposterei cosi:

    IdMess ( Key univoca ) autoincrementale
    RifCon ( numerico con duplicati )
    Dopo tutto quello che vuoi

    __________________________________________________ ________

    In pretica ogni nuovo messaggio prende il suo IdMess autoincrementale
    e la applicazione PHP si occupa di dargli il RifCon della conversazione
    interessata



    Saluti


    NB. Pensa bene se non sia il caso di fare 2 tabelle
    relazionate
    1°) Conversazioni con IdCon eccetera
    2°) Messaggi Con IdMess e RifCon eccetera


  6. #6
    Si grazie mille. Alla fine ho optato per due tabelle

    Tabella Conversazione :

    id | mittente | destinatario

    Tabella Messaggi

    id_messaggio | id_conversazione | mittente | destinatario | letto | messaggio



    unico dubbio il mittente e il destinatario. Per i seguenti motivi.
    Vorrei visualizzare tutti i campi della tabella Conversazione in cui mittente = $user ma al tempo stesso vorrei visualizzare a fianco anche l'ultimo messaggio della conversazione.
    Al momento mi vengono visualizzati tutti i campi messaggio dove conversazione.id = messaggi.id_conversazione

  7. #7
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Tabella Conversazione :
    id | mittente | destinatario

    Tabella Messaggi
    id_messaggio | id_conversazione | mittente | destinatario | letto | messaggio
    Non caposco a cosa serva il destinatario nella tabella Conversazione

    Ma comunque solamente te puoi sapere come vorrai strutturare il DB

    __________________________________________________ __

    In casi simili mi è stato utile sedermi al tavolo
    con carta penna e tranquillita ( SENZA PC )
    e pensare bene
    1°) a quello che vuoi fare con la applicazione
    2°) a modellare il DB su quanto scaturisce dal punto 1


    Saluti

  8. #8
    Dice giusto nman... carta e penna, a PC spento.
    Cmq... tre tabelle..
    Conversazione on id_conversazione,datetime,id_autore
    Messaggio con id_messaggio,id_conversazione, attributi vari
    Destinatario id_messaggio,id_destinatario
    Poi metti dv ti serve gli attributi necessari.
    In questo modo hai un db pulito, messaggi con più destinatari, messaggi raggruppati in conversazioni...stile fb...
    Glue Labs
    Makes extraordinary things
    www.glue-labs.com/

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.