Bonjour à tous et bonne année 2004 !
Voilà je me suis fait un forum perso et j'aimerais bien l'optimiser.
J'ai deux tables : une table forum qui contient les champs suivants :
cat,posteur,sujet,clos,type,pseudo_dernier_post,date_dernier_post,rubrique,reponse,id_mess
et une autre table qui sert seulement si le membre est enregistré et qui affiche un dossier rouge ou jaune pour savoir si il y a des nouveaux messages.
Cette table contient quatre champs (et s'appelle forum_consult): pseudo,cat,consult,rubrique
si consult est a zéro le topic correspondant à la catégorie (cat) renverra un dossier rouge, si il est à un un dossier jaune.
Voici le code pour afficher le tout sans les dossiers :
$requete=mysql_query("select cat,posteur,sujet,clos,type,pseudo_dernier_post,date_dernier_post from forum WHERE rubrique=\\"$_GET[rubrique]\\" AND reponse=0 order by type DESC,id_mess DESC LIMIT $debut,$limite") or die(mysql_error());
$requetes++;
while($r=mysql_fetch_array($requete))
{
if($_SESSION[login]<>NULL)
{
//SI LE MEMBRE A CONSULTE CETTE CATEGORIE
$res=mysql_query("select SQL_SMALL_RESULT COUNT(consult) FROM forum_consult WHERE cat=\\"$cat\\" and rubrique=\\"$_GET[rubrique]\\" and pseudo=\\"$_SESSION[login]\\" LIMIT 1") or die(mysql_error());
$count=mysql_fetch_row($res);
$nbre=$count[0];
$requetes++;
}
Else
{
$nbre=0;
}
$consultation=0;
if($nbre<>0)
{
$consultation=1;
}
if($type==0)
{
if($consultation==0)
{
//AFFICHAGE D'UN DOSSIER ROUGE
}
Else
{
//AFFICHAGE D'UN DOSSIER JAUNE
}
}
}
}
Vous voyez que le bas blesse quand je fais la requête dans la boucle. J'ai essayé de faire un select multiple comme ceci :
$requete=mysql_query("select forum.cat,forum.posteur,forum.sujet,forum.clos,forum.type,forum.pseudo_dernier_post,forum.date_dernier_post,forum_consult.cat as cat_consult,forum_consult.consult from forum,forum_consult WHERE forum_consult.rubrique=\\"$_GET[rubrique]\\" AND forum_consult.pseudo=\\"$_SESSION[login]\\" AND forum_consult.cat=forum.cat AND forum.rubrique=\\"$_GET[rubrique]\\" AND forum.reponse=0 order by forum.type DESC,forum.id_mess DESC LIMIT $debut,$limite") or die(mysql_error());
mais le problème est que quand il n'y a pas d'enregistrement dans la table consult (si le membre n'a jamais consulté le topic), rien ne s'affiche et donc plus de sujets !!!!
merci d'avance pour votre aide.
a +