[PHP] Formulaire commentaires

Aucun -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,
Je ne comprends pas pourquoi les commentaires de mon script ne s'affiche pas sur mon site ?
Pouvez vous m'aider s'il vous plait,je suis un ultra debutant.

La table 'commentaires' :

 CREATE TABLE `nemontrepas`.`commentaires` (
`pseudo` VARCHAR( 30 ) NOT NULL COMMENT 'Mon_pseudo',
`message` VARCHAR( 30 ) NOT NULL COMMENT 'Mon_message'
) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'ma_table_commentaires'


La page 'formulaire.html' :

<html>
<body>
<CENTER>
<form method="post" action="commentaires.php">
<B>Pseudo :</B> <BR><input type="text" name="pseudo"><br><br>
<B>Message :</B> <BR><textarea type="text" name="message" cols="50" rows="10" /></textarea>
<BR><BR>
<input type="submit" value="Envoyer">
</form>
</CENTER>
</body>
</html>


La page 'commentaires.php' :
<?
$server = 'localhost';
$user = 'nemontrepas';
$pass = 'nemontrepas';
$table = 'commentaires';

mysql_pconnect($server, $user, $pass)
or die("Impossible de se connecter au serveur $server");
mysql_select_db($db)
or die("impossible de se connecter à la base $db");

$pseudo = $_POST['pseudo'];
$message = $_POST['message'];
if(empty($pseudo))
{
print ("Veuillez ajouter un pseudo !");
exit();
}
if(empty($message))
{
print ("Veuillez ajouter un message !");
exit();
}
else
{
print ("Message envoyé par $pseudo : $message");
}
$query = "INSERT INTO $table (pseudo, message) 
VALUES ('$pseudo', '$message')";
$resultat = mysql_query($query)
or die("L'insertion a echouée car ". mysql_error() ."."); 
?>


Cela affiche : Message envoyé par Test : Mon message L'insertion a echouée car Unknown column 'message' in 'field list'.
Qu'est ce qui se passe ? Pourquoi ensuite quand je fais retour,le commentaire a disparu...

Merci beaucoup !

9 réponses

Alain_42 Messages postés 5413 Statut Membre 894
 
Voilà:

formulaire.html
<html>
<body>
<CENTER>
<form method="post" action="commentaires.php">
<B>Pseudo :</B> <BR><input type="text" name="pseudo"><br><br>
<B>Message :</B> <BR><textarea type="text" name="message" cols="50" rows="10" /></textarea>
<BR><BR>
<input type="submit" name="envoyer" value="Envoyer">
</form>
</CENTER>
</body>
</html>


commentaires.php

<?php
$server = 'localhost';
$user = 'nemontrepas';
$pass = 'nemontrepas';
$table = 'commentaires';
$db = 'nom_de_ta_base';

mysql_connect($server, $user, $pass) or die("Impossible de se connecter au serveur $server");
mysql_select_db($db) or die("impossible de se connecter à la base $db");

// premiere partie enregistrement si appel depuis formulaire:
if(isset($_POST['envoyer'])){
	$pseudo = $_POST['pseudo'];
	$message = $_POST['message'];
	if(empty($pseudo))	{
		print ("Veuillez ajouter un pseudo !");
		exit();
	}elseif(empty($message)){
		print ("Veuillez ajouter un message !");
		exit();
	}else{
		print ("Message envoyé par $pseudo : $message");
	}
	$query = "INSERT INTO $table (pseudo, message) 	VALUES ('".$pseudo."', '".$message."')";
	$resultat = mysql_query($query) or die("L'insertion a echouée car ". mysql_error());

	if($resultat) echo "L'insertion a reussi !"; 
}

//deuxième partie affichage de ce qu'il y a dans la table, y compris le dernier enregistrement éventuel
//si appel directement c'est seulement cette partie qui servira
	$query="SELECT pseudo,message FROM $table";
	$reponse=mysql_query($query) or die ("Pb requette SELECT :".mysql_error());
	//nombre d'enr trouves dans la table
	$nb_enr=mysql_num_rows($reponse);
	
	//affichage reponses dans un tableau:
	if($nb_enr >0){
		echo "Il y a :".$nb_enr." enregistrements<br />;
		echo "<table><tr><th>Pseudo</th><th>Commentaire</th></tr>";
		//on parcours les résultats extraits ligne par ligne
		while ($ligne=mysql_fetch_assoc($reponse)){
			echo "<tr><td>".$ligne['pseudo']."</td><td>".stripslashes($ligne['message'])."</td></tr>";
		}
		echo "</table>";
	}else{
           echo "Aucun enregistrement trouv&eacute; dans la table !";
        }
	mysql_close();
?>
2
Aucun
 
Cela m'affiche maintenant : "Message envoyé par Test : Mon message",
je n'ai plus le message d'erreur car j'ai remplacé ceci :

$table = 'commentaires';


Par cela :

$table = commentaires;



Par contre mon problème reste le même,le commentaire n'est pas enregistrer dans la page
commentaires.php

Commentçamarche ?
Merci beaucoup !!
0
Aucun
 
Aidez moi,svp !
Je rafraichis la page !
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Bonjour,

CREATE TABLE `nemontrepas`.`commentaires` (...


bizarre, pour moi il faut simplment:

CREATE TABLE `commentaires` (etc....


ensuite essayes comme ça:
<?php
$server = 'localhost';
$user = 'nemontrepas';
$pass = 'nemontrepas';
$table = 'commentaires';
//et $db ??  que tu utilises plus bas ????

mysql_pconnect($server, $user, $pass) or die("Impossible de se connecter au serveur $server");
mysql_select_db($db) or die("impossible de se connecter à la base $db");

$pseudo = $_POST['pseudo'];
$message = $_POST['message'];
if(empty($pseudo))
{
print ("Veuillez ajouter un pseudo !");
exit();
}
elseif(empty($message))
{
print ("Veuillez ajouter un message !");
exit();
}
else
{
print ("Message envoyé par $pseudo : $message");
}
$query = "INSERT INTO $table (pseudo, message) 
VALUES ('".$pseudo."', '".$message."')";
$resultat = mysql_query($query) or die("L'insertion a echouée car ". mysql_error());

if($resultat) echo "L'insertion a reussi !"; 
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Aucun
 
Merci du commentaire !
Cela marche mais...
Ce que je souhaite c'est que quand j'ai ajouté mon commentaire,le commentaire ajouté reste sur la page commentaire.php et ne disparait pas quand je rafraichis la page ;)

Merci de votre réponse !
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Cela marche mais...

Si tu veux de l'aide sois plus precis c'est quoi qui ne marche pas ? tu as un message d'erreur ??


Ce que je souhaite c'est que quand j'ai ajouté mon commentaire,le commentaire ajouté reste sur la page commentaire.php et ne disparait pas quand je rafraichis la page ;)

qu'entends tu par rafraichir la page ?
0
Aucun
 
C'est simple non ?
Je passe par "formulaire.html",je remplis les champs et je valide et je suis redirigé vers la page "commentaires.php" et cela me mets :

Le Pseudo que j'ai entré : Le commentaire que j'ai ajouté
L'insertion a reussi !


Là c'est impecable,mais quand je reviens plus tard dans la page "commentaires.php",le commentaire et pseudo que j'ai ajouté en passant par le formulaire a disparu...
Moi ce que je souhaite,c'est que les commentaires ajoutés à l'aide du formulaire.html ne disparaisse à la prochaine visite de la page commentaires.php !

Je veux que mes visiteurs peuvent ajouter facilement des commentaires sur cette page :)

Merci beaucoup =)
0
Alain_42 Messages postés 5413 Statut Membre 894
 
non ce que tu veux faire n'est pas simple

formulaire.html poste les valeurs rentrées (pseudo et commentaires) vers ta page commentaires.php

donc ils y sont à ce moment là

mais c'est normal que lorsque tu appelles ta page commentaires.php directement tu n'ai t plus les valeurs.

pour qu'ils apparaissent ils faut aller les lire dans la BDD

si je comprend bien:

un visiteur ajoute un commentaire dans formulaire.html la page commentaire.php rentre ça dans la base

et tu veux que le visteurs en appelant la page commentaires.php rentre à nouveau un commentaire

Pourquoi ne le ferait-il pas via le formulaire qui est fait pour ça ?
0
Aucun
 
Exactement ce que je souhaite !
Alors ma question,"Comment lire les commentaires postés dans ma bdd en php ?"
En gros je veux une sauvegarde quoi,les commentaires restent !


Merci !
0