Bonjour,
Je suis actuellement en train de créer un site avec un système de messagerie où chaque message se présente sous forme de conversation.
Le but de cette messagerie est donc que chacun des deux utilisateurs puisse lire la conversation. S'il décide de la supprimer, l'autre doit continuer à pouvoir la lire. Si l'un des deux envoie un nouveau message, la conversation s'affiche comme il faut, à partir de ce nouveau message pour celui qui l'avait supprimée auparavant.
Et bien entendu, qui dit messagerie dit notification en cas de nouveau message.
À partir de ces éléments, je vous fais part de ma structure en base de données, bien que j'envisage de la modifier afin de ne pas restreindre une conversation à deux utilisateurs.
J'ai donc actuellement une table "conversation", composée des champs suivants :
c_id,
c_user_one (utilisateur X - id du premier utilisateur à avoir engagé la conversation),
c_user_two (utilisateur Y - id du destinataire du premier message qui a créé la conversation),
c_status (qui permet de savoir si oui ou non la conversation est lue pour indiquer au destinataire du message le plus récent de la conversation qu'il a un nouveau message),
c_show_one (utilisateur X - pour afficher ou non la conversation - dans le cas où il l'a supprimée, il n'y a pas lieu d'afficher la conversation dans sa boîte de réception),
c_last_msg_id_one (utilisateur X - l'id du dernier message avant qu'il ne supprime la conversation),
c_show_two (utilisateur Y - même principe que c_show_one),
c_last_msg_id_two (utilisateur Y - même principe que c_last_msg_id_two)
Et j'ai une table "messages", composée des champs suivants :
msg_id,
msg_user_id (expéditeur du message),
msg_status (à l'insertion en base de données, il est à zéro, faisant ainsi passer le statut de la conversation correspondante à zéro également),
msg_conversation (l'id de la conversation à laquelle appartient le message)
Jusqu'à présent tout se déroule comme je le voulais. Le seul problème que je rencontre concerne la suppression d'une conversation.
En effet, pour afficher la boîte de réception d'un utilisateur, j'effectue ma requête, mais bloque sur un détail : comment, dans ma requête, déterminer si l'utilisateur est le "c_user_one", ou le "c_user_two" ? En effet, il se peut qu'il ait 5 conversations, mais pas toutes engagées par lui-même, ce qui fait que son id peut se retrouver dans la colonne "c_user_one", comme dans "c_user_two".
J'ai tenté une requête dynamique, en indiquant que si "c_user_one/two" = l'id de l'utilisateur alors la variable prenait une valeur différente, mais il ne l'applique pas à chacune des conversations et m'affiche donc toutes les conversations (vides du coup).
Donc j'en viens à vous demander, si mon problème vous parle, si quelqu'un voit une autre façon de procéder ou aurait une piste sur la façon de résoudre mon problème. :)
Ou encore, si mon message n'est pas assez clair, un petit signe et je clarifie tout ça !
D'avance merci pour votre réponse !