Système de commentaires

Zirlak Messages postés 3 Statut Membre -  
 Utilisateur anonyme -
Salut à tous, je réalise un système de commentaires pour mon site internet.
Cela fonctionne très bien dans l'ensemble.
Mon seul souci est que lorsque je poste un commentaire, le fait d'actualiser ma page, le message s'écrit de nouveau, ainsi que dans ma DB, Pouvez vous éventuellement me dire ce qu'il ne va pas ?
Merci d'avance !
<?php

if(isset($_POST['submit']))
{
	if(!empty($_POST['nom'])&&!empty($_POST['email'])&&!empty($_POST['message']))
	{
	$nom= mysql_real_escape_string(htmlentities(trim($_POST['nom'])));
	$email = mysql_real_escape_string(htmlentities(trim($_POST['email'])));
	$message = mysql_real_escape_string(htmlentities(trim($_POST['message'])));
		if(strlen($nom)>25)
		{
		echo"Votre nom ne doit pas dépasser les 25 caractères";
		}else if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
		echo"Veuillez saisir une adresse mail valide";
		}else if(strlen($message)>500){
		echo"Votre message ne doit pas dépasser les 500 caractères";		
		}else
		{
			$connect = mysql_connect('localhost','root','');
			mysql_select_db('php');
		
			$query = mysql_query("INSERT INTO livredor(id,nom,email,message)VALUES('','$nom','$email','$message');");
			if($query)
			{
				$select = mysql_query("SELECT * FROM livredor ORDER BY id DESC");
			
			
				while($row = mysql_fetch_assoc($select))
				{				
					echo"Posté par :".$row['nom']." Email : ".$row['email']."<br/><strong>".$row['message']."</strong><br/>";
					

					
				}
				
				
			
			
			}
		
		}

		
		
	
	
	
	}else echo"Vous devez saisir tous les champs pour commenter";
	
}


?>


<form method="POST" action="livre.php">
<hr>
<strong>Poster un commentaire</strong>
<p>Votre nom:</p>
<input type="text" name="nom">
<p>Votre email:</p>
<input type"text" name="email">
<p>Votre message</p>
<textarea name="message" rows="6" cols="35"></textarea><br/>
<input type="submit" name="submit" value="Poster">
</form>

2 réponses

Utilisateur anonyme
 
Pour expliquer :

- la première fois que tu affiche ta page (tu n'a pas encore appuyé sur envoyer) il affiche simplement le formulaire

- une fois que tu appuies sur le bouton submit, il rappelle une fois la page mais cette fois avec des données supplémentaires, les fameuses données $_POST. c'est pour cela qu'a la ligne 3 de ton code tu vérifie si une certaine donnée $_POST existe.

- Par contre, quand tu va rafraîchir ta page, il va vouloir la rappeler comme la fois précédente, donc avec les données $_POST en paramètre. ce qui va te faire rerentrer dans ton if(isset($_POST['submit'])) et réinscrire un commentaire en base de donnée

Solution :

- mettre ta page html et ton code pour enregistrer le commentaire dans deux pages différente livre.php (formulaire) - submit_comment.php (code php).
ton formulaire aura une action="submit_comment.php" et une fois que tu as fini d'enregistrer le formulaire dans ce fichier tu fais une redirection sur livre.php.

- mettre tout dans une page mais une fois que tu as enregistrer ton commentaire faire une redirection sur la page courante (sur livre.php)

J'espère que tu m'as compris ^^' et n'hésite pas à me dire si c'était pas très très clair

A+
0
Super_carotte Messages postés 1420 Date d'inscription   Statut Membre Dernière intervention   127
 
En effet. Prends exemple avec la plupart des forums:
QUand tu post un message, ça t'envoi sur une page t'indiquant que ton message a bien été posté. Et sur cette page tu mets un lien qui renvoi vers la discussion.
0
Utilisateur anonyme
 
ou :
header('location:tapageprecedante.php');
0