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 :)

10 réponses


Grafikart
Réponse acceptée

$_GET'id'] est vide c'est tout, faut que tu passe l'id de la news dans l'url c'est tout.

Nazahel
Réponse acceptée

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 ??

Babou
Auteur

Je ne comprend pas vraiment ta question, tu pourrais être un petit peu plus clair ? :s

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.

Babou
Auteur

La page d'affichage, c'est à dire laquel ?
Je les ai nommé avant chaque code :)

Babou
Auteur

Comment ca ? Je comprend pas trop, je suis carrément entrain de n’emmêler les pinceaux xD

Reprend le tutoriel jpense parceque là tu as perdu la logique du code.

Babou
Auteur

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.