Salut tout le monde,

Je suis actuellement entrain de bosser sur une messagerie interne et il y a un problème qui se pose : comment faire pour supprimer une discussion ?
Parce que si je fais un DELETE ça va supprimer cher la personne qui a envoyé le message et cher la personne qui l'a reçu. Et je ne veux pas ça moi, je veux juste que ça supprime le message uniquement cher l'un des deux.
Peut-être faudrait-il rajouter un champs dans ma table pour mettre le type du message (supprimer,archiver,etc).
Mais je ne vois pas la démarche qu'il faut suivre au niveau du code.
Si vous avez des idées n'hésité pas :)
Merci !

2 réponses


Donovan
Réponse acceptée

Tu pourrais faire comme suit :

Ajouter deux champs dans la table :

  • is_visible_sender ( TINYINT(1) | DEFAULT 1 )
  • is_visible_receiver ( TINYINT(1) | DEFAULT 1 )

Si l'un des deux "supprime" (cache en faites) tu passe le champs correspondant à 0

UPDATE ` NOM DE TA TABLE ]`
    SET is_visible_ EST-CE L'EXPEDITEUR OU LE RECEVEUR ? ] = 0
    WHERE id = QUEL MESSAGE ? ]

Et lorsque tu récupérer les messages des deux types de personnes, tu recupere uniquement les messages "visible" pour cette personne

SELECT *
    FROM ` NOM DE TA TABLE ]`
    WHERE `is_visible_ EST-CE L'EXPEDITEUR OU LE RECEVEUR ? ]` = 1

Cela a deux utilités :

  • Non seulement ça fait ce que tu souhaites faire =P

  • Tu as toujours la backup du message, meme si supprimé par les deux

Maintenant si tu souhaites supprimer vraiment le message si par exemple le sender le supprime, tu enlevé le champs "is_visible_sender"
et lorsque celui-ci "supprime", tu supprime vraiment avec un DELETE.

Babou
Auteur

Merci d'avoir répondu.
J'ai en effet trouver réponse à mon problème hier et j'ai fait exactement comme ceci, donc cela confirme mon script!

Merci quand même de ta réponse :D