Problème script de commentaires

Toutes les questions et les aides qui concernent le langage PHP
Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Problème script de commentaires

Messagepar ColdFusion le Mar Fév 05, 2008 2:03 am

Code: Tout sélectionner
<h1>COMMENTAIRES</h1>
<?php
$dbhost 
'------';
$dblogin '-------';
$dbpassword '-------' ;
$dbname '-------';
 
   
mysql_connect($dbhost,$dblogin,$dbpassword);
   
mysql_select_db($dbname);
   
$infos mysql_query('SELECT * FROM commentaires WHERE idnews=' $_GET['idnews'] . ' ORDER BY id DESC'); /*Ici on liste les commentaires dans l'ordre décroissant où le champ idnews est le même que celui de la variable contenue dans l'adresse de la page*/
while ($donnees mysql_fetch_array($infos)) /*Une boucle pour écrire les données*/
{
$pseudo stripslashes($donnees['pseudo']);
$message stripslashes($donnees['message']);
?>
<p><strong><?php echo $pseudo?></strong> a commenté :<br /><?php echo $message?></p>
<?php
/*On oublie surtout pas de fermer la boucle ! */
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
if(
$_POST['pseudo'] != '' AND $_POST['message'] != '')
{
$pseudo addslashes(htmlentities($_POST['pseudo'], ENT_QUOTES));
$message addslashes(htmlentities($_POST['message'], ENT_QUOTES));
$idcomment $_POST['idcomment']; /* Tout ce charabia est une petite vérification : on fait attention à ce que l'auteur ait rempli tous les champs. Quels champs ? Ceux du formulaire que l'on va créer un peu plus bas :)*/
 
mysql_query ("INSERT INTO commentaires VALUES('', '" $pseudo "', '" $message "', '" $idcomment "')"); /* Là, on entre juste les données dans une nouvelle entrée de la table SQL...*/
 
echo "Merci d'avoir commenté !";
}
}
?>
<form method="post">
<p>
<label>Votre pseudo : <input type="text" name="pseudo" /><br/></label>
<label>Laissez votre message ! <br/>
<textarea name="message" rows="5" cols="25"></textarea><br/></label>
<br/><br/>
<input type="hidden" name="idcomment" value="<?php echo $_GET['idnews']; ?>" />
<input type="submit" value="Envoyer !" />
</p>
</form>
<?php mysql_close(); ?>


Salut. Alors ça, c'est mon script de commentaires qui bug. J'explique: je post le commentaire ... tout vas bien ... le commentaire s'affiche mais un problème s'impose: au lieu de d'afficher sur la news qu'elle concerne, elle s'affiche sur toutes les news. Donc voilà je fais à nouveau recours au site pour m'aider à résoudre mon problème.

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Mar Fév 05, 2008 10:56 am

Salut Dripik

Je vois que dans cette requête, tu insères un commentaire dans la base de données, seulement il faut aussi sauvegarder idnews car c'est ce qui permet d'identifier quel commentaire est attaché à quelle news !

Code: Tout sélectionner
mysql_query ("INSERT INTO commentaires VALUES('', '" $pseudo "', '" $message "', '" $idcomment "')"); 


Si tu regardes bien plus haut, tu fais un SELECT dans la table commentaire

Code: Tout sélectionner
$infos mysql_query('SELECT * FROM commentaires WHERE idnews=' $_GET['idnews'] . ' ORDER BY id DESC'); 


Et justement, tu te bases sur idnews pour l'afficher, hors tu ne l'as pas sauvegardé lorsque tu as enregistré tes commentaires :)

Voila, j'espère t'avoir éclairé :D
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Mer Fév 06, 2008 12:05 am

Donc je devrai mettre:

Code: Tout sélectionner
mysql_query ("INSERT INTO commentaires VALUES('', '" $pseudo "', '" $message "', '" $idcomment "' WHERE idnews=' . $_GET['idnews'] . ')"); 


???

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Mer Fév 06, 2008 12:17 am

non plutot du style :

Code: Tout sélectionner
mysql_query ("INSERT INTO commentaires VALUES('', '" $pseudo "', '" $message "', '" $idcomment "', "$_GET['idnews']).")"); 


Si tu dois le sauvegarder dans ta base de données, réfléchis un peu .. idnews existe pas dans ta table commentaires et tu fais une condition dessus. Tu comprends ce que tu copies ou pas ? lol
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Mer Fév 06, 2008 1:09 am

c'est qu'avec ce genre de chose quand il s'agit de rajouter des choses je m'embrouille

EDIT: les commentaires ne s'affichent plus mais il n'y a aucun bug. On peut bien remplacer

Code: Tout sélectionner
mysql_query ("INSERT INTO commentaires VALUES('', '" $pseudo "', '" $message "', '" $idcomment "', '".$GET_[idnews]"')"); 


Par
Code: Tout sélectionner
mysql_query ("INSERT INTO commentaires VALUES('', '" $pseudo "', '" $message "', '" $idcomment "', '".$pom."')"); 


Puis ce que plus haut on a:

Code: Tout sélectionner
$pom $_GET['idnews']; 

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Mer Fév 06, 2008 1:46 am

Bien sure, mais il faut adapter ta table et rajouter un champ si ce n'est fait :)
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Mer Fév 06, 2008 1:50 am

ok je verrai

EDIT: le champ idnews existait déjà !

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Mer Fév 06, 2008 4:35 pm

Ah, et quoi ça marche alors maintenant ?

Et il existait déjà dans quelle table ? Commentaires ou Articles ? Car il doit etre dans les deux évidemment :)

idNews étant une clé primaire dans la table Articles et idNews étant une clé étrangère (qui fait le lien avec l'article) dans la table Commentaires.
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Jeu Fév 07, 2008 3:55 am

Ah ok donc je met juste un champ idnews dans la table news et ca devrait marché ?

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Jeu Fév 07, 2008 3:08 pm

Y a surement déjà un champ "id" unique dans ta table news ;)
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Jeu Fév 07, 2008 6:52 pm

oui j'ai deja le champ id dans la table news. Le problème c'est que je n'arrive pas a faire le commentaire retenir l'id qui correspond à sa news avec ça le script fonctionnerai surement

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Jeu Fév 07, 2008 11:21 pm

Il suffit de te débrouiller pour que $idcomment qui est en fait l'idnews ... contienne l'id de la news lorsque tu l'executes. T'as le choix maintenant !

Code: Tout sélectionner
mysql_query ("INSERT INTO commentaires VALUES('', '" $pseudo "', '" $message "', '" $idcomment "')"); 
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Mer Fév 13, 2008 1:49 am

wai bon je laisse ça tomber je n'y arrive pas '-_-

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Mer Fév 13, 2008 3:18 pm

Alala, c'est pourtant si simple ^^

Hesite pas a faire des echo $variable; un peu partout pour trouver l'erreur si tu es perdu :)
Vive les tutomakers ;)



Retourner vers Langage PHP

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invités