Nouveau sujet Répondre Imprimer Syndication RSS 2.0

Voir les messages postés depuis sa dernière visite ?

Nouvelle étincelle
Avatar de anaphel
  • Age : 23 ans
  • Messages : 11
  • Inscrit : 08 Juillet 2007
Message édité 3 fois, dernière édition par anaphel, 23 Septembre 2007, 1:27     Lien vers ce message 23 Septembre 2007, 1:22

Reprise du dernier message

ok, dans mon top.php je recupere la session de l'user pour pouvoir afficher les dernier msg des forum privé ou non suivant sil est membre privé ou bien membre normal/visiteur. Voici le bout de code qui affiche les 8 derniers msg pour un visiteur ou un membre normal

// f_id 14 et 15 etant les 2 forum privé que je ne veut pas voir apparaitre dans les derniers msg
$query = "SELECT * FROM `fsb2_topics` WHERE (f_id != 14 && f_id != 15) ORDER BY t_last_p_time DESC LIMIT 0,8";
$result = mysql_query($query);
while ($topic = mysql_fetch_array($result))
{
    $query2 = "SELECT * FROM `fsb2_forums` WHERE f_id = $topic[f_id]";
    $result2 = mysql_query($query2);
    $forum = mysql_fetch_array($result2);
    // coupe le titre s'il est trop long et rajoute "..."
    if(strlen($topic['t_title']) > 18 ) {
        $titre = substr("$topic[t_title]",0 , 18);
        $titre .= "...";
    }
    else {
        $titre = substr("$topic[t_title]",0 , 18);
    }
    echo "<img src=\"images/accueil_msg_new.gif\"> ";
    affiche_date($topic['t_last_p_time'],1 , 1);
    echo " : <a href=\"forums/index.php?p=forum&f_id=".$forum['f_id']."\">".$forum['f_name']."</a> > ";
    echo "<a href=\"forums/index.php?p=topic&t_id=".$topic['t_id']."\">".$titre."</a> (".$topic['t_total_post'].")<br>";
}


donc en fait a la place de
echo "<img src="images/accueil_msg_new.gif"> ";

y me faudrait un pti if qui voit si le membre a deja vu le msg ou pas, pour afficher le pti icone correspondant ^^


http://www.darkelfteam.com
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14556
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 23 Septembre 2007, 13:49
Salut,
alors j'ai un peu modifié ta requête, voilà qui devrait faire tout ce dont tu as besoin (et j'ai optimisé ta récupération du nom du forum de façon à ne faire qu'une requête) :
// f_id 14 et 15 etant les 2 forum privé que je ne veut pas voir apparaitre dans les derniers msg
$sql = 'SELECT t.*, f.f_name, tr.tr_last_time
		FROM fsb2_topics t
		LEFT JOIN fsb2_forums f
			ON f.f_id = t.f_id
		LEFT JOIN fsb2_topics_read tr
			ON t.t_id = tr.t_id
				AND tr.u_id = ' . $session->data['u_id'] . '
		WHERE (t.f_id != 14 && t.f_id != 15)
		ORDER BY t.t_last_p_time
		LIMIT 8';
$result = mysql_query($sql) OR die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
	// regarde si le sujet est lu ou non (true | false)
	$is_read = ($session->is_logged() && (!$row['tr_last_time'] || $row['tr_last_time'] < $row['t_last_p_time']) && $row['t_last_p_time'] > $session->data['u_last_read']) ? FALSE : TRUE;

	echo 'Sujet : ' . $row['t_title'] . ' ; Forum : ' . $row['f_name'] . ' ; Est lu : ' . (($is_read) ? 'Oui' : 'Non') . '<br />';
}


Par contre un truc, la variable $session est l'objet qui récupère les informations du visiteur, tu en as besoin, tu vois de ce dont je parle ?


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Nouvelle étincelle
Avatar de anaphel
  • Age : 23 ans
  • Messages : 11
  • Inscrit : 08 Juillet 2007
  Lien vers ce message 25 Septembre 2007, 17:51
parfait, merci beaucoup


http://www.darkelfteam.com
 
Répondre


.