Salut à tous,
Décidément en ce moment il m'arrive que des tuiles, je poste des messages limites tous les jours :p.
Alors voici mon problème, j'ai suivi le tuto système de news et de commentaires de grafikart, et j'ai décider de le modifier pour changer la présentation ect..
Donc ce qu'il se passe c'est que j'ai ma news qui s'affiche, ensuite je clique sur "commentaires" après ca ca m'enmène sur voir_com.php où là s'affichent les commentaire que je met plus les input pour poster un forumulaire. Là tout va bien, ensuite je fais l'essai de poster un commentaire, et puis là paf ce message d'erreur s'affiche :
Erreur SQL !
SELECT * FROM comment WHERE news_id=
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Voici mes différentes pages :
News.php ( j'ai seulement mis la parti php ) :
<?php
require "config.php";
mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
mysql_select_db(DB_BDD);
mysql_query('SET NAMES "UTF8"');
$sql="SELECT * FROM news ORDER BY id DESC";
$req= mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data=mysql_fetch_assoc($req)){
echo "<h1>{$data"titre"]}</h1>";
echo "<br />{$data"contenu"]}<br />";
echo "<span align=\"left\">Publié le ".date("j/n/Y G:i",strtotime($data"date"]))." par {$data"pseudo"]}</span><br/><br/><br/>";
$sql2="SELECT id FROM comment WHERE news_id={$data"id"]}";
$req2= mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
echo "Il y a <a href=\"voir_com.php?id={$data'id']}\">".mysql_num_rows($req2)." commentaires</a> <br/>";
echo '<hr style="width: 50%; border-style: dashed;">';
}?>
La page voir_com.php :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC ="-//W3C//DTD XHTML 1.0 STRICT//EN" "http://www.w3.org/TR/xhtml1/DTDxhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:kang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Life.com</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
require "config.php";
mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
mysql_select_db(DB_BDD);
$id=$_GET'id'];
$sql="SELECT * FROM comment WHERE news_id=".$_GET'id']."";
$req= mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data=mysql_fetch_assoc($req)){
echo $data"pseudo"];
echo "<br/>";
}
?>
<br/><br/>
<form action="commenter.php" method="post">
Pseudo : <input type="text" name="pseudo"/><br/>
E-mail : <input type="text" name="mail"/><br/>
Contenu :<br/>
<textarea name="contenu" style="width: 500px;height:200px;"></textarea><br/>
<input type="submit" value="Commenter !"/>
<input type="hidden" name="news_id" value="<?php echo $data'id']; ?>"/>
</form>
</body>
</html>
Et pour finir la page commenter.php :
<?php
require "config.php";
mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);
$sql="INSERT INTO comment (pseudo, mail, contenu, news_id) VALUES ('$pseudo', '$mail', '$contenu', '$news_id')";
$req= mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("Location: voir_com.php?id=$news_id");
?>
Je suis dessus depuis je sais pas combien de temps et je trouve pas la source du problème, si quelqu'un a une idée qu'il n'hésite pas !
Merci :)
$_GET'id'] est vide c'est tout, faut que tu passe l'id de la news dans l'url c'est tout.
J'ai re-vérifier ton code et je pense avoir trouvé !
Dans ton formulaire tu as mit ça :
<input type="hidden" name="news_id" value="<?php echo $data'id']; ?>"/>
Sauf qu'il ne peut pas connaître $data'id'] étant en dehors du while.
A mon avis tu as juste fait une erreur d'étourderie (ça arrive souvent :p), il faut que tu remplace ça par $_GET'id'].
Le problème c'est qu'il ne trouve pas l'id dans le GET : WHERE news_id=
Es-tu sûr d'avoir bien mit la variable de l'id de la news dans l'url ??
Il te dis qu'il ne trouve pas la news avec l'id = '' (à rien). Logique car dans ton lien tu n'affiche pas l'id de la news.
Il faut donc, pour que ça marche qu'après ta page d'affichage tu mettes: voir_com.php?news_id=1 (par exemple).
J'espère avoir été clair :S.
Comment ca ? Je comprend pas trop, je suis carrément entrain de n’emmêler les pinceaux xD
Merci Nazahel ca marche enfin ! Waw le petit détails qui change tout, merci beaucoup à vous tous :)
@Grafikart : Oui faudra que je le relise, ca fait longtemps que j'avais ce script dans le pc et j'en ai carrément oublier le tuto !
Merci à tous encore :)
Perso j'ai suivi aussi le tuto de Grafikart il y a longtemps et je n'est eu aucun problème.
Déjà il y a un truc pas logique dans ton code. Ligne 15 tu écrit "$id = $_GET'id'];" Là je suis d'accord. Mais en dessous dans ton WHERE pourquoi tu ne reprend pas la fonction de ta variable ? "WHERE news_id=$id;" Comme te le conseil Grafi' reprend le tutoriel tu est peut-être passer à coter de quelques choses.