JeuWeb - Crée ton jeu par navigateur
Un système de messagerie privé à plusieurs participants - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Un système de messagerie privé à plusieurs participants (/showthread.php?tid=4416)



Un système de messagerie privé à plusieurs participants - Moxostoma - 18-10-2009

Bonjour, quelqu'un pourrait m'expliquer comment s'y prendre pour faire un système de Mp à plusieurs participants ? Je ne c'est vraiment pas comment faire...

Merci, d'avance.


RE: Un système de messagerie privé à plusieurs participants - My Hotel - 18-10-2009

Bon, n'attends pas de code tout fait ici. Pour moi, je pense qu'en gros, c'est comme le thread d'un forum, mais avec une autorisation pour seulement quelques membres.
Donc tu as une table qui stocke la liste des conversations, une table membre, et une table de jointure pour que chaque membre puisse participer à plusieurs conversation en même temps. Du genre (à l'arrache) :
messages : id|titre|texte|conversation_id
conversations : id|...
membres : id|...
conversations_membres : id_conversation|id_membre

Tu peux même autoriser certains membre à lire seulement, et d'autres à lire/ecrire en ajoutant :
conversations_membres : id_conversation|id_membre|ECRITURE(0 ou 1)

Ensuite, tu vérifie qu'un membre peut lire une conversation. Si oui, tu affiches. S'il veut répondre, tu vérifie qu'il peut, puis tu ajoute un message à la liste...

En gros, c'est ça. Si tu veux nous poster tes codes, on pourra peut-être te conseiller mieux. Wink

Bye


RE: Un système de messagerie privé à plusieurs participants - Allwise - 18-10-2009

Sinon tu permets l'envoie de mp aux membres et aux groupes. C'est comme cela que fonctionne phpBB3.
Lorsqu'un mp est envoyé à un groupe, tous ses membres et uniquement eux peuvent le voir. Et ils peuvent y répondre bien entendu, en laissant, en destinataire, le groupe.

Tu peux aussi faire comme les messageries traditionnelles et ajouter un champ Cc, et mettre un bouton "répondre à tous".

Quand tu dis que tu sais pas comment t'y prendre, c'est au niveau du problème en général, ou au niveau du code ?


RE: Un système de messagerie privé à plusieurs participants - Moxostoma - 18-10-2009

Bonjour, c'est pas dans le codage que je n'y arrive pas, c'est que je ne c'est pas trop comment m'y prendre pour faire ce système... pour les requêtes, etc...

C'est juste sa que j'aimerais qu'on m'explique.


RE: Un système de messagerie privé à plusieurs participants - Sephi-Chan - 18-10-2009

Et c'est ce que My Hotel a fait.

Je vais tenter à mon tour.

Une discussion privée, c'est comme une discussion, mais en privée. Tu as donc des entités "discussion", des entités "messages", des entités "utilisateurs". Et, pour stocker les restrictions d'accès, tu as des entités supplémentaires qu'on nommera "permissions".
  • Les discussions privées sont stockées dans une table "private_topics" ;
  • Les utilisateurs sont stockés dans une table "users" ;
  • Les messages privés sont stockés dans une table "private_messages". Cette table a une colonne "private_topic_id" qui indique à quelle discussion privée est attaché chaque message ;
  • Les permissions sont stockés dans une table "permissions". Cette table a au moins deux colonnes : "private_topic_id" et "user_id" ;


Quand un utilisateur lancera une discussion privée, que se passe-t-il ?
  • On crée une ligne dans la table "private_topics", avec le nom de la discussion ;
  • On crée un premier message (celui de l'initiateur de la discussion). On l'associe à la discussion grâce à une colonne "private_topic_id", qui stockera donc l'identifiant de la discussion à laquelle le message appartient ;
  • On crée une ligne dans les permissions. Bien sûr, le créateur de la discussion a le droit de s'exprimer dedans, donc on lui crée une ligne d'autorisation qui aura pour "private_topic_id" l'identifiant de la discussion créée et comme "user_id" l'identifiant de l'utilisateur ;

Ensuite, l'utilisateur pourra inviter des participants : chaque invitation créera alors une ligne supplémentaire dans la table des permissions en ayant pour "private_topic_id" l'identifiant de la discussion et comme "user_id" l'identifiant de l'utilisateur invité.

Tu comprends mieux ? Sais-tu comment implémenter ça du côté de la base de données ?


Sephi-Chan


RE: Un système de messagerie privé à plusieurs participants - Moxostoma - 18-10-2009

Bonjour, comment autoriser seulement les membres inscrits dans la table "permissions" pour afficher le liens pour pouvoir répondre aux messages ? J'ai essayer sa mais, sa ne marche :


<?php
$sql = "SELECT titre_topic, sous_titre_topic,
id_topic_ref_s,user_id
FROM topics_sujet_mp
JOIN permissions ON permissions.id_topic_ref_s = topics_sujet_mp.id_topic
WHERE id_topic=$mp_idsujet";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$titre=mysql_fetch_assoc($req);

if($titre['user_id'] == $id_du_membre)
{
?>
<h3 class="lien_h3"><a href="test.php?repondre=<?php echo $mp_idsujet;?>">Répondre à cette discutions</a></h3>
<?php
}
?>

Merci, d'avance. Smile

Sinon, le reste marche comme il faut. Big Grin


RE: Un système de messagerie privé à plusieurs participants - Moxostoma - 19-10-2009

Personne pour m'aider ?


RE: Un système de messagerie privé à plusieurs participants - Thedeejay - 20-10-2009

if(!isset($_SESSION['login'])){

die('hard'.4);

}


RE: Un système de messagerie privé à plusieurs participants - Moxostoma - 22-10-2009

Très drôle... franchement moi, sa me fait pas rire...
Personne d'autres pourrait m'aider sérieusement ?


RE: Un système de messagerie privé à plusieurs participants - barst - 22-10-2009

Dans la requête que tu donnes, on ne voit jamais l'id de l'user.

Comment restreindre l'affichage à un utilisateur s'il n'est pas présent dans ta requête ?

Je ne connais pas ton schéma de base de donnée mais tu devrais avoir une requête de ce style

select topic.id, topic.title
from topics_sujet_mp topic, permissions perm
where topic.id=perm.topic_id
and perm.read='Y'
and perm.user_id = '[à renseigner dynamiquement]'