IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Fonction message privé (structure et utilisation)


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Par défaut Fonction message privé (structure et utilisation)
    Bonjour,

    Tout d'abord je m'excuse s'il fallait diviser le sujet en deux 1) pour la structure de la table, 2) pour le fonctionnement. Mais je me suis dit qu'il serait plus facile de suivre le sujet si tout était dans le même poste.

    Je suis entrain de développer la base de donnée de mon futur site internet. J'aimerais permettre à mes membres de pouvoir envoyer des messages privés. Le problème est que je ne sais pas par où commencer et surtout comment m'y prendre.

    J'ai essayé de regarder comment était faite la base d'un forum tel que phpbb mais je n'ai pas pu avancer beaucoup.

    Si je me base sur ce que j'ai vu chez phpbb2 il faudrait 2 tables :

    CREATE TABLE phpbb_privmsgs (
    privmsgs_id mediumint(8) unsigned NOT NULL auto_increment,
    privmsgs_type tinyint(4) NOT NULL default '0',
    privmsgs_subject varchar(255) NOT NULL default '0',
    privmsgs_from_userid mediumint(8) NOT NULL default '0',
    privmsgs_to_userid mediumint(8) NOT NULL default '0',
    privmsgs_date int(11) NOT NULL default '0',
    privmsgs_ip varchar(8) NOT NULL default '',
    privmsgs_enable_bbcode tinyint(1) NOT NULL default '1',
    privmsgs_enable_html tinyint(1) NOT NULL default '0',
    privmsgs_enable_smilies tinyint(1) NOT NULL default '1',
    privmsgs_attach_sig tinyint(1) NOT NULL default '1',
    PRIMARY KEY (privmsgs_id),
    KEY privmsgs_from_userid (privmsgs_from_userid),
    KEY privmsgs_to_userid (privmsgs_to_userid)
    ) TYPE=MyISAM;
    CREATE TABLE phpbb_privmsgs_text (
    privmsgs_text_id mediumint(8) unsigned NOT NULL default '0',
    privmsgs_bbcode_uid varchar(10) NOT NULL default '0',
    privmsgs_text text,
    PRIMARY KEY (privmsgs_text_id)
    ) TYPE=MyISAM;
    Première question est ce qu'il existe d'autre type de structure plus adéquate ? (j'ai notamment vu que phpbb3 avait 4 tables ...)

    La deuxième partie de mon message concerne l'utilisation, l'idée dernière cette base. En effet, je suis perdu dans son fonctionnement.
    Je m'explique :

    Je ne comprends pas comment un message envoyé par le membre A apparaitra dans le dossier message envoyé du membre A comme déjà lu, alors qu'il apparaitra comme non lu dans le dossier Indox du membre B puisque le champ "privmsgs_type" prend les valeurs 1 à 5 qui sont défini dans le fichier includes/constant.php comme :

    // Private messaging
    define('PRIVMSGS_READ_MAIL', 0);
    define('PRIVMSGS_NEW_MAIL', 1);
    define('PRIVMSGS_SENT_MAIL', 2);
    define('PRIVMSGS_SAVED_IN_MAIL', 3);
    define('PRIVMSGS_SAVED_OUT_MAIL', 4);
    define('PRIVMSGS_UNREAD_MAIL', 5);
    Donc globalement ce que je cherche à faire c'est un système de message privé. Envoi de message privé, stockage des messages dans le dossier INBOX ou OUTBOX ou suppression.

    Enfin voila si quelqu'un pouvait m'expliquer, m'aiguiller, me donner des liens explicatifs, des conseils enfin tout information susceptible d'aider ma compréhension j'en serai reconnaissant.

    Merci =)

    PS : Mon niveau de connaissance PHP, MySql n'est pas des plus avancé mais je ne demande qu'à apprendre.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    Première question est ce qu'il existe d'autre type de structure plus adéquate ?
    plus adéquate à quoi? c'est surtout là qu'est la question

    - est ce que tu as besoin de stocker l'ip de l'envoyeur?
    - est ce que tu vas gérer l'activation et la désactivation du bbcode? de l'html? des smilies? de la signature? (et est ce que tu vas les gérer tout court?)

    ce sont des choses qui proviennent du fonctionnement de phpBB que tu n'auras peut être pas forcément besoin...
    ta structure pourra donc déjà être plus simple...


    sinon la coupure en 2 tables est déjà une bonne chose

    pour lister les messages dans la boite tu as besoin de plusieurs enregistrement de la première (tu as besoin des sujets, titre, nom de l'envoyeur etc... pour l'utilisateur qui regarde),

    alors qu'en affichage du message tu as besoin juste du message : un enregistrement de la seconde table

    tu as un id qui fait le lien entre les deux
    et deux clé externe pour faciliter la recherche en fonction de l'id de l'auteur ou du destinataire



    d'une manière générale c'est préférable au fait de n'avoir qu'une seule table (je dirais du point de vue logique, modélisation, volumétrie...)




    Je ne comprends pas comment un message envoyé par le membre A apparaitra dans le dossier message envoyé du membre A comme déjà lu, alors qu'il apparaitra comme non lu dans le dossier Indox du membre B puisque le champ "privmsgs_type" prend les valeurs 1 à 5 qui sont défini dans le fichier includes/constant.php comme :

    une idée d'explication (pas sûr mais ça me semble logique) :
    - le membre A a écrit le message donc il l'a déjà lu, ça pourrait expliquer pourquoi il le voit en lu même si B ne l'a pas encore lu.

    mais tu peux modifier la gestion
    - tu affiches en lu-non lu pour A l'état de B, ce qui lui permet de savoir s'il est lu ou non par le destinataire. et tu changes les états des messages (est ce que c'est nécessaire de garder l'état sauvegardé si tu n'offres pas cette fonctionnalité... )




    si tu ne veux pas reprendre le code de phpBB tu peux t'inspirer de leur structure et de leur logique mais applique la tienne avant tout...

Discussions similaires

  1. Messages Privés - Eclaircissement
    Par mr.saucisse dans le forum MFC
    Réponses: 19
    Dernier message: 30/01/2006, 18h32
  2. Réponses: 1
    Dernier message: 12/12/2005, 18h29
  3. Messages Privés : reste en boite d'envoi ? Pourquoi ?
    Par Perceval dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 20/09/2005, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo