Page 1 sur 1

ereur sur un code php

Posté : 03 mars 2006, 03:28
par Johnstyle
bonjour,
j'ai essayer de creer un code php qui utilise mysql.

ce script permet d'afficher des liens et en fonction du lien sur lequel on clic ont affiche un texte

j'ai juste un problme au niveau de l'affichage du texte

voici mon code :

Code : Tout sélectionner

<? require_once("admin/config.php"); $db = mysql_connect($dbhost, $dbuname, $dbpass); mysql_select_db($dbname,$db); // on cr&eacute;e la requ&ecirc;te SQL $sql = 'SELECT id,titre,contenu FROM js_pages'; // on envoie la requ&ecirc;te $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = mysql_fetch_assoc($req)) { // on affiche les informations de l'enregistrement en cours echo '<br><a href="npage2?page='.$data['id'].'">'.$data['titre'].'</a><br>' ; } if($_GET["page"]==$data['id']) { echo $data['contenu']; } mysql_close($db); ?>

j'ai essaye de chercher l'ereur mais imposible de trouver :(
donc si quelqu'un pourait m'aider ce serai gentil :)
merci

Posté : 03 mars 2006, 10:35
par Hermès
C'est normal que ton
if($_GET["page"]==$data['id'])

 {
 echo $data['contenu'];
 } 
Soit à l'extérieur de ta boucle ?

Posté : 03 mars 2006, 11:06
par Johnstyle
C'est normal que ton
if($_GET["page"]==$data['id'])

 {
 echo $data['contenu'];
 } 
Soit à l'extérieur de ta boucle ?

heu bah en fait j'ai realiser ce code grace a un tutorial et justement j'ai rajouter ça apres
if($_GET["page"]==$data['id'])

 {
 echo $data['contenu'];
 } 
je pensait que ca irai a cet endroit ^^"

Posté : 03 mars 2006, 11:09
par Hermès
Ben le problème c'est que tu as une boucle qui met dans $data les données d'une ligne de ta requête sql et qui recommence jusqu'à ce que toutes les lignes soit parcourues.
Donc quand tu sors de la boucle, tu as $data qui est vide, autrement dit, tu ne pourras pas afficher $data["contenu"];
while($data = mysql_fetch_assoc($req)) {
   // on affiche les informations de l'enregistrement en cours
   echo '<br><a href="npage2?page='.$data['id'].'">'.$data['titre'].'</a><br>';
   if($_GET["page"]==$data['id']) {
      echo $data['contenu'];
   }
}
Comme ça, ça affiche $data['contenu'] à chaque étape de la boucle.

Posté : 03 mars 2006, 11:16
par charabia
Si tu désires afficher à un endroit précis et unique le contenu en cliquant sur chaque lien, tu peux une deuxième requête qui ta prend la variable passé en URL.
<?php
require_once("admin/config.php");
$db = mysql_connect($dbhost, $dbuname, $dbpass);
mysql_select_db($dbname,$db);

// on cr&eacute;e la requ&ecirc;te SQL
$sql = "SELECT id,titre,contenu FROM js_pages";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement 
while($data = mysql_fetch_assoc($req)) 
{
	// on affiche les informations de l'enregistrement en cours 
	echo '<br><a href="index.php?page='.$data['id'].'">'.$data['titre'].'</a><br>';
}

if(isset($_GET['page']))
{
$sql1 = "SELECT contenu FROM js_pages WHERE id=".$_GET['page'];
$req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
$data1 = mysql_fetch_assoc($req1);

echo $data1['contenu'];
}

mysql_close($db);
?>

Posté : 03 mars 2006, 11:35
par Johnstyle
Super !!
merci a tout les 2 c'est exactement ce que je voulais :D

Posté : 03 mars 2006, 11:37
par charabia
N'oublies pas le tit [résolu] ;)