cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
11 janv. 2004 à 12:33
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
12 juin 2005 à 21:51
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 :
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 !!!!
jdaviaud
Messages postés151Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 8 octobre 2013 12 janv. 2004 à 09:41
J'ai remarqué de ma propre expérience que SQL n'aime pas les variables composées dans ses requetes
C'est a dire les variables du style $Toto[Titi]
Essaye de définir tes variables avant la requete
$titi = $Toto[Titi];
Et ensuite tu utilise $titi dans ta requete.
Ton probleme ne vient peut etre pas de ca, mais je sais que sur certains hébergeurs, ce genre d'utilisation de variables dans des requetes pause probleme
Et autre chose, sur ta ligne
$res=mysql_query("select SQL_SMALL_RESULT COUNT(consult)
utilise le "@" devant mysql_query car dans le cas où y'aura pas de résultats retournés, t'auras une erreur sql qui s'affiche au lieu de continuer le traitement