Creation Forum PHP
Résolu
xxkirastarothxx
Messages postés
380
Date d'inscription
Statut
Membre
Dernière intervention
-
Fricky42 Messages postés 466 Date d'inscription Statut Membre Dernière intervention -
Fricky42 Messages postés 466 Date d'inscription Statut Membre Dernière intervention -
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 :)
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:
- Creation Forum PHP
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
- Abonnement iptv illegaal forum - Forum TV & Vidéo
5 réponses
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).
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).
Effectivement ça a l'air plus légé, et pas spécialement plus compliqué.
Merci, je vais plancher la dessus ce soir :)
Merci, je vais plancher la dessus ce soir :)
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
- 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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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 ^^!)
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 ^^!)