Vous n'êtes pas connecté - 0 membre connecté
Catégories
Graphisme
Flash (48)
Print (64)
Programmation
PHP (63)
ASP (2)
CSS (23)
Hardware
PC (34)
Mac (14)
Linux (5)
Divers
Blabla (237)
868 Sujets
11777 Réponses
Programmation > PHP > Forum (Autre question)
Forum (Autre question)
Salut la commu, je dépoussière un peu mon compte chez BZ ça fait tellement longtemps que je suis pas passé que j'en avais oublié mon mdp ^^

Je développe un petit forum perso, rien à voir avec une usine à gaz du genre PHPbb et j'ai une question concernant la façon de "logguer" les sujets lus par un membre:
Pour savoir si un membre a lu ou non un sujet il me semble logique de stocker en base la liste des sujets qu'il a lu mais...
Sous quelle forme serait ce le plus efficace ? Un champ de type longText qui contiendrait tous les id des sujets lus par le membre (ex: 1 2 7 56 8...), ou l'inverse, à savoir logguer sur chaque sujet la liste des membres qui l'ont lu ?
Ca me parait un peu lourd comme méthode non ?

Merci
@++ Tyler
Posté le 14 07 2008 à 16h04
tyler - Membre - www

Réponses - Forum (Autre question)
<< 1 2 >>
Lu / non lu, mais il faut aussi gérer s'il y a des nouveaux posts dans les topics... Donc une date (?), à moins que tu ne le fasses par rapport à la date de connexion.

En terme de performance, je ne sais pas du tout ce qui est préférable. Je ne saurais trop te conseiller d'étudier des forums existants pour voir quelle option est la meilleure...
Posté le 14 07 2008 à 23h41
Ishiro - Membre - www
 Perso sur benzor.com on met tout ça dans un cookie spécifique !
Avec une chaine de caractère contenant 2 séparateurs genre : id_sujet_SEP1_nbReponses_SEP2_ id_sujet_SEP1_nbReponses etc...
Voici en vrai la gueule du cookie "bzForumMemo" :

i665n58i677n25i679n7i805n17i837n5i839n12i838n8i957n1i955n11i956n4

i -> Séparateur id-sujet, n -> Séparateur nbRéponses

Après à l'affichage tu fais un explode de cette chaine dans une fonction et tu récupère pour le visiteur les sujets lu ou non, et le nb de nouvelles réponses par sujet depuis sa dernière visite.

Il faut ensuite à chaque clique sur un sujet, ou à chaque fois que l'utilisateur répond, bien mettre à jour cette chaine de caractère.

Pour te donner une idée voici la fonction qui récupère le nb de nouvelles réponses par sujets :


<?
Function SelectNewReponses($SF_id$nbReponses)
{
    if(
ereg("i".$SF_id."n([0-9]{1,})",$_COOKIE['bzForumMemo'],$valeurRep))
    {
        
$nouvellesReponses $nbReponses $valeurRep[1];
        if(
$nouvellesReponses 0)
        {
            
$retour "(".$nouvellesReponses" Nouvelle";
            if(
$nouvellesReponses 1$retour.="s";
            
$retour .=")";
            Return 
$retour;
        }
        else
        {
            Return 
false;
        }
    }
    else
    {
        Return 
"(Nouveau sujet)";
    }
}
?>
Edit : Sinon ca fait toujours plaisir de voir un des membres les + talentueux du site revenir :)
Posté le 15 07 2008 à 10h13
benzor - Administrateur - www
bz> Ya pas moyen de mettre mon cookie en base, parcequ'à force de changer de plateforme et de vider les traces, ben c'est comme si j'avais jamais rien lu.

(donc le cookie pour moi c'est pas une bonne solution. De plus, dans la section membre, il faut que je clique sur le message et sur nouveau message pour enlever "vous avez un nouveau message")
Posté le 15 07 2008 à 10h47
o0o - Administrateur - www
+1 pour triplo, les cookies c'est parfois désactivé, ça se vide régulièrement, etc...
Posté le 15 07 2008 à 13h20
Ishiro - Membre - www
ouais mais les Cookies, c'est bon miam !


... enfin bon je donne l'exemple avec des cookies, rien n'empêche de faire exactement la même chose dans un champ de la table membre. Cela-dit l'avantage des cookies c'est que tu peux mémoriser ces infos même pour les gens non connectés au site.
Posté le 15 07 2008 à 16h11
benzor - Administrateur - www
Encore mieux, si la personne est membre -> Bdd, sinon -> Cookie ! :)
Posté le 15 07 2008 à 17h24
Ishiro - Membre - www
Yep, en fait une solution BDD me parait plus appropriée (pour les membres loggués only) de façon à conserver l'histo des posts lus pas le membre de façon à ce qu'apparaissent clairement les posts non lus.

Ishiro > J'ai essayé de regarder comment procède PHPBB pour logguer les posts lus mais je n'ai pas trouvé: 62 tables dans la base et des kilométres de code...il va falloir faire un peu de spéléo là dedans ^^

En fait la solution de logguer dans un champ avec un séparateur me semble très simple à mettre en oeuvre mais j'ai peur de surcharger le serveur lorsque la base sera devenue énorme.

Thanx les gars
Posté le 17 07 2008 à 12h48
tyler - Membre - www
Ouais, je comprends ta crainte. Essaie de voir du coté de PunBB (ou du fork, je me rappelle plus de son nom, mais google va t'aider).

phpBB est très usine à gaz, punBB est très léger, tu devrais (peut être) mieux t'en sortir. ;)
Posté le 17 07 2008 à 14h09
Ishiro - Membre - www
en même temps tu rajoute un champs type mediumtext dans ta table membre, ce qui suffira largement et ne surchargera pas trop ta bdd ^^
Sinon tu as la solution intermédiaire d'une table avec seulement 2 clés : id_membre, id_sujet et tu fais une insertion en mode DELAYED à chaque fois qu'un membre clique sur un sujet... super light et efficace.
Posté le 17 07 2008 à 14h49
benzor - Administrateur - www
Pour ceux qui comme moi ne connaissent pas le mode DELAYED
dev.mysql.com

Bon jvai lire ça ;)
Posté le 17 07 2008 à 15h15
ZeA - Membre - www
<< 1 2 >>
Sujets PHP
<< 1 2 3 4 5 6 7 >>
Fonction de (...)
Auteur : aguenard
Posté le 31 05 2007 à 14h13
5 Réponses (Nouveau sujet)
Sujet visité 1246 fois
Récupérer état dans (...)
Auteur : aguenard
Posté le 11 05 2007 à 10h38
16 Réponses (Nouveau sujet)
Sujet visité 1512 fois
Fonction (...)
Auteur : aguenard
Posté le 14 04 2007 à 19h37
7 Réponses (Nouveau sujet)
Sujet visité 2094 fois
Regexp : Ereg serait (...)
Auteur : Phoenix
Posté le 14 03 2007 à 19h08
5 Réponses (Nouveau sujet)
Sujet visité 972 fois
Date II, the revenge
Auteur : tyler
Posté le 12 02 2007 à 15h54
15 Réponses (Nouveau sujet)
Sujet visité 1038 fois
Proposition de stage
Auteur : bob
Posté le 14 02 2007 à 17h30
1 Réponse (Nouveau sujet)
Sujet visité 656 fois

Sujet bloqué
Inverse de (...)
Auteur : tyler
Posté le 09 02 2007 à 12h13
6 Réponses (Nouveau sujet)
Sujet visité 1060 fois
[résolu] mySQL & css
Auteur : geoffroy
Posté le 06 02 2007 à 15h00
11 Réponses (Nouveau sujet)
Sujet visité 764 fois
[Résolu] Mysql et (...)
Auteur : aguenard
Posté le 04 02 2007 à 17h25
3 Réponses (Nouveau sujet)
Sujet visité 860 fois
localisation
Auteur : senkante
Posté le 28 01 2007 à 17h20
9 Réponses (Nouveau sujet)
Sujet visité 1202 fois
<< 1 2 3 4 5 6 7 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006