Système de commentaires

Fermé
Zirlak Messages postés 3 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 21 novembre 2013 - 21 nov. 2013 à 23:05
 Utilisateur anonyme - 22 nov. 2013 à 16:01
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
22 nov. 2013 à 09:44
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 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
22 nov. 2013 à 15:16
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
22 nov. 2013 à 16:01
ou :
header('location:tapageprecedante.php');
0