Se connecter avec
S'enregistrer | Connectez-vous

livre d'or

Dernière réponse : dans Programmation

Bonjour!
voila j'essaye de mettre un livre d'or sur mon site, mais quand je poste un message dans celui-ci, et que j'actualise ma page; le message se reposte!
comment faire pour que cela n'arrive pas?
Merci!

Le code de mon livre d'or:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
  2. <html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" >
  3. <head>
  4. <title>Livre d'or</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6. <link rel="stylesheet" media="screen" type="text/css" title="Mon design" href="css_minichat.css" />
  7. <link rel="shortcut icon" type="image/x-icon" href="gif.gif" />
  8. <style type="text/css">
  9. form, .pages
  10. {
  11. text-align:center;
  12. }
  13. </style>
  14. </head>
  15.  
  16. <body>
  17. <?php include("menu.php"); ?>
  18.  
  19.  
  20. <form method="post" action="livreor.php">
  21. <p>Vous aussi, signez ce magnifique livre d'or, et laissez à jamais votre trace sur ce site... ^^</p>
  22.  
  23. <p>
  24. Pseudo : <input name="pseudo" /><br />
  25. Message :<br />
  26. <textarea name="message" rows="8" cols="35"></textarea> <br />
  27. <input type="submit" value="Envoyer" />
  28. </p>
  29. </form>
  30.  
  31. <p class="pages">
  32. <?php
  33. mysql_connect("localhost", "pseudo", "pass");
  34. mysql_select_db("livreor");
  35.  
  36. if (isset($_POST['pseudo']) AND isset($_POST['message']))
  37. {
  38.  
  39. $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);
  40.  
  41. $message = htmlentities($_POST['message'], ENT_QUOTES);
  42. $message = nl2br($message);
  43.  
  44. mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
  45. }
  46.  
  47.  
  48. $nombreDeMessagesParPage = 20;
  49.  
  50. $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
  51. $donnees = mysql_fetch_array($retour);
  52. $totalDesMessages = $donnees['nb_messages'];
  53.  
  54.  
  55. $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
  56.  
  57. echo 'Page : ';
  58. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  59. {
  60. echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
  61. }
  62.  
  63. ?>
  64.  
  65. </p>
  66.  
  67. <?php
  68.  
  69. if (isset($_GET['page']))
  70. {
  71. $page = $_GET['page'];
  72. }
  73. else
  74. {
  75. $page = 1;
  76. }
  77.  
  78. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  79.  
  80. $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
  81.  
  82. while ($donnees = mysql_fetch_array($reponse))
  83. {
  84. echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
  85. }
  86.  
  87. mysql_close();
  88. ?>
  89.  
  90. </body>
  91. </html>

Autres pages sur : livre

Lassé par la pub ? Créez un compte

dans ce cas la; si il y a deux mathieu qui passent sur mon site ils pourront pas laisser chacun un message avec le nom mathieu...
comment faire une condition, pour que si le message est pareil au précédent, de ne pas le poster?

y surement d'autre solution (sessions...)
mais a mon avis, la plus simple est de faire un page intermediaire pour eviter de reinserer a la reactualisation.
une variable action qui serait egale à afficher ou inserer.
si c'est inserer, tu inseres les donnees et tu recharges avec action=afficher
Lassé par la pub ? Créez un compte
Tom's guide dans le monde