[PHP] Formulaire commentaires

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 !
Configuration: Windows XP
Firefox 3.0.5

9 réponses

  1. 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();
    ?>
    
    1. 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 !!
      1. 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 !"; 
        ?>
        
        1. 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 !
          1. 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 ?
            1. 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 =)
              1. 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 ?
                1. 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 !