Partage
  • Partager sur Facebook
  • Partager sur Twitter

sujet lus / sujet non lus

Pour un forum

    22 février 2006 à 21:01:18

    Salut !

    Je bloque sur un truc,
    Je veux savoir sur un sujet est lu ou non lu sur un forum pour tel ou tel membre. ^^

    J'ai donc fait une table :

    sujets_non_lus :
    id_membre | id_sujet | if_forum | date

    Pour savoir si un sujet est non lu, je regarde s'il existe une entré avec l'id_sujet et dont l'id_membre est égale à l'id du membre qui demande la page.

    Le problème, c'est que lorsque je poste un new sujet, je doit faire autant d'entré que de membres et je doit faire autant de requêtes (en boucle) pour tout les membres !! C'est le gros daoua quoi ! :o

    Y'a pas une autre solution pour ceux qui expèrent avoir beaucoup de visiteurs ?

    Est lors du listage de la page forum.php?id_forum=1 qui a 50 sujet, je doit vérifier 50 fois s'il existe une entré qui me signal que le sujet est non lu. :euh:

    Vous avez une solution ? :)

    Merci ! ;)
    • Partager sur Facebook
    • Partager sur Twitter
      22 février 2006 à 21:07:24

      C'est une grande question qu'on s'est souvent posé... Perso j'avais opté pour une méthode utilisant une liste de sujets lus et d'une liste d'utilisateurs, le tout dans deux tables (un champ consacré à ça par table), puis récupérer le tout avec explode...

      C'est assez compliqué, et j'uis assez crevé, donc si quelqu'un voit où je veux en venir... Merci d'expliquer (en gros concaténation avec le valeur de la table. A la sortie, pour vérifier, explode et boucle pour trouver l'user (ou le sujet) en question).


      Lpu8er
      • Partager sur Facebook
      • Partager sur Twitter
        22 février 2006 à 21:21:59

        Les sujets lus ? Vaut mieux enregistrer les sujet non lus, nan ? Ca permet de ne pas avoir une trop grande table et j'enregitrerais en même temps la date, ca me permèterais de supprimer tout ceux qui ont plus d'un mois vu qu'on se doute bien qu'un sujet qui n'est pas lu depuis un mois ne sera pas lu par la suite !

        C'est + pour nous signaler qu'un nouveau message vien d'etre posté ! Pas pour nous signaler que l'on a pas lu les premiers message de la création du forum.

        En gros, quand on s'inscrit, on ne nous signaleras pas que tou les message d'avant n'on pas été lu vu que ce qui nous intéresse, c'est pas de savoir que l'on ne les a pas vu mais pour savoir qu'un message vien d'ètre posté à l'instant et qu'il n'a pas été lu.


        En bref si je récapitule : :-°
        Un sujet doit afficher un message comme non lu s'il a moin d'un mois et que le message n'a pas été lu par le membre.

        Comment doit-je m'y prendre ?
        • Partager sur Facebook
        • Partager sur Twitter
          22 février 2006 à 21:29:28

          C'est pas vraiment ce à quoi je pensais.

          Un champ "membres_passes", contenant tous els ids des users ayant vus ce sujet depuis sa dernière modification, séparés par un délimiteur choisi (par exemple le "-")...

          Ensuite, un explode et une boucle pour chercher si l'un des résultats correspond à l'un des sujets vus (donc, ici, lus...).

          Donc un seul champ en plus, dans la même table que les sujets.


          Lpu8er
          • Partager sur Facebook
          • Partager sur Twitter
            22 février 2006 à 21:46:13

            A oui je voi ! C'est Vraiment bien ca ! Ca fera comme le SDZ.

            J'suis en train d'imaginé les avantages est les inconveniants de cette technique et.... Elle est vraiment bien cette technique ;-)

            Merci beaucoup !
            • Partager sur Facebook
            • Partager sur Twitter
              22 février 2006 à 21:54:00

              Bien ?

              Je ne l'ai pas appliqué. C'est de la théorie, perso (j'en ai pas encore l'utilité).

              Mais de visu, le problème, serait au niveau du temps d'exécution...
              Enfin je ne sais pas.


              Lpu8er
              • Partager sur Facebook
              • Partager sur Twitter
                22 février 2006 à 23:00:39

                Heumm...

                Quand je lis un sujet, j'ajoute mon id_membre à la chaine 2-45-57-54-86-42 dans membres_passes.
                Quand un membre ajoute un message au sujet, il supprime cette liste et on recommence. (pour qu'elle soit non lu pour tout le monde après le nouveau message)

                Pareil pour les forums.

                Nan, ca colle pas ! o_O

                Si je veux savoir sur index.php si un nouveau message est posté dans l'un des 50 dernier sujets ou qu'un nouveau sujet est posté, je ne vois pas comment faire, j'croi qu'on ne peux pas utiliser la techniques des chaines.

                Je récupère membres_passes WHERE id_forum='ce_forum' ORDER BY date_dernier_message_posté LIMIT nb_sujet_par_page.

                En bouclant je met 4-25-48-35-79-61 + 21-48-35-478-69-32 (des nb_sujet_par_page sujet) à la suite sur une seul chaine.

                Et je vérifis si mon id_membre est dans la chaine final. Et ce pour chanque forums de l'index.

                Ca fait autant de requetes que de forum mais le collage des chaines risque de prendre du temps, il y aura (nb_de_forum * nb_sujet_par_page boucles) boucles au totale.

                Et nb_de_forum preg_match() mais la recherche ne sera pas trop lourde.


                C'est bon comme ca ? :) Y'a mieux ?

                Merciiiii !
                • Partager sur Facebook
                • Partager sur Twitter
                  25 février 2006 à 21:58:13

                  Quand est ce qu'un forum est considéré comme non lu ?

                  - Quand il y a une nouveau sujet (ça ok !)
                  - Quand il y a un nouveau message ? (ça pas sûr, ça risque de revenir trop souvent)

                  Quand est ce qu'un forum à été lu ?

                  - Quand le dernier message à été lu ?
                  - Quand on a été voir ce que contient le forum ?
                  - Quand on a été voir le contenu des 5 derniers sujet ?

                  Pouvez vous m'éclairer sur ces questions, je ne sais pas comment est ce que l'on doit considérer un forum.

                  Il ne faut pas que le forum nous rapel qu'il y a un nouveau message de façon trop fréquente, quoique...

                  Donnez moi vos avis s'il vous plait !! :D

                  Merci merciii !!! :)

                  PS : pas de technique dans cette question. Merci encore...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  sujet lus / sujet non lus

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown