
Forum TourDeJeu · Règles du forum |
![]() ![]() ![]() |
Bienvenue invité ( Connexion | Inscription ) | Recevoir à nouveau l'email de validation |
![]() ![]() ![]() |
-=[ X-ZoD ]=- |
Ecrit le : Mardi 07 Juin 2005 à 19h38
|
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
et bien je vous explique
je voudrais trouver le moyen que le user voit sur le forum quels messages ont de nouvelles reponses qu'il n'a pas encor lu. pour ceux qui conaisse bha j'utilise light forum de phpdebutant que je remasterise a ma façon ![]() j'ai deja pensé a stocké les login dans la bdd au niveau du message en kestion kan il vient lire le message..ainsi quand il ouvre le forum une requete verifie si son pseudo se trouve ds le champ "USERS PASSE" du message ...et c'est pas le cas..il indique qu'il n'a pas encor lu le message... mais c'est solution est a exclure car la bdd se chargerai bien trop vite alors vient ensuite la solution ds cookies..... est ce une bonne idee? y a til d'autre idee? car en fait je ne sais pas coment procedent les forum pro qui ont cette fonction merci -------------------- ![]() |
Nonothehobbit |
Ecrit le : Mardi 07 Juin 2005 à 21h03
|
![]() Alien ![]() Groupe : Moderateurs Messages : 1298 ![]() |
Je réponds pas souvent aux pb purement technique mais là j'ai moi même eu le problème quand j'ai du programmer le forum d'ideo et j'ai bien galérer pour trouver un truc.
Du reste, j'aimerai également bien savoir comment font les autres... Au départ, on a 2 solutions : soit on stocke l'information avec le sujet/message (donc une liste d'utilisateurs), soit on stocke l'information avec l'utilisateur (donc une liste de messages). Si on opte pour la première solution on a le problème suivant : les messages sont (potentiellement) accédés par tout le monde. Donc, tout le monde charge des données relatives à d'autres utilisateur. La quasitotalité des données transitées sont donc totalement inutile. De plus, l'utilisateur recharge ces données à chaque message ! Donc de la perte de performance pure. A l'inverse, si on stocke les infos avec l'utilisateur, celles-ci ne sont utilisées que par les personnes concernées. Pas de chargement inutiles. Mais surtout, il est possible de ne les charger qu'une seule fois et de les conserver en session (ou par cookie) étant donné que la seule chose pouvant modifier ces données c'est l'utilisateur lui-même. Donc on a un suivi constant des données, pas besoin de les recharger. Vous me suivez ? ^^ Donc voilà, après reste à savoir comment stocker ces information. Cookie ? Session ? Base de données ? Là c'est plus libre à chacun... Pour ma part, je stocke en bdd toutes les dates de dernière visite d'un sujet par l'utilisateur (s'il a été visité). Ensuite, lorsque l'utilisateur affiche la liste des sujets, je marque comme non lu tous les sujets dont la date du dernier message est supérieur à celle enregistrée pour le sujet (ou ceux dont on n'a aucun enregistrement). Si le sujet est visité, la date est mise à jour. Ensuite, pour ne pas empiler indéfiniment des dates, si la date de dernière visite dépasser une période limite (1 mois par exemple), alors je la supprime de la liste et je considère tous les sujets de plus d'un mois comme lus automatiquement. Pour le stockage de la liste des sujets : je fais ça sous la forme d'un tableau php serialisé enregistré dans un seul champ bdd (transformé en chaîne de caractère, cf fonction serialize()). -------------------- |
-=[ X-ZoD ]=- |
Ecrit le : Mercredi 08 Juin 2005 à 06h16
|
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
mai bien sur!!!!!!!!!!!!!!!
comparer les dates de visites a celle des emssages ^^c'est pas bete du tout ouai mais je pense que mon principal problem sera qu si il voit u message d'u sous forum bha il markera les autres messages de ce forum comme lu :s a moins de creer un champ de dates poru chak message diferents mai la ça deviet trop grand mais bon deja au moins je sais comment m'y prendre sauf que j'orai du mal a distingué les message lu de non lu une fois il aura lu un seul de message non [car sa date sera mise a jour et sera forcement superieure aux dates des autres messages] je c po si je me fai bien comprendre ![]() mais je pense avoir compris que ton serialize() regle le problem..... du coup vai aller voir mon copain google poru en savoir plus ...en tout cas merci nono ^^ -------------------- ![]() |
-=[ X-ZoD ]=- |
Ecrit le : Mercredi 08 Juin 2005 à 06h58
|
||||
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
bon me revoici apres mes recherche selon ce que j'ai compris serialize() permet de rentrer un tableau das une variable en le mettant sous forme de chaine de caractere.... et unserialize() de reutiliser les donnee stocké dans la variable du serialize() bon alor heu... moi voici comment je pense proceder [pour l'instant car a mon avis d'autres idee vont me venir dsn la journee.
voila ici on a recuperer toutes les sujet des messages....
ça implique donc que tu recupere dans une table toutes les dates de tous les messages du forum en cours...et par utilisateur en plus ![]() ensuite tu les compare aux dates de derniere visite [en fonction de l'utilisateur]<=- ce qui implique que ça aussi tu le stock ds la bdd ![]() moi de mon coté j'ai deux autes solutions a proposer: 1°) lorsque le user se conect ux forums sa date de derniere visite [globale] est comparé aux dates des message et elle affiche ceux dnt les dates sont superieurs a sa date de derniere visite..... pis quand il quitte le forum sa date de derniere visite est mise a jour.... ma methode est un peu archaique et de ce fait je ne peux gerer les methodes d'erreur du style qu si la personne est bruskement deconecté pour un raison ou un autre etc.... 2°)chaque fosi e le user lit un message , ce dernier cree un cooki avec date de derniere visite de CE message...et donc a sa prochaine venue la date du dernier message sera comprarée a celle stockée dans le cookie puis mise a jour... -------------------- ![]() |
||||
Nonothehobbit |
Ecrit le : Mercredi 08 Juin 2005 à 10h02
|
||
![]() Alien ![]() Groupe : Moderateurs Messages : 1298 ![]() |
Si tu fais la 1, l'utilisateur ne vera comme non lus que les nouveaux messages depuis sa dernière visite. Ca a le mérite de ne pas prendre de place (on ne stocke qu'une seule date), mais faut voir si c'est bien ce qu'on veut. ![]() La 2 devrait marcher, mais l'user aura autant de cookie que de messages lus, c'est pas très, très propre.
Pas besoin de charger tous les message, tu peux t'arranger pour stocker la date de derniere modification du sujet dans la table du sujet. Ou alors de faire une requête qui sélectionne en même temps que le sujet, la date du dernier message. Les dates de dernière visite sont effectivement stockées en bdd, mais toutes rassemblées dans un seul enregistrement par utilisateur comme expliqué (un tableau serialisé). J'ai oublié de préciser que c'était forcément un tableau associatif idsujet=>date de derniere visite. Du coup il suffit de comparer la date de derniere modif du sujet avec tab[idsujet]. ![]() -------------------- |
||
[VYS] |
Ecrit le : Mercredi 08 Juin 2005 à 10h19
|
||
![]() Ouf ![]() Groupe : Membre Messages : 317 ![]() |
Ca ne marchera pas : le nombre de cookie par domaine est limité par le navigateur (de mémoire 50 pour IE et Mozilla). L'alternative de mettre tout dans un string avec séparateur ne marchera pas non plus puisque la taille individuelle d'un cookie est également limitée. Pour avoir une vue des nouveaux messages, il y a deux solutions "propres": 1. Simple : comparaison de la date de modif du msg avec la date de dernière visite (enregistrée dans la session lors de sa création et mis à jour dans la DB à ce moment) 2. plus lourd mais plus complet : une table de jointure entre les messages et l'utilisateur. Cette table contient un champs à 2 positions : 0 pour "Vu" et 1 pour "Lu", l'inexistance de la jointure pour un sujet et un utilisateur indiquant que le message est nouveau. Attention à bien utiliser un OUTER JOIN et pas une jointure traditionnelle. -------------------- |
||
-=[ X-ZoD ]=- |
Ecrit le : Mercredi 08 Juin 2005 à 16h44
|
||||||
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
j'y ai pensé mai il faudrai savoir quand la date de derniere visite est mise a jour...car il y aurai une seule date pour tous les forums et message ce qui reviendrait a dire que si la date de derniere visite est surperieur a la date du dernier message [aussi elevé soit il] d'ub forum...alors tous les autres message aparaitront comme LU. exempel concret: - je me conect - comparaison des dates de derniers messages avec ma date de derniere visite - "tiens il y a 3 nouveaux message" - je reponds a un , deux puis 3 messages. => les icone de messages resteront en NON LU car la date de derniere visite sera mise a jour quand je quiterai le forum...pkoi quand je quiterai le forum? parce que si on la met a jour en entrant dans le forum...tous les messages seront toujour considere comme LU puiske la date la plsu haute est la mienne. pour y remedier il faudrai creer un enregistrement derniere visite pour chak mesage de forum afin de les comparer une a une au lieu de globalement ![]() je savais pas qu'il y avait autant de restrictions pour les cookies.....mon idéé tombe a l'eau ![]()
va faloir que je fasse des recherche sur google de ce coté la...donc je verai bien ce que j'apprends
bha poru ce qui est de stocké la dae de modifs cest deja oki donc pas de problem de ce coté la..... j'ai compris ce que tu veu dire par tableau associatif... exemple concret poru m'assurer e j'ai bien compris: - je vai sur le forum une premiere fois - le tableau associatif se cree et recupere les date de tous les sujets .......la cetai un coup pour rien...je re kk jours plus tard - le tableau compare les dates des sujets avec celles stockées dans le tableau - quand je vais lire un sujet, il met a jour la date dans le tableau.... => c'est ainsi que je l'ai compris......mai je suis pas sur dvoir compris le fond du code....tu serialise les dates des sujet..et la variable du serialise tu la stock dans la bdd...ensuite tu la recuperer en la deserialisant....et ensuite tu compare les tab[] avec les dates...mais comment tu fait poru savoir a quel sujet correspond quel date dans le serialise...car ce n'est qu'un amoncelement de date en vrac..sans identité precises....je vois pas comment tu peut pointer une date precise en passant par tab[2] (c'est un exemple....) ça aussi vai le chercher sur google..mais eclairement toujours si possible -------------------- ![]() |
||||||
Nonothehobbit |
Ecrit le : Mercredi 08 Juin 2005 à 17h55
|
![]() Alien ![]() Groupe : Moderateurs Messages : 1298 ![]() |
Nan t'as pas compris.
Au départ (1ere visite) le tableau est vide. L'utilisateur va voir le sujet n (ou n est l'id du sujet), on enregistre donc dans le tableau tab[n] = datededernieremodifdusujet. Et ainsi de suite pour chaque sujet. Le tableau est enregistré à chaque fois en bdd via un serialize et récupéré à chaque connexion avec un unserialize. Mais au final on bosse toujours sur le même tableau. Pour savoir si un sujet n a été lu ou non lu il suffit de comparer tab[n] avec la date de derniere modification du sujet, tout simplement. Si tab[n] n'existe pas, alors c'est que je n'ai jamais lu le sujet, tout simplement. -------------------- |
-=[ X-ZoD ]=- |
Ecrit le : Mercredi 08 Juin 2005 à 20h22
|
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
oki la c'est plsu claire ça m'a lair super pratik ^^
je me demandai jsute commen on fait poru savoir a kel tab[n] un sujet correspond ....mai il sufira de remplacer n par l'id du sujet ^^ bon now fo ke je trouve commen on creer des tableau en php...google time -------------------- ![]() |
-=[ X-ZoD ]=- |
Ecrit le : Mercredi 08 Juin 2005 à 21h02
|
||||||
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
oki voila j'ai armpenté le net pour trouver des infos
jsuque la je pense avoir saisi...j'ai ouu chercher coment on rajoute un element et j'ai trouvé ça
mai moi ce que je veux faire ce serai plutot du style
voudrai savoir si j'ai le droit de le faire :s...je continue de chercher en atendant -------------------- ![]() |
||||||
Nonothehobbit |
Ecrit le : Mercredi 08 Juin 2005 à 22h02
|
![]() Alien ![]() Groupe : Moderateurs Messages : 1298 ![]() |
Houlala, c'est quand même les bases du php tout ça. Je te conseille de vite te replonger dans des cours sur le net, t'es trop pressé, tu vas trop vite...
![]() -------------------- |
-=[ X-ZoD ]=- |
Ecrit le : Jeudi 09 Juin 2005 à 16h49
|
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
bha c'est comme ça que j'apprend en fait....en cours je sui censer commencer le php en deuxieme anee donc je n'ai pas de conaissance propres...mais j'aprends en manipulant...je toruve que ça rentre mieu dans la tete ^^
sinon bha je pense ke la fonction push_array correspond a ce que je cherche... je crois que c'est bon j'ai trouver comment ça marche....me reste plsu qu'a trouve run bon algorithme qui fonctionne corectement avec merci a toi nono -------------------- ![]() |
Nonothehobbit |
Ecrit le : Jeudi 09 Juin 2005 à 22h08
|
![]() Alien ![]() Groupe : Moderateurs Messages : 1298 ![]() |
Ce que je veux dire, c'est que faire un jeu c'est pas le meilleur moyen de commencer. Il faut d'abord maîtriser les concepts de base, puis faire de petites choses (site, livre d'or, forum, annuaire...). On avait fait pas mal de posts à ce sujet, mais je ne sais plus où ils sont. :-/
-------------------- |
-=[ X-ZoD ]=- |
Ecrit le : Vendredi 10 Juin 2005 à 11h36
|
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
bha en faitc'est arrivé brusquement;...c'est un pote qui faisai des sites web comme moi qui m'a proposer de nous lancer dans les jeu sur le net en php...alors au debut jmen foutais un peu..pis au fur et a mesur que je decouvrai le php j'etais baré dedans.....du coup sur ma lancée j'apprnds le php via mon site ^^
-------------------- ![]() |
-=[ X-ZoD ]=- |
Ecrit le : Samedi 11 Juin 2005 à 19h25
|
![]() Pro ![]() Groupe : Membre Messages : 157 ![]() |
alors me revoila......
j'ai reussi a installé mon sytem de codage et aperement il fonctionne nickel... je vosu remercie les gars ![]() -------------------- ![]() |
![]() ![]() ![]() |