Probleme de POST lors de l'actualisation de ma page ??

Probleme de POST lors de l'actualisation de ma page ?? - PHP - Programmation

Marsh Posté le 17-07-2006 à 12:37:58    

Bonjour,
 
Je viens de créer une page, pour permettre aux visiteurs de mon site de commenter mes news. Ma partie commentaire fonctionne, on peut poster un commentaire, le commentaire est transmis a ma bdd et l'affichage se fait sans probléme.
Par contre, lorsque que l'on fait actualiser la page (soit sur le bouton "actualiser" du navigateur, soit F5), le commentaire qui vient d'être tapé, et une nouvelle fois inséré dans ma bdd et donc affiché sur ma page.
Le champ POST garde sa valeur.
 
Voici le message que j'obtiens lorsque j'actualise ma page :
 
"La page que vous tentez de voir contient des données envoyées par POST. Si vous renvoyez les données, toute action entreprise par la page Web (telle qu'une recherche ou un achat en ligne) sera répétée. Pour envoyer à nouveau les données, cliquez sur OK, sinon cliquez sur Annuler."
 
 
Quelqu'un aurait-il une solution pour éviter d'avoir une nouvelle entrée dans ma base de données a chaque fois que je fais actualiser ??? Comment faire pour vider les champs POST ou interdire d'actualiser ma page ???
 
Merci d'avance pour vos réponses
 
Voici la partie de mon script concerné :
 
 
<?
 
if (isset($_POST['message']) AND isset($_POST['nom']))
{
if($_POST['message'] != '' AND $_POST['nom'] != '')
{
$datedujour = date('d-m-Y');
$pseudo =  stripslashes(htmlentities($_POST['nom'], ENT_QUOTES));
$message =  stripslashes(htmlentities($_POST['message'], ENT_QUOTES));
$message = nl2br($message);
$email = htmlentities($_POST['email'], ENT_QUOTES);
$idcomment = $_POST['idcomment'];
 
mysql_query ("INSERT INTO matable VALUES('', '" . $datedujour ."', '" . $pseudo . "', '" . $email . "','" . $message . "', '" . $idcomment . "')" )or die (mysql_error()); /* Là, on entre juste les données dans une nouvelle entrée de la table SQL...*/
 
?>
<div id="conteneur3"> //Voici la partie que j'avais oublié !!!
<p2><em><strong>Le <? echo $datedujour ?> par <? echo $pseudo; ?></strong></em> <br /></p2> <p4><? echo $message; ?></p4>
</div>
<?
 
echo "Merci d'avoir commenté !";
} else {
echo "Les champs nom et message sont obligatoires !!!";
}
}
?>
<a name="ancre_1"></a>
<h2 class="Style2">Commentez la news : <q><?php echo $_GET['titrenews']; ?></q></h2>
 
 
 
<form method="post" >
 
<input type="hidden" name="idcomment" value="<?php echo $_GET['idnews']; ?>" />
<table width="670" border="0">
  <tr>
    <td width="166"><label> </label>
        <div align="right" class="Style7"> Nom : </div></td>
    <td width="488"><input type="text" name="nom" /></td>
  </tr>
  <tr>
    <td><label></label>
        <label> </label>
        <div align="right" class="Style5">Email (facultatif) : </div>
      <label></label></td>
    <td><input type="text" name="email" /></td>
  </tr>
  <tr>
    <td valign="top"><div align="right" class="Style5">Message : </div></td>
    <td><textarea name="message" rows="5" cols="50"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><div align="center">
      <input name="submit" type="submit" value="Valider votre message" />
    </div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><div align="center"></div></td>
  </tr>
</table>
</form>
 
<?php mysql_close(); ?>

Reply

Marsh Posté le 17-07-2006 à 12:37:58   

Reply

Marsh Posté le 17-07-2006 à 12:44:13    

Apres insertion de tes données en base il te faut réaliser une redirection avec la fonction header() vers une page qui te convient : la page qui permet de voir la news et les commentaires par exemple.
 
Le serveur donnera la page au navigateur depuis cette nouvelle requete HTTP etablie sans les données POST.

Reply

Marsh Posté le 17-07-2006 à 13:14:49    

En fait, je raffiche dans ma news et mes commentaires dans la même page et ça ça fonctionne nickel. Le commentaire que l'on vient de rentrer s'affiche directement sur ma page. Ca risque d'etre tres compliqué pour moi si j'envoi vers une autre page.  
Il n'existe pas un moyen d'interdire l'actualisation d'une page ?? ou de vider les post sans envoyer dans une autre page ?

Reply

Marsh Posté le 17-07-2006 à 13:20:11    

news.php

Code :
  1. * on affiche la news
  2. * on affiche les commentaires
  3. * on affiche le formulaire de post
  4. <form action="post.php" method="post" >
  5. </form>


 
post.php

Code :
  1. * on insere en base de données
  2. * on redirige vers news.php
  3. header('news.php');


 
Voila en gros le principe.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed