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 :

Message vu et non vu


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Message vu et non vu
    Je suis en train de créer un petit forum.
    J'aurai voulu savoir comment on pouvait faire pour détecter les messages déjà lu et les nouveau non lu?
    les messages je les stocks dans la base de données, et je l'affiche les messages dans un tableau HTML.
    Je bloque là dessus. si vous avez des solutions

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    la solution simple est une table de liaison dont chaque ligne correspond à l'identifiant d'un utilisateur et celui d'un post lu avec par exemple les tables:
    • posts_lus(id,iduser,idpost)
    • posts(id,sujet,texte)
    • utilisateurs(id,pseudo)

    quels sont les posts non lus par l'utilisateur "machin"?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select sujet
    from posts
    where id not in
      (select idpost
      from posts_lus
      where iduser=
        (select id
        from utilisateurs
        where pseudo='machin'))

    il sera bon de tout mettre dans des procédures stockées ça permet d'avoir quasiment de code sql dans ton php...
    la même requête version procédure, code de création:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    delimiter $$
    drop procedure if exists post_lus$$
    create procedure post_lus(in pseudo_u varchar(64))
    begin
      select sujet
      from posts
      where id not in
        (select idpost
        from posts_lus
        where iduser=
          (select id
          from utilisateurs
          where pseudo=pseudo_u));
    end$$
    delemiter ;
    et pour l'appel:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    call posts_lus('machin');
    avantages :
    • ça rend plus compacts tes appels dans php...
    • tu cache la structure de tes tables
    • quand tu testes ou modifies une procédures tant que le résultat à la même forme tu ne retouches pas ton code php (comme la séparation css/html)
    • si tu veux aller plus loin tu peux aussi augmenter la sécurité en créant un utilisateur mysql qui n'a que "grant execute" sur la bd de ton forum... du coup, il ne peut qu'exécuter des procédures stockée et rien faire d'autre quand tu te connectes avec lui... tu peux même ne pas lui donner de mot de passe... si un mec arrive à hacker ton php il pourra pas pourrir ta bd avec l'identifiant et le mot de pas de cet utilisateur mysql...


    et, bien entendu, arrêtes d'utiliser les connecteurs mysql et mysqli pour te connecter à mysql mais utilises PDO car les 2 autres ne sont plus maintenus et peuvent disparaitre à n'importe quelle future version de php
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    ericd69
    mais J'ai trouvé une autre solution je pense que simple c'est d'ajouter un champs de type boolean dans Table post si la valeur = "True" le message lu sinon la valeur = "False" le message pas encore vu.
    mais la diffeculté que j'ai trouvé comment passé la valeur en meme temps du clic sur le message

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salut,

    Je crois que la solution de ericd69 répond à ton problème et respecte les règles de modélisations.
    Avec ta solution, tu es obligé de passer par un UPDATE et là, comment savoir quel utilisateur a lu le message ?

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    oui ta solution ne permet que de savoir si au moins 1 personne a lu le message ou non mais jamais qui l'as lu...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

Discussions similaires

  1. Message d'erreur non pris en compte
    Par Sly2k dans le forum Access
    Réponses: 8
    Dernier message: 24/07/2006, 15h27
  2. message HTML/XML non valide pour ie
    Par ep31 dans le forum Valider
    Réponses: 6
    Dernier message: 08/03/2006, 20h19
  3. Réponses: 7
    Dernier message: 11/02/2006, 15h32
  4. Réponses: 6
    Dernier message: 20/10/2005, 21h36

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