Realiser un systeme de messages
MaitreJimVT
-
nagaD.scar Messages postés 4500 Statut Membre -
nagaD.scar Messages postés 4500 Statut Membre -
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
{
}
jsé pas quoi faire, changer la structure de la table, ou il y aurait moyen d'ecrire une requete sql qui fasse le tout
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
A voir également:
- Realiser un systeme de messages
- Restauration systeme windows 10 - Guide
- Comment savoir si quelqu'un lit mes messages sur whatsapp - Accueil - Messagerie instantanée
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Messages supprimés whatsapp - Guide
- Réaliser un organigramme - Guide
4 réponses
Salut,
Il n y a pas de solution unique. Voila un petit exemple simpliste:
table des clients
table des fils (ou un topic)
table des Messages
ou pourrai aussi avir une table de souscription au fil pour recevoir des notification par exemple.
Donc du coup au select on ferai
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
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
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
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
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:
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 :
naga
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