Metodo per messaggi privati

  • Creatore Discussione Creatore Discussione XMatt64
  • Data di inizio Data di inizio

XMatt64

Nuovo Utente
17 Feb 2013
22
0
0
Salve a tutti. Sto sviluppando un specie di socialnetwork. Volevo integrare un sistema di messaggi però non so se è meglio utilizzare il database ed un sistema fatto adhoc in php oppure appoggiarsi ad un server mail e fare un frontend per accedere ai messaggi in php. Se la cosa migliore da fare è utilizzando il database non è che mi potreste consigliare come creare e strutturare sia la tabella nel database sia il frontend? (Non voglio una guida già fatta perchè non c'è gusto nel fare un semplice copia e incolla) Grazie!
 
Si utilizza un database e come minimo di devono essere:
id_mittente | id_destinatario | messaggio

Poi puoi aggiungerci l'oggetto del messaggio, l'ora e tutto quello
Che vuoi. Questi sono i campi principali però.
 
Inoltre, se permetti ai tuoi utenti di eliminare/archiviare i messaggi, ricordati che dovrai inserire due righe nel database per ogni messaggio. Altrimenti, se Pippo invia un messaggio a Pluto, e Pluto lo cancella, il messaggio sparirà anche dall'account di Pippo.
 
Grazie per i consigli! Ora vedrò di scrivere gli script e di creare una tabella o un db per i messaggi! :D
 
Ale io quello lo gestirei (e lo gestisco) con un campo eliminato con un valore iniziale nullo e se lo elimina il mittente va a 1 oppure se lo elimina il destinatario va a 2.
Nel caso in cui lo elimina il mittente (o il destinatario) e c'è già il valore 2 (oppure 1) allora verrà eliminato fisicamente (sempre se si vuole).
Spiego meglio:
Se il messaggio viene eliminato sia dal mittente sia dal destinatario allora lo elimino fisicamente.
 
A me piace (piaceva, è parecchio che non creo un'applicazione con supporto per i messaggi privati) creare due copie del messaggio, anche perché è così che l'utente vede poi le cose, ed è tutto molto più semplice. L'utente elimina il messaggio e io elimino la riga dal database.
 
E quale è la differenza tra le due righe che vai a creare? (Così da individuare quella da eliminare)
 
Scusate se mi intrometto, ma se io creo un campo che ha valore o 0 o 1, e con 0 disattivo il messaggio e 1 attivo il messaggio non è meglio? Perchè così se uno dei due utenti decide di eliminare il messaggio esso rimarrà nel database e se qualcuno lo richiede posso sempre riattivare il messaggio che, alla fine, non sarà altro che un semplice record!
 
Da questi scambi di idee c'è solo da apprendere quindi meglio se ti 'intrometti'.
Il problema di cui parliamo va oltre..perché il messaggio che elimina uno non è eliminato per l'altro (se così la vuoi gestire).
Quindi discutevamo per la gestione di questo particolare.
Nel metodo che hai proposto tu se io elimino il messaggio che ho inviato (o ricevuto) si elimina anche nel 'registro messaggi' di colui che l'ha ricevuto (o inviato).
 
Beh penso che se una persona elimina un messaggio è perchè magari non vuole più leggere quella discussione. Il metodo migliore, o almeno io con i miei 16 anni di vita e 4 di esperienza in php la penso così, è di eliminare il messaggio per entrambi poiché, se io non voglio che quel messaggio sia letto o sia ancora visibile da entrambi, in questo modo lo posso fare. Un altro metodo può essere quello di non cancellare mai i messaggi anche se così, molto probabilmente, il futuro server dovrà impiegare molte risorse per le query. Comunque "intromettere" voleva essere un termine simpatico per intrufolarmi nella vostra discussione!
 
Veramente dappertutto funziona in modo leggermente diverso.
Guarda per esempio i messaggi di Facebook (tanto per dire)..se tu li cancelli all'altro rimangono..
Poi se li cancellano entrambi Facebook non li cancella fisicamente ma li la gestisci come vuoi.
 
Si lo so! Sono molto combattuto se fare come Facebook o fare una cosa "diversa"! Devo solo pensare e provare e vedere poi come mi piace di più la frontend! Dipende anche da come preferisce la gente. Per un metodo simile a Facebook dovrei creare due copie del messaggio o devo inserire due campi in una tabella.
 
Io inserirei un altro campo. Poi fai come vuoi sono entrambi metodi efficaci anche se uno ti raddoppia la lunghezza della tabella invece l'altro di aumenta il numero dei campi.
Mi azzardo a dire (Ale se sbaglio smentisci) che per le regole di ottimizzazione del db si dovrebbe aggiungere un campo invece di aggiungere un intero record che avrà quasi tutti i campi identici all'altro contenendo così poca informazione.
 
Si hai ragione! Mio padre lavora con i database tutti i giorni ed infatti ne sono molto esperto!
 
Le regole di ottimizzazione del database passano in secondo piano quando c'è di mezzo una buona organizzazione dell'applicazione. Per esempio, se dovessi inserire più valori numerici associati a un record, il primo impulso sarebbe quello di creare un campo e inserirli lì, magari separati da virgola. Invece il modo corretto di procedere è creare un'altra tabella e creare un record per ogni valore associato.

I tempi di caricamento si ottimizzano su altro, per esempio facendo attenzione a scrivere delle query ben fatte.
 

Discussioni simili