Realiser un systeme de messages

Fermé
MaitreJimVT - 28 sept. 2016 à 05:55
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 30 sept. 2016 à 08:55
Salut à tous,
Je suis entrain de créer un forum pour étudiant, mais je suis confronté à une difficulté enorme sur les messages : ce que je veux c'st que quand quelqu'un clique sur message, on lui affiche les derniers messages triés biensur par destinataire, quand il click dessus il voit la discussion (un peu comme sur facebook) complète. Pas comme une simple boite de reception ou on ne trouve que les messages envoyés.
J'ai ma table messages
{
  • id
  • contenu
  • dest_id
  • receive_id
  • posted_at qui est du type datetime

}
jsé pas quoi faire, changer la structure de la table, ou il y aurait moyen d'ecrire une requete sql qui fasse le tout

4 réponses

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 252
30 sept. 2016 à 08:55
Salut,

Il n y a pas de solution unique. Voila un petit exemple simpliste:

table des clients

<T_USER>
USR_ID
USR_NAME



table des fils (ou un topic)

<T_FIL>
FIL_ID
FIL_NAME
USR_ID //creator



table des Messages

<T_MESS>
MESS_ID
CONTENT
USR_ID
FIL_ID



ou pourrai aussi avir une table de souscription au fil pour recevoir des notification par exemple.

Donc du coup au select on ferai
 

SELECT f.FIL_ID,m.MESS_ID,m.CONTENT,u.USR_ID,u.USR_NAME
FROM T_FIL f 
JOIN T_MESS m ON f.FIL_ID = m.FIL_ID 
JOIN T_USER u ON m.USR_ID=u.USR_ID
WHERE f.FIL_ID={fil_id_cherché}
ORDER BY m.MESS_ID



Pour récupérer tout le fil.

Mais ce n est qu un exemple avec un minimum de données, à toi de trouver une structure qui correspondra réellement à ce que tu veux faire.

Naga
1
spylller Messages postés 395 Date d'inscription dimanche 1 mars 2015 Statut Membre Dernière intervention 11 juillet 2019 28
28 sept. 2016 à 08:06
Salut,
Quand on clique sur la personne ça nous ouvre la conversation avec la personne et on affiche tous les messages avec une boucle, en SELECT contenu WHERE received_id = nom de la personne.
Je pense un truc dans ce genre
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 252
Modifié par nagaD.scar le 28/09/2016 à 11:30
Salut,

Vu ta table actuelle, tu n est pas en mesure de gérer un fil de discussion vu qu il n y a pas de lien.

Ce que cette table peu te permettre de faire c'est seulement permettre à deux personnes de discuter dans un fil unique (donc deux acteurs seulement avec un fil unique par couple).

Si tu veux juste selectionner un fil, tu ferra:


SELECT ID,contenu,receive_id,posted_at 
FROM {nom de la table}
WHERE receive_id = {id du receiver}
AND dest_id = {id du destinataire} 
ORDER BY ID 


qui renverra la liste des message par ordre d insertion (donc chronologique).

Par contre le nom des champs est mal choisi : d'une part un receiver et un destinataire, c'est la même chose (sender et receiver serai bien plus approprié), et dans le cas d'une conversation ca serai plutot des acteurs.

Après il faut voir l insertion, il faudra peu être adapter la requête de select, par exemple faire :


SELECT ID,contenu,receive_id,posted_at 
FROM {nom de la table}
WHERE receive_id in ({id acteur 1},{id acteur 2})
AND dest_id in ({id acteur 1},{id acteur 2})
ORDER BY ID 


naga
0
Alors comment faire pour gerer un fil de discussion
0