Bonjour à tous,
J’ai le problème suivant :
Je construis un site en php/mysql et j’ai une page « article ». Par défaut, j’affiche la liste des 10 articles les plus récents avec pour chaque : le titre, la date, les 3 premières lignes de l’article.
Si le visiteur clique sur un article ça affiche l’article en question avec des liens vers l’article suivant et précédent et vers la liste des articles (page par défaut).
Je me suis dit que si je refaisais une requête SQL à chaque fois qu’on clique sur suivant/précédent, ça allait être lourd. J’ai donc pensé à la méthode suivante.
1 - je fait une requête globale
2 - je charge la requête dans un tableau.
3 - je met le tableau dans une variable $_session.
Ainsi, un seul accès à la base, après tout est en mémoire.
J’ai scripté ça, mais ça ne fonctionne pas :
if (!isset($_SESSION['tableau'])){$tableau = recup_articles();}
else {$tableau = $_SESSION['tableau'];}
for ($idxk = 0; $idxk=1;$idxk++){
for ($idxl = 0; $idxl=6;$idxl++){echo $tableau[$idxk][$idxl];}
}
Function recup_articles(){
$sql = "SELECT num,titre,dateheure,categorie,photo,texte FROM articles ORDER BY num DESC LIMIT 10";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$idxj=0;
while ($row = mysql_fetch_array($req, MYSQL_NUM)) {
$tab[$idxj] = $row;
$idxj++;
}
$_SESSION['tableau'] = $tab;
return $tab;
}
J’ai deux questions :
1 - Ma démarche est-elle optimale ?
2 - Quelqu’un comprend-il pourquoi mon code ne marche pas ?
Merci grandement pour votre aide,
Edité le 14/05/2009 à 11:42