28 07 2002 à 21:22 |
plop all je commence à rentrer dans le sérieux en php, avec mon premier vrai script complet, à savoir un forum ^^ j'ai bien médité sur mes tables, l'optimisation à terme etc ; mon problème ne vient pas du code lui même, mais d'une partie à réaliser. je voudrais, pour chaque membre, pouvoir lui indiquer cb de nouveaux topics ont été postés dans chque sujet depuis sa dernière visite. j'ai pas mal d'options ... utiliser une table spéciale, potentiellement grande car nbreuser x nbretopics utiliser les cookies, mais potentiellement lourd (..) car tel que je connais les cookies (faible niveau ..), ça donnerai un cookie par topic ... mon idée est d'enregistrer (quelque part, et comment, là est ma question en réalité), la date du dernier message posté dans un topic lorsque l'utilisateur a LU le topic (cad chargé dans son chtit navigateur), puis, lorsqu'il revient, comparer cette date (lastmsg_topic# par exemple) avec les date de tous les message du topic en question ; si lastmsg_topic# < date_msg alors tout les messages après le supérieur, y compris lui-même bien sur, sont des "nouveaux messages" (pour le visiteur lambda en tout cas). donc .. 1. des pistes à me donner pour réaliser ceci ? 2. comment (piregwan/autre) vous y prenez-vous personnelement pour faire ceci ? |
|
28 07 2002 à 21:28 |
Perso je m'y prend un peu comme piregwan, je n'utilise qu'un seul cookie pour tout le site - étant donné que les cookies sont limité à 20 par domaine - dans le quel je stocke selon un schéma qqonque les infos dont j'ai besoin : id du sujet et nombre de réponses à la dernière visite. Ensuite je décode le cookie à chaque visite pour afficher le nombre de nouvelles réponses à l'aide de tableaux. |
|
28 07 2002 à 21:31 |
tu saurais me donner un court exemple bidon de la chose stp ? |
|
28 07 2002 à 21:50 |
http://www.piregwan.com/scripts/index.php?rub=a... pour l'exemple. Même pas bidon |
|
28 07 2002 à 21:50 |
Script dans le script vault, posté par notre amis Defraagh il y a 2 minutes. Merci Defraagh, j'avais besoin de ça |
|
28 07 2002 à 21:53 |
rapidité, efficacité, productivité .. presque du Jean-Luc Delarue ^_^ (cf. Les Guignols, au bon vieux temps de C+ ^^) merci beaucoup ! |
|
28 07 2002 à 22:07 |
Oui, bon, bien les cookies mais bientot tu devra utiliser un base de donné MySQL (c'est mieux). Et la attention, ca risque d'etre la galère. |
|
28 07 2002 à 22:15 |
bientot tu devra utiliser un base de donné MySQL (c'est mieux). euh ? je ne suis pas sûr que dans ce cas une base de données soit "mieux" qu'un cookie : le bdd atteindrai vite une taille folle et comment détecter quel est le visteur ? enfin si c'est une solution alternative et que c'est mieux, ça m'intéresse. [edit : on pourrait gérer un mini-forum qu'avec des cookies ? ok, je fais une pause c'est l'heure de mon casse-dalle de minuit ] |
|
28 07 2002 à 22:30 |
(note : ça me tue à chaque fois, de voir "15" sous ton pseudo ... respect ^^) *attends l'idée suivante :p* |
|
29 07 2002 à 06:50 |
Moi le "15" ça me fait penser qu'il peut mieux faire ^^ :p Prêt pour un nouveau test mon petit rat de labo ?? |
|
29 07 2002 à 07:29 |
aïe aïe aïe non ! pas le tuyau pour la connection de directe de mon cervelet sur la bdd ! |
|
29 07 2002 à 16:39 |
avec du php en utilisant un cookie : <? function ReadCookie($valCookie,$idMsg,$nb_replies) { # lit le cookie visiteur pour chaque message. # valeurs retournées : # - 'no' => aucun nouveau msg depuis la dernière visite # - un nombre => nombre de nouveaux msg depuis la dernière visite # - 'new' => ce message n'a pas encore été vu par le visiteur $recherche_dans_cookie="id".$idMsg."A"; if(eregi($recherche_dans_cookie, $valCookie)) // $recherche_dans_cookie a été trouvé dans $valCookie { eregi( "id".$idMsg."A(.*)Z",$valCookie,$lastRep); $newRep = $nb_replies-$lastRep[1]; if ($newRep <=0) { print (" <img src=../interface/spacer.gif width=10> <br> "); } else { print ("$newRep "); if ($newRep> 1) print ("nouvelles réponses <br> <img src=../interface/spacer.gif width=10> <br> "); else print ("nouvelle réponse <br> <img src=../interface/spacer.gif width=10> <br> "); } } else { print ("nouveau sujet <br> <img src=../interface/spacer.gif width=10> <br> "); } } ?> et <? // DEBUGGER INITIALISE // error_reporting(E_ALL); // DEFINITION DES FONCTIONS DE MISE A JOUR DES COOKIES NEWS SUR LE FORUM function CreateCookie($nomCookie,$idMsg,$nbreReponses) { # crée ou modifie le cookie sur l'ordinateur du visiteur # on rentre dedans l'id du message, et le nombre de réponses qu'il y avait à la dernière visite # retourne 0 ou 1 # ATTENTION : doit être lancée avant tt envoi de HTML ! global $$nomCookie; if(eregi("id".$idMsg."A", $$nomCookie)) { $new_cookie=eregi_replace("id".$idMsg."A([0-9]*)Z" ,"id".$idMsg."A".$nbreReponses."Z",$$nomCookie); } else { $new_cookie = $$nomCookie."id".$idMsg."A".$nbreReponses."Z"; } return SetCookie($nomCookie,$new_cookie,time()+3600*24*36 5,"/","",0); } ?> ++ |
|
29 07 2002 à 16:45 |
merci msieur ^_^ mille fois merci , c'est purement logique tout ça, je vais appliquer maintenant. |
|
Pour répondre à ce sujet (et notifier automatiquement son auteur), cliquez sur le bouton REPONDRE A CE SUJET. Si vous voulez en plus avertir de votre réponse une personne qui a participé à ce sujet, cliquez sur le bouton en face de son intervention. Enfin si vous voulez inviter quelqu'un à réagir, utilisez les appeaux ci-dessous. Seuls les membres logués peuvent utiliser les appeaux et seuls les membres actifs peuvent être appeautés ^^. Bonne notification ! Vous n'êtes pas membre ou vous n'êtes pas logué(e) ou les appeaux sont désactivés dans votre profil. Vous ne pouvez pas utiliser les appeaux. |