Rechercher : dans
Par :

Creation Forum PHP

Dernière réponse le 15 sep 2008 à 21:46:32 xxkirastarothxx, le 15 sep 2008 à 17:05:29 
 Signaler ce message aux modérateurs

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 :)

Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « Creation Forum PHP » dans :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Génération d'images VoirPrérequis PHP permet de créer des images au format GIF à l'aide d'une librairie de fonctions prévue à cet effet. La librairie permettant de créer et manipuler des fichiers graphiques se nomme GD, ainsi, pour pouvoir utiliser ces fonctions il faut...
Introduction à PHP VoirQu'est-ce que PHP? PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La...

1

Fricky42, le 15 sep 2008 à 17:21:51

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).

Répondre à Fricky42

2

xxkirastarothxx, le 15 sep 2008 à 17:30:48

Effectivement ça a l'air plus légé, et pas spécialement plus compliqué.
Merci, je vais plancher la dessus ce soir :)

Répondre à xxkirastarothxx

3

billwate, le 15 sep 2008 à 17:32:33

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

A chaque pas en arrière, il faut en faire au moins deux en avant

Répondre à billwate

4

xxkirastarothxx, le 15 sep 2008 à 17:40:28

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

Répondre à xxkirastarothxx

5

Fricky42, le 15 sep 2008 à 17:52:17

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.

Répondre à Fricky42

6

billwate, le 15 sep 2008 à 18:09:07

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. A chaque pas en arrière, il faut en faire au moins deux en a­vant

Répondre à billwate

7

 Fricky42, le 15 sep 2008 à 18:17:04

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 ^^!)

Répondre à Fricky42
Collection CommentÇaMarche.net