Se connecter / S'enregistrer

Résolu [PHP] Problème script pour empêcher double post

Solutions (3)
Tags :
  • Sql
  • Email
  • MySQL
  • Programmation
|
Bonsoir,
Ji'ai tenté de faire un code pour éviter les doublons dans un base de donnée :

  1. if(isset($_POST) && isset($_POST['pseudo']) && isset($_POST['texte']) && isset($_POST['mail'])){
  2. extract($_POST);
  3. $pseudo = strip_tags($pseudo);
  4. $texte = strip_tags($texte);
  5. $mail = strip_tags($mail);
  6.  
  7. $valid = true;
  8.  
  9. if(!empty($pseudo) && !empty($texte)){
  10. $sql = "SELECT texte FROM histoire WHERE texte = '".$texte."'";
  11. $req = mysql_query($sql);
  12. if(mysql_num_rows($req) == 0){
  13. if(!empty($mail) && (filter_var($mail, FILTER_VALIDATE_EMAIL)) === FALSE){
  14. $erreur = 'Mail non valide !';
  15. $valid=false;
  16. }
  17. else{
  18. $succes = 'Participation prise en compte!';
  19. $sql = "INSERT INTO histoire VALUES ('','$texte','$pseudo','$mail')";
  20. $req = mysql_query($sql) or die(mysql_error());
  21. }
  22. }
  23. else{
  24. $erreur = 'Vous avez déja posté cette suite';
  25. $valid=false;
  26. }
  27. }
  28. else{
  29. $erreur = 'Remplissez tous les champs!';
  30. $valid=false;
  31. }
  32. }



Pourtant quelque fois(oui pas toujours !) l'erreur suivante apparaît :

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\HistoireDeMerde\pages\accueil.php on line 13
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's standard dummy text ever since the 1500s, when an unknown printer took a galle' at line 1


Si un âme sensible pouvait venir m'aider ca fait 4 heures que patauge avec un script aussi basique!
Merci
Contenus similaires
Meilleure solution
partage
|
Je dirais que ta requête fait une erreur, donc $req n'est pas une ressource mysql.
Cela provient très vraissembablement du texte, essaye de faire plutôt:
  1. $sql = "SELECT texte FROM histoire WHERE texte = '".mysql_real_escape_string($texte)."'";

Et modifies aussi ton insert:
  1. $sql = "INSERT INTO histoire VALUES ('','".mysql_real_escape_string($texte)."','$pseudo','$mail')";
  • Commenter cette solution |
Score
0
òh
òi
|
Yeah ca marche nickel!

Merci beaucoup et bonne fin de week end.
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par bboyhades38.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS