JeuWeb - Crée ton jeu par navigateur
Forum, nouveau sujet - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Forum, nouveau sujet (/showthread.php?tid=5018)



Forum, nouveau sujet - phenix - 25-07-2010

Bonjour à tous,

Je suis en train de coder le forum de la vallée des larmes, que je veux entièrement intégrer au jeu. Je viens de finir l'affichage et la possibilité d'écrire de nouveau message.

Mais je bloque sur un problème de conception: comme savoir si un utilisateur a déjà vu les messages du forum ou non ?

Pour le moment, j'utilise 3 tables:

Categorie
Topic
TopicGroupe

Plus la table des joueurs.
J'avais pensé utilisé le timestamp des messages pour et le timestamp de la dernière connexion au forum du joueur. Mais je pense que cette méthode est assez lourde. Quelqu'un connait-il un moyen plus simple ?

Merci d'avance.


RE: Forum, nouveau sujet - Globe - 25-07-2010

Bah perso je pense que j'utiliserais le timestamp du dernier message posté dans un topic et une table qui stocke l'id du topic, l'id du membre et le timestamp de son dernier affichage du sujet. Quand tu affiches le topic tu vérifies si le timestamp du dernier affichage est inférieur à celui du dernier message. Je vois pas trop d'autre solution, enfin pas qui soit moins lourde.


RE: Forum, nouveau sujet - Melimelo - 25-07-2010

Et voilà un petit Tuto : http://www.siteduzero.com/tutoriel-3-31791-timestamp-messages-lus-non-lus.html


RE: Forum, nouveau sujet - phenix - 26-07-2010

Hello tout le monde,

merci pour le tuto, sa ma bien aidé.

Par contre, sa fait 1/2 journée que je planche sur un problème, j'ai beaucoup tourner sa dans tout les sens, pas moyen...

L'environement:

J'ai donc une variable de session ($_SESSION['forum']['lastVisite']) qui contient le timestamp de la dernière visite.
J'ai une autre variable ($_SESSION['forum']['topic']) qui est un tableau avec les id des topic déjà lu en clée et le timestamp de la visite en valeur.

Mon problème: Afficher s'il y a des nouveaux message au niveau des catégories.

Voici la fonction qui récupère les informations des catégories, j'ai essayer de commenter pour que ce soit le plus clair possible:

Code PHP :
<?php 
function list_cat() {

//Selection des informations des catégorie.
$sql = query('SELECT
cat_id,
cat_nom,
cat_description

FROM forum_categorie'
);
//Initialisation du tableau qui sera retourné.
$list = array();
while(
$a = mysql_fetch_assoc($sql)) {

//Selection des topics Non lu
$query = query('SELECT
topic_id,
topic_timestamp

FROM forum_topic

WHERE topic_timestamp > '
.$_SESSION['forum']['lastVisite'].' AND topic_idCat = '.$a['cat_id']);
//Initionalisation de la varible qui détermine s'il y a des nouveaux messages
$new = false;
while (
$s = mysql_fetch_assoc($query)) {

//Si le topic n'est pas dans le tableau il est forcément non lu.
if (!array_key_exists($s['topic_id'], $_SESSION['forum']['topic'])) $new = true;
else {

//S'il est dans le tableau, on teste le timestamp pour savoir s'il a déjà été lu.
if ($_SESSION['forum']['topic'][$s['topic_id']] < $s['timestamp']) $new = true;
}
}

//On crée la catégorie pour traitement d'affichage
$list[$a['cat_id']] = array(
'nom' => $a['cat_nom'],
'topic_id' => $a['topic_id'],
'description' => $a['cat_description'],
'new' => $new
);
}
//Bha return...
return $list;
}

Je vois pas vraiment ou sa merde et y a un coup dans le bureau maintenant...

Si quelqu'un peu jeter un oeil Wink.
Si y faut d'autre info, n'hésitez pas non plus.

Merci d'avance.


RE: Forum, nouveau sujet - phenix - 28-07-2010

Bon, à force de chipotter, j'ai fini par réussir.