Afficher un article sur meme page en cliquant sur lien

Petit nouveau ! | 3 Messages

28 janv. 2007, 21:39

Bonjour à tous,

Je vais tenter d'expliquer brièvement le problème que je rencontre.

En page d'accueil de mon site j'affiche les derniers articles entrés dans une bdd mysql avec un lien "plus d'infos". J'aimerais que le contenu complet de cet article s'affiche sur la même page en cliquant sur ce lien. Le problème est le suivant:

Tout fonctionne à priori, sauf que le contenu s'affiche dans le bloc de tous les article.

J'utilise le moteur de templates PHP du groupe PHPBB.

Code du fichier PrincipalContent.tpl:

Code : Tout sélectionner

<div id="column2"> <h1>Dernières Nouvelles</h1> <!-- BEGIN articles --> Postée le {articles.DATE} par {articles.AUTEUR} - {articles.TITRE}<br /> <a href="index.php?id={articles.ID}">Plus de détails...</a><br /> <br /> <div id="{articles.ID}" style="visibility: none;"> {CONTENU} </div> <br /> <!-- END articles --> </div> </div>
Les bonnes données sont sélectionnées dans la BDD Mysql donc j'évite d'indiquer le code ici. Toutefois voici le code PHP créant les variables à être affichées dans le fichier template cité plus haut:
while($row = mysql_fetch_array($res)) {
  $template->assign_block_vars('articles', array(
    'ID' => $row['id'],
	'DATE' => $row['date'],
	'AUTEUR' => $row['auteur'],
	'TITRE' => $row['titre']
  ));
}
// On récupère l'id de la news à afficher
$id = $_GET['id'];
if (isset($id)) {
  $req2 = "SELECT contenu FROM prod_news WHERE id='$id'";
  $res2 = mysql_query($req2) or die('Erreur lors de la sélection de la news: '. mysql_error());
  $count = mysql_num_rows($res2) or die('Erreur lors de la validation du résultat $res2: '. mysql_error());
  $row2 = mysql_fetch_array($res2) or die('Erreur lors de la récupération du tableau $res2: '. mysql_error());

  // On vérifie si une news à cet id existe
  if ($count < 1) {
    $contenu = "";
  }
  else {
    $contenu = '<h2>La nouvelle complète:</h2>';
	$contenu .= $row2['contenu'];
    $template->assign_vars(array(
     'CONTENU' => $contenu
    ));
  }
}
===========================
En bref voici ce dont que ça devrait donner:

Titre nouvelle 1 - Plus d'infos (lien)
Titre nouvelle 2 - Plus d'infos (lien)
Titre nouvelle 3 - Plus d'infos (lien)
etc...

Le résultat escompté si je clique sur plus d'infos de la nouvelle 1:

Titre nouvelle 1 (Faire disparaître le lien plus d'info si le contenu est actif.)
Contenu de la nouvelle 1 apparaissant ici
Titre nouvelle 2 - Plus d'infos (lien)
Titre nouvelle 3 - Plus d'infos (lien)
etc...



Le résultat que j'obtiens actuellement

Titre nouvelle 1 - Plus d'infos (lien)
Le contenu de la nouvelle 1 apparait ici
Titre nouvelle 2 - Plus d'infos (lien)
Le contenu de la nouvelle 1 apparait ici
Titre nouvelle 3 - Plus d'infos (lien)
Le contenu de la nouvelle 1 apparait ici
etc...

J'aimerais donc avoir une piste de solution, que feriez vous si vous aviez à faire de cette façon. J'imagine que ça peut être possible en JS, mais je n'ai jamais touché au JS. Qu'en pensez-vous?

Merci à l'avance,

Forensic