Creation Forum PHP

Résolu/Fermé
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 - 15 sept. 2008 à 17:05
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 - 15 sept. 2008 à 18:17
Bonjour à tous.

Je suis en train de créer un forum "préfabriqué" (genre phpbb),
Je n'ai pas commencé la partie administrative, J'en suis à la partie d'affichage, Pour le moment tout marche très bien: je peux créer des nouveaux topics / répondre / éditer; enfin les fonctionnalités de base quoi :)

Mais voila, là j'ai un soucis :)
Je n'ai aucune idée de comment m'y prendre pour la gestion des nouveaux messages, Où comment afficher qu'un message est nouveaux pour certains utilisateur et pour d'autre non.

J'ai pensé à créer un champ "not_new_for"(text) (par exemple) et d'y insérer les utilisateurs qui ont visionné le message, de cette façon: "user1; user2; user4 ..." et d'ensuite utiliser une explosion de chaine avec pour délimiteur ";" et de vérifier si la $_SESSION['pseudo'] est égale a l'un des termes de l'array.

Je peux déjà limiter les dégas en enregistrant cette info que sur le topic principale et non sur les réponses, mais ça fais vraiment lourd si, imaginons, le forum compte 1000 utilisateurs ou plus et/ou contient 10k messages...

Donc voila, si vous voyez d'autre solutions, j'attends vos conseils :)
A voir également:

5 réponses

Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
15 sept. 2008 à 17:21
Tu peux peut etre inserer un champs pour les membres :
viewed_post

en imaginons que tu donne un id par post respectif a un topic. Id qui sincremente.

genre viewed_post contient 1,13-7,2-2,5

l'utilisateur a deja vu les 13 premiers post du topic 1, les 2 du topic 7 et les 5 du topic 2.
Tu remplace l'id du dernier post vu par l'id du dernier post du topic lorsque l'utilisateur clique sur le topic.

ex :
Pikachu a notemment la variable viewed_post = 1,9
Il clique sur le topic 1
il y a 53 message dans le topic 1
le champs devient 1,53

Ainsi il suffit de faire une requete pour obtenir viewed_post.
D'explode avec le separateur '-'.
De comparer les premiers caracteres jusqu'a ',' avec l'id du topic.
Verifier si la valeur (9) est egale au nombre de posts (53).

A mon avis c'est deja moins lourd (1 requete pour la variable viewed_posts et 1requete/topic).
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
15 sept. 2008 à 17:30
Effectivement ça a l'air plus légé, et pas spécialement plus compliqué.
Merci, je vais plancher la dessus ce soir :)
0
billwate Messages postés 48 Date d'inscription samedi 2 août 2008 Statut Membre Dernière intervention 19 avril 2010 28
15 sept. 2008 à 17:32
La première chose c'est de bien s'entendrent sur les termes suivants :
- nouveaux messages
- messages lus ou visionnés

ma compréhension du terme nouveau message pour un usager, ce sont les messages postés depuis la dernière visite de cet usager sur le site. Alors dans ce cas il suffit d'avoir un champ date pour enregistrer les dates et heures de visites. A la prochaine visite, on met cette date dans une session (avant de l'écraser par la date et l'heure de la visite courante ).
Pour trouver les nouveaux messages par rapport à l'usager, il suffit de comparer les dates des messages à la date dans la variable de session.

Pour les messages visionnés, il est plus indiqué de créer une table qui associe la table des messages à celle des usagers.
Base de données relationnelles : tables liés n à n

usagers ---------------->messages lus <-------------------messages

0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
15 sept. 2008 à 17:40
Ah j'y avais pas pensé a celle ci =)
Comparer la date de la dernière visite avec la date des topics, ça me parait encore plus légé,
surtout que la date "lastvisit" est déjà enregistrée dans ma table users :)
ça me parait pas mal, bien plus légé, mais je suppose que la mise en place sera plus compliqué, surtout qu'il faut aussi géré les nouveaux messages, posté pendant la visite.

En tout cas Merci beaucoup
Jvais voir tout ça ce soir, j'ai du code qui m'attends :P
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
15 sept. 2008 à 17:52
Le probleme de te fier sur la derniere visite est que ce n'est pas du tout representatif.
En effet, le mec peut s'etre log a une date T sans pour autant avoir clique sur les nouveaux topics.

Sa last_visit sera superieur aux dates des messages mais ils resteront non-vu.
0
billwate Messages postés 48 Date d'inscription samedi 2 août 2008 Statut Membre Dernière intervention 19 avril 2010 28
15 sept. 2008 à 18:09
Relis bien mon message et tu veras que ce sont deux solutions qui sont proposées, une pour les nouveaux messages, une pour les messages lus.
0
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182 > billwate Messages postés 48 Date d'inscription samedi 2 août 2008 Statut Membre Dernière intervention 19 avril 2010
15 sept. 2008 à 18:17
Si j'ai bien compris kira parle exlusivement de la notion de messages lus/non lus.

De plus marquer simplement les nouveaux messages sans prendre en compte si ils ont ete lu ou pas par le membre mais juste les marquer comme nouveau ne me semble pas utile.
Si tu marques les messages non-lus tu marques obligatoirement les nouveaux messages. Enlever cette marque juste parce que tu t'es deja connecte depuis leur date d'ecriture sans les avoir lu me parait etrange.

Sauf si j'ai mal compris ce que tu voulais dire. (Je ne suis pas un grand adepte des forums donc surement que certaines utilites m'echappent. Dans ce cas je suis tout ouie ^^!)
0