Bonjour,
J'ai suivi le tutoriel du système de commentaire, et j'ai un problème alors que je pense avoir fait le même code que le tuto. Mais cela m'affiche une erreur SQL qui est
Notice: Undefined index: id in C:\Program Files\EasyPHP-5.3.8.1\www\voir.php on line 26
Erreur SQL !
SELECT * FROM comment WHERE news_id= ORDER BY id ASC
Erreur de syntaxe pr?s de 'ORDER BY id ASC' ? la ligne 1
Et le code PHP est
<?php
$id = $_GET'id'];
$sql ="SELECT * FROM news WHERE id=$id";
$req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data=mysql_fetch_assoc($req);
echo "<h1>{$data"titre"]}</h1>";
echo "<p>{$data"contenu"]}</p>";
echo "<p>".date("d F Y", strtotime($data"date"]))."<p>";
$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id ASC";
$req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data2=mysql_fetch_assoc($req)){
echo $data2"pseudo"];
echo "<p>{$data2"contenu"]}</p>";
echo "-------------------";
}
?>
Donc je ne sais pas d'ou elle vient :/
Essaye de remplacer la ligne 10 par celle ci :
$sql="SELECT * FROM comment WHERE news_id=".$id." ORDER BY id ASC";
J'ai toujours la même erreur :/
Notice: Undefined index: id in C:\Program Files\EasyPHP-5.3.8.1\www\voir.php on line 26
Erreur SQL !
SELECT * FROM news WHERE id=
Erreur de syntaxe pr?s de '' ? la ligne 1
Toujours pas, des que je clique pour pouvoir mettre un commentaire sa m'affiche directement l'erreur
Erreur SQL !
SELECT * FROM comment WHERE news_id=41ORDER BY id ASC
Erreur de syntaxe pr?s de 'BY id ASC' ? la ligne 1
<strong></strong>
Il manque un espace devant le ORDER car si tu regarde l'erreur y a pas d'espace entre 41 et ORDER
J'ai régler le problème du message d'avant mais dés que j'envoie mon commentaire, j'ai ce message
Notice: Undefined index: id in C:\Program Files\EasyPHP-5.3.8.1\www\voir.php on line 26
Erreur SQL !
SELECT * FROM news WHERE id=
Erreur de syntaxe pr?s de '' ? la ligne 1
<?php
require "admin/config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form method="addcom.php" method="post" >
Pseudo: <input type="text" name="speudo" /><br />
Site Web: <input type="text" name="url" /><br />
E-mail: <input type="text" name="mail" /><br />
<textarea style="width:500px; height:200px;" name="contenu"></textarea>
<input type="submit" value="Envoyer" />
<input type="hidden" name="news_id" value="<?php echo $data"id"]; ?>"
</form>
<?php
$id = $_GET'id'];
$sql ="SELECT * FROM news WHERE id=$id";
$req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data=mysql_fetch_assoc($req);
echo "<h1>{$data"titre"]}</h1>";
echo "<p>{$data"contenu"]}</p>";
echo "<p>".date("d F Y", strtotime($data"date"]))."<p>";
$sql="SELECT * FROM comment WHERE news_id=".$id. " ORDER BY id ASC";
$req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data2=mysql_fetch_assoc($req)){
echo $data2"pseudo"];
echo "<p>{$data2"contenu"]}</p>";
echo "-------------------";
}
?>
</body>
</html>
Toujours la même erreur ...
Notice: Undefined index: id in C:\Program Files\EasyPHP-5.3.8.1\www\voir.php on line 26
Erreur SQL !
SELECT * FROM news WHERE id=
Erreur de syntaxe pr?s de '' ? la ligne 1
Salut, teste avec ce code.
<?php
$id = intval ($_GET 'id']);
$sql = 'SELECT * FROM news WHERE id=' . $id;
$req = mysql_query ($sql) or exit ('Erreur SQL !<br />' . $sql . '<br />' . mysql_error ());
$data = mysql_fetch_assoc ($req);
echo "<h1>{$data"titre"]}</h1>";
echo "<p>{$data"contenu"]}</p>";
echo "<p>".date("d F Y", strtotime($data"date"]))."<p>";
$sql = 'SELECT * FROM comment WHERE news_id=' . $id . ' ORDER BY id ASC';
$req = mysql_query($sql) or exit ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data2=mysql_fetch_assoc($req)){
echo $data2"pseudo"];
echo "<p>{$data2"contenu"]}</p>";
echo "-------------------";
}
J'ai essayé ton code, l'erreur à changer
Elle vient du
$id = intval ($_GET 'id']);
Notice: Undefined index: id in C:\Program Files\EasyPHP-5.3.8.1\www\voir.php on line 26
Toujours pas ... Tu veux voir tous mes fichiers sinon, peut être que ce problème peux venir d'un fichier parallèle ?
Re bonsoir, le problème viens de ton formulaire. Dans le champs de type 'hidden', tu demande l'id de la new avec $data, hors $data n'existe pas encore. Il faut mettre $_GET a la place.
Ce qui donne avec ta manière de coder :
<?php
require "admin/config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form method="addcom.php" method="post" >
Pseudo: <input type="text" name="speudo" /><br />
Site Web: <input type="text" name="url" /><br />
E-mail: <input type="text" name="mail" /><br />
<textarea style="width:500px; height:200px;" name="contenu"></textarea>
<input type="submit" value="Envoyer" />
<input type="hidden" name="news_id" value="<?php echo $_GET"id"]; ?>"
</form>
<?php
$id = isset ($_GET 'id']) ? intval ($_GET 'id']) : $id_new_default = 1;
$sql = 'SELECT * FROM news WHERE id=' . $id;
$req = mysql_query ($sql) or exit ('Erreur SQL !<br />' . $sql . '<br />' . mysql_error ());
$data = mysql_fetch_assoc ($req);
echo "<h1>{$data"titre"]}</h1>";
echo "<p>{$data"contenu"]}</p>";
echo "<p>".date("d F Y", strtotime($data"date"]))."<p>";
$sql = 'SELECT * FROM comment WHERE news_id=' . $id . ' ORDER BY id ASC';
$req = mysql_query($sql) or exit ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data2=mysql_fetch_assoc($req)){
echo $data2"pseudo"];
echo "<p>{$data2"contenu"]}</p>";
echo "-------------------";
}
?>
</body>
</html>
Avec une manière plus évoluer :
<?php
require_once ('admin/config.php');
mysql_connect (DB_HOST, DB_LOGIN, DB_PASS) or exit ('Erreur SQL !<br />' . mysql_error ());
mysql_select_db (DB_BDD) or exit ('Erreur SQL !<br />' . mysql_error ());
define ('ID_NEWS_DEFAULT', 1); // ID de la news par defaut //
$news_id = isset ($_GET 'id']) ? intval ($_GET 'id']) : ID_NEWS_DEFAULT;
$sql = "SELECT * FROM news WHERE id='$news_id'";
$req = mysql_query ($sql) or exit ('Erreur SQL !<br />' . $sql . '<br />' . mysql_error ());
$news = mysql_fetch_assoc ($req);
$sql = "SELECT * FROM comment WHERE news_id='$news_id' ORDER BY id ASC";
$req = mysql_query ($sql) or exit ('Erreur SQL !<br />' . $sql . '<br />' . mysql_error ());
while ($data = mysql_fetch_assoc ($req)) {
$comments ] = $data;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form method="addcom.php" method="post" >
Pseudo: <input type="text" name="speudo" /><br />
Site Web: <input type="text" name="url" /><br />
E-mail: <input type="text" name="mail" /><br />
<textarea style="width:500px; height:200px;" name="contenu"></textarea>
<input type="hidden" name="news_id" value="<?php echo $_GET"id"]; ?>"/>
</form>
<h1><?php echo htmlentities ($news 'titre']); ?></h1>
<p><?php echo htmlentities ($news 'contenu'])?></p>
<p><?php echo date("d F Y", strtotime($news 'date']))?></p>
<?php
foreach ($comments as $comment):
?>
<p>
<h3><?php echo htmlentities ($comment 'pseudo']);?></h3>
<?php echo htmlentities ($comment 'contenu']); ?>
</p>
<?php
endforeach;
?>
Et voilà.
Merci, donc j'ai essayé t'es 2 codes
Avec le premier plus aucun message d'erreur sauf une fois le Message envoyer, cela n'affiche rien sa m'enlève le message de la news et sa me met une date du style:
Avant j'ai la new qui s'affiche normalement
Pour sa marche pas ?
Ce système de commentaire m'énerve ..?
04 December 2011
Et après avoir envoyer le message j'ai ceci qui s'affiche
01 January 1970
Et le second la sur celui il y a un message qui est
Notice: Undefined variable: comments in C:\Program Files\EasyPHP-5.3.8.1\www\voir.php on line 45
Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP-5.3.8.1\www\voir.php on line 45
Alors sur le seconds code rajoute avant la boucle while :
<?php
$comments = Array ();
Pour le 1er code, je vois pas trop. Le problème doit se situer au niveau de ton fichier addcom.php. La news et telle toujours présente dans la base de données après l'ajouts du commentaire ?
Voilà, je n'ai plus aucune erreur SQL, mais quand je fait "Envoyer", la new s'en va et sa m'affiche une date
01 January 1970
Voici mes codes
voir.php
<?php
require_once ('admin/config.php');
mysql_connect (DB_HOST, DB_LOGIN, DB_PASS) or exit ('Erreur SQL !<br />' . mysql_error ());
mysql_select_db (DB_BDD) or exit ('Erreur SQL !<br />' . mysql_error ());
define ('ID_NEWS_DEFAULT', 1); // ID de la news par defaut //
$news_id = isset ($_GET 'id']) ? intval ($_GET 'id']) : ID_NEWS_DEFAULT;
$sql = "SELECT * FROM news WHERE id='$news_id'";
$req = mysql_query ($sql) or exit ('Erreur SQL !<br />' . $sql . '<br />' . mysql_error ());
$news = mysql_fetch_assoc ($req);
$sql = "SELECT * FROM comment WHERE news_id='$news_id' ORDER BY id ASC";
$req = mysql_query ($sql) or exit ('Erreur SQL !<br />' . $sql . '<br />' . mysql_error ());
$comments = Array ();
while ($data = mysql_fetch_assoc ($req)) {
$comments ] = $data;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form method="addcom.php" method="post" >
Pseudo: <input type="text" name="pseudo" /><br />
Site Web: <input type="text" name="url" /><br />
E-mail: <input type="text" name="mail" /><br />
<textarea style="width:500px; height:200px;" name="contenu"></textarea>
<input type="submit" value="Envoyer" />
<input type="hidden" name="news_id" value="<?php echo $_GET"id"]; ?>"/>
</form>
<h1><?php echo htmlentities ($news 'titre']); ?></h1>
<p><?php echo htmlentities ($news 'contenu'])?></p>
<p><?php echo date("d F Y", strtotime($news 'date']))?></p>
<?php
foreach ($comments as $comment):
?>
<p>
<h3><?php echo htmlentities ($comment 'pseudo']);?></h3>
<?php echo htmlentities ($comment 'contenu']); ?>
</p>
<?php
endforeach;
?>
addcom.php
<?php
if(!empty($_POST'mail']));
require "config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);
$sql ="INSERT INTO comment(pseudo,url,mail,contenu,news_id) VALUES ('$pseudo','$url','$mail','$contenu','$news_id')";
$req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("Location: voir.php?id=$news_id"); /*redirection*/
?>
Ok alors remplace la ligne 33 de voir.php par :
<form action="addcom.php" method="post" />
ENFIN sa marche ! :D
Dernière questions avez vous un moyen pour afficher les accents à la palce de ça
Tinquète
Il faut que tu encodes tes fichiers en utf-8 (sans bom) via ton éditeur de texte (dans notepad c'est dans l'onglet "Encodage").
Et aussi que tu ajoutes ceci :
mysql_query('SET NAMES utf8');
après ça :
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
Si tu a :
Undefined index: id
C'est qu'il ne trouve pas id, regarde la structure de ta BDD ?