Function, Vérification doublons dans un formulaire

Function, Vérification doublons dans un formulaire - PHP - Programmation

Marsh Posté le 28-04-2009 à 17:47:28    

Bonjour a tous ! J'ai un script qui va verifier coté serveur mes info provenant d'un formulaire. seulement j'ai voulu r'ajouter un systeme permetant la verification des doublons, mais cela n'a pas l'air de fonctionner:
 

Code :
  1. //verification des doublons
  2.    {
  3.        $email         = StripSlashes($_POST['email']);
  4.        $nomOrganisateur = Stripslashes($_POST['nomOrganisateur']);
  5.    }
  6.    else
  7.    {
  8.        $email            = $_POST['email'];
  9.        $nomOrganisateur  = $_POST['nomOrganisateur'];
  10.    }
  11.  
  12. include('./config.inc.php');
  13. $db = mysql_connect($sql_server,$sql_login,$sql_pwd);
  14. mysql_select_db($sql_db,$db);
  15.  
  16. $sqlv1 = sprintf("SELECT login FROM utilisateur WHERE login='%s'",mysql_real_escape_string($email));
  17. $reqv1 = mysql_query($sqlv1) or die('Verification de l\'existance de doublons email impossible<br/>'.mysql_error());
  18. $doublon1 = mysql_fetch_array($reqv1);
  19.  
  20.  
  21.  
  22.    function validateNomOrganisateur($nomOrganisateur){
  23.        //if it's NOT valid
  24.        //if(strlen($nomOrganisateur) < 3)
  25.     //    return false;
  26.     if($doublon1==true)
  27.         return false;
  28.        //if it's valid
  29.        else
  30.            return true;
  31.    }


 
 
La partie requetes et bonne j'en suis sur, par contre la maniere dont je l'ai ajouter am a fonction j'en suis moins sur ^^ Merci pour votre aide.
 
 
sources originelle:  http://yensdesign.com/2009/01/how- [...] hp-jquery/


Message édité par Elmoricq le 29-04-2009 à 00:37:38
Reply

Marsh Posté le 28-04-2009 à 17:47:28   

Reply

Marsh Posté le 29-04-2009 à 09:56:32    

Ta fonction validateNomOrganisateur n'est jamais appellée, là [:petrus dei]

Reply

Marsh Posté le 29-04-2009 à 13:24:07    

Par ailleurs, une fonction qui prend un paramètre non-utilisé et qui travaille sur une variable globale... bof bof. Si tu veux éviter les doublons, tu mets le champ de ta table en UNIQUE ou en Primary Key (si nécessaire) et tu vérifies simplement si ta requête a été executée. Si t'as peur d'avoir d'autres erreurs potentielles, tu fais un simple SELECT login FROM utilisateur WHERE login=... LIMIT 1 et tu regardes si tu as un résultat (mysql_fetch_rows).

Reply

Marsh Posté le 29-04-2009 à 22:27:05    

FlorentG a écrit :

Ta fonction validateNomOrganisateur n'est jamais appellée, là [:petrus dei]


Oui, elle est appeller dans le formulaire qui utilise ce script !
 

guybrush02 a écrit :

Par ailleurs, une fonction qui prend un paramètre non-utilisé et qui travaille sur une variable globale... bof bof. Si tu veux éviter les doublons, tu mets le champ de ta table en UNIQUE ou en Primary Key (si nécessaire) et tu vérifies simplement si ta requête a été executée. Si t'as peur d'avoir d'autres erreurs potentielles, tu fais un simple SELECT login FROM utilisateur WHERE login=... LIMIT 1 et tu regardes si tu as un résultat (mysql_fetch_rows).


 
C'est un systeme qui va vérifier la potentiel existance d'une entrée similaire deja existante dans la base. (un formulaire de création de compte, qui verifi si le nom d'utilisateur (une adresse €mail) n'est pas déjà existante !
 
Effectivement, un ami ma expliqué que je ne pouvais pas faire passer un variable, sans la déclarer dans la fonction, et que finalement, le plus simple serais de recreer une fonction specialement dédier a la verification de doublons. En y reflechissant, il serai peut etre interessant de faire une fonction, qui soit réutilisable pour d'autre formulaire.
 
Pour ce qui est des primary Key, et au paramêtre d'entrée dans les tables, je n'y suis pas du tous familiers, c'est notament pour ca que je passe a coté de beaucoup de chose ^^
 

Reply

Marsh Posté le 29-04-2009 à 22:30:39    

kontas a écrit :

Oui, elle est appeller dans le formulaire qui utilise ce script !


On peut pas appeller une fonction PHP comme ça à partir d'un formulaire [:petrus75]

Reply

Marsh Posté le 30-04-2009 à 11:27:23    

Ho ! on peut pas lancer une fonction en validant un formulaire ?
 
 

Reply

Marsh Posté le 30-04-2009 à 11:54:35    

Hmm elle est appellée comment ? [:petrus dei] Poste du code

Reply

Marsh Posté le 30-04-2009 à 12:27:34    

le formulaire organisateurInscription.php
 

Code :
  1. <?php
  2.     require_once("validation.php" );
  3. ?>
  4.     <link rel="stylesheet" href="css/general.css" type="text/css" media="screen" />
  5.     <div id="container">
  6.         <h1>Formulaire d'inscription</h1>
  7.        
  8.         <?if( isset($_POST['send']) && (!validateNomOrganisateur($_POST['nomOrganisateur']) || !validateEmail($_POST['email']) || !validatePasswords($_POST['pass1'], $_POST['pass2']) || !validateDescription($_POST['description']) ) ):?>
  9.                 <div id="error">
  10.                     <ul>
  11.                         <?if(!validateNomOrganisateur($_POST['nomOrganisateur'])):?>
  12.                             <li><strong>Invalid Name:</strong>Trois lettres minimum</li>
  13.                         <?endif?>
  14.                         <?if(!validateEmail($_POST['email'])):?>
  15.                             <li><strong>Invalid E-mail:</strong>Merci de saisir une adresse mail correct</li>
  16.                         <?endif?>
  17.                         <?if(!validatePasswords($_POST['pass1'], $_POST['pass2'])):?>
  18.                             <li><strong>Mot de passe invalide:</strong> Non saisi ou invalide!</li>
  19.                         <?endif?>
  20.                         <?if(!validateDescription($_POST['description'])):?>
  21.                             <li><strong>Description invalide:</strong>10 lettres minimum, 100 maximum</li>
  22.                         <?endif?>
  23.                     </ul>
  24.                 </div>
  25.             <?elseif(isset($_POST['send'])):
  26.                 include("organisateurInscriptionValid.php" );?>
  27.                 <div id="error" class="valid">
  28.                     <ul>
  29.                         <li><strong>Fêtes et loisir</strong> vous remerci de votre inscription</li>
  30.                         <li>Vous pouvez dès a present vous <a href="index.php?page=connexion"><strong>connectez</strong></a>et saisir vos évenements</li>
  31.                     </ul>
  32.                 </div>
  33.         <?endif?>
  34.         <form method="post" id="customForm" action="">
  35.             <div>
  36.                 <label for="nomOrganisateur">Votre Organisation</label>
  37.                 <input id="nomOrganisateur" name="nomOrganisateur" type="text" />
  38.                 <span id="nomOrganisateurInfo">Le nom de votre Organisation</span>
  39.             </div>
  40.             <div>
  41.                 <label for="email">Adresse E-mail</label>
  42.                 <input id="email" name="email" type="text" />
  43.                 <span id="emailInfo">Adresse E-mail valide, elle sera votre identifiant</span>
  44.             </div>
  45.             <div>
  46.                 <label for="pass1">Mot de passe</label>
  47.                 <input id="pass1" name="pass1" type="password" />
  48.                 <span id="pass1Info">Le mot de passe doit avoir au moins 5 caractères</span>
  49.             </div>
  50.             <div>
  51.                 <label for="pass2">Confirmation du mot de passe</label>
  52.                 <input id="pass2" name="pass2" type="password" />
  53.                 <span id="pass2Info">Confirmation du mot de passe</span>
  54.             </div>
  55.             <div>
  56.                 <label for="description">Description de votre organisation</label>
  57.                 <textarea id="description" name="description" cols="" rows=""></textarea>
  58.             </div>
  59.             <div>
  60.                 <input id="send" name="send" type="submit" value="send" />
  61.             </div>
  62.         </form>
  63.     </div>


 
le validation.php
 

Code :
  1. <?php
  2.     function validateNomOrganisateur($nomOrganisateur){
  3.         //if it's NOT valid
  4.         if(strlen($nomOrganisateur) < 3)
  5.  return false;
  6. if($doublon1==true)
  7.  return false;
  8.         //if it's valid
  9.         else
  10.             return true;
  11.     }
  12.     function validateEmail($email){
  13.         return ereg("^[a-zA-Z0-9]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$", $email);
  14.     }
  15.     function validatePasswords($pass1, $pass2) {
  16.         //if DOESN'T MATCH
  17.         if(strpos($pass1, ' ') !== false)
  18.             return false;
  19.         //if are valid
  20.         return $pass1 == $pass2 && strlen($pass1) > 5;
  21.     }
  22.     function validateDescription($description){
  23.         //if it's NOT valid
  24.         if(strlen($description) < 10)
  25.             return false;
  26.         //if it's valid
  27.         else
  28.             return true;
  29.     }
  30. ?>


 
et mon validation.js (qui est appeller a l'index du site)
 

Code :
  1. /***************************/
  2. //@Author: Adrian "yEnS" Mato Gondelle & Ivan Guardado Castro
  3. //@website: www.yensdesign.com
  4. //@email: yensamg@gmail.com
  5. //@license: Feel free to use it, but keep this credits please!                   
  6. /***************************/
  7. $(document).ready(function(){
  8. //global vars
  9. var form = $("#customForm" );
  10. var nomOrganisateur = $("#nomOrganisateur" );
  11. var nomOrganisateurInfo = $("#nomOrganisateurInfo" );
  12. var email = $("#email" );
  13. var emailInfo = $("#emailInfo" );
  14. var pass1 = $("#pass1" );
  15. var pass1Info = $("#pass1Info" );
  16. var pass2 = $("#pass2" );
  17. var pass2Info = $("#pass2Info" );
  18. var description = $("#description" );
  19. //On blur
  20. nomOrganisateur.blur(validateNomOrganisateur);
  21. email.blur(validateEmail);
  22. pass1.blur(validatePass1);
  23. pass2.blur(validatePass2);
  24. description.blur(validateDescription);
  25. //On key press
  26. nomOrganisateur.keyup(validateNomOrganisateur);
  27. pass1.keyup(validatePass1);
  28. pass2.keyup(validatePass2);
  29. description.keyup(validateDescription);
  30. //On Submitting
  31. form.submit(function(){
  32. if(validateNomOrganisateur() & validateEmail() & validatePass1() & validatePass2() & validateDescription())
  33.  return true
  34. else
  35.  return false;
  36. });
  37.    
  38. //validation functions
  39. function validateEmail(){
  40.          //testing regular expression
  41.          var a = $("#email" ).val();
  42.          var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
  43.          //if it's valid email
  44.          if(filter.test(a)){
  45.              email.removeClass("error" );
  46.               emailInfo.text("Adresse E-mail valide, elle sera votre identifiant" );
  47.               emailInfo.removeClass("error" );
  48.              return true;
  49.          }
  50.          //if it's NOT valid
  51.          else{
  52.               email.addClass("error" );
  53.               emailInfo.text("Merci de saisir une adresse mail correct" );
  54.               emailInfo.addClass("error" );
  55.              return false;
  56.          }
  57.      }
  58. function validateNomOrganisateur(){
  59.          //if it's NOT valid
  60.          if(nomOrganisateur.val().length < 4){
  61.               nomOrganisateur.addClass("error" );
  62.               nomOrganisateurInfo.text("Trois lettres minimum" );
  63.               nomOrganisateurInfo.addClass("error" );
  64.              return false;
  65.          }
  66.          //if it's valid
  67.          else{
  68.               nomOrganisateur.removeClass("error" );
  69.               nomOrganisateurInfo.text("Etes vous sur ?" );
  70.               nomOrganisateurInfo.removeClass("error" );
  71.              return true;
  72.          }
  73.      }
  74.      function validatePass1(){
  75.          var a = $("#password1" );
  76.          var b = $("#password2" );
  77.         //it's NOT valid
  78.         if(pass1.val().length <5){
  79.             pass1.addClass("error" );
  80.             pass1Info.text("ATTENTION, au moins 5 caractères" );
  81.             pass1Info.addClass("error" );
  82.             return false;
  83.         }
  84.         //it's valid
  85.         else{         
  86.             pass1.removeClass("error" );
  87.             pass1Info.text("Au moins 5 caractères: lettres, nombres and '_'" );
  88.             pass1Info.removeClass("error" );
  89.             validatePass2();
  90.             return true;
  91.         }
  92.     }
  93.     function validatePass2(){
  94.         var a = $("#password1" );
  95.         var b = $("#password2" );
  96.         //are NOT valid
  97.         if( pass1.val() != pass2.val() ){
  98.             pass2.addClass("error" );
  99.             pass2Info.text("Confirmation non saisi!" );
  100.             pass2Info.addClass("error" );
  101.             return false;
  102.         }
  103.         //are valid
  104.         else{
  105.             pass2.removeClass("error" );
  106.             pass2Info.text("Confirmez le mot de passe" );
  107.             pass2Info.removeClass("error" );
  108.             return true;
  109.         }
  110.     }
  111.     function validateDescription(){
  112.         //it's NOT valid
  113.         if(description.val().length < 10){
  114.             description.addClass("erreur" );
  115.             return false;
  116.         }
  117.         //it's valid
  118.         else{         
  119.             description.removeClass("erreur" );
  120.             return true;
  121.         }
  122.     }
  123.    
  124. });

Reply

Marsh Posté le 30-04-2009 à 12:29:36    

etant donné la structure de la chose, j'ai voulu integrer mon systeme de doublon dans le validation.php, de cette maniere, si il y'avais un doublon, cela ne vidé pas les champs de mon formulaire !!
 
c'est pourquoi je les ai enlever de mon script qui fait les requettes d'insertion (non visible ici ^^)

Reply

Marsh Posté le 30-04-2009 à 13:14:04    

1erement,  
 
Je tiens a m'excusé, car j'avais cru que ce formulaire été capable de garder les champs saisi en cas d'erreur, mais  ce n'est pas le cas (je parle bien de la parti sans Java) donc j'essayer de rajouter des possibilité a un système qui n'existé pas  :whistle:  
 
2emement,
 
J'ai fini par réussir a faire affiché une alerte avec les autres alerte en rajoutant une fonction. voici donc ce que j'ai fait:
 
Déclaration de ma fonction dans validation.php
 
 

Code :
  1. //verification des doublons
  2. if(get_magic_quotes_gpc())
  3. {       $email         = StripSlashes($_POST['email']);
  4.         $nomOrganisateur = Stripslashes($_POST['nomOrganisateur']);
  5.     }
  6. else
  7.     {
  8. $email            = $_POST['email'];
  9. $nomOrganisateur  = $_POST['nomOrganisateur'];
  10.     }
  11. $db = mysql_connect($sql_server,$sql_login,$sql_pwd);
  12. mysql_select_db($sql_db,$db);
  13. $sqlv1 = sprintf("SELECT login FROM utilisateur WHERE login='%s'",mysql_real_escape_string($email));
  14. $reqv1 = mysql_query($sqlv1) or die('Verification de l\'existance de doublons email impossible<br/>'.mysql_error());
  15. $doublon1 = mysql_fetch_array($reqv1);
  16. function validatedoublon1($doublon1){
  17. //if it's NOT valid
  18. if($doublon1==true)
  19.  return false;
  20. //if it's valid
  21. else
  22.  return true;
  23. }


 
puis, j'ai simplement rajouter ma fonction au milieu des autre au moment de la verification du formulaire

Code :
  1. organisateurInscription.php

:
 
 

Code :
  1. <?php
  2.     require_once("validation.php" );
  3. ?>
  4.     <link rel="stylesheet" href="css/general.css" type="text/css" media="screen" />
  5.     <div id="container">
  6.         <h1>Formulaire d'inscription</h1>
  7.        
  8.         <?if( isset($_POST['send']) && (!validateNomOrganisateur($_POST['nomOrganisateur']) || !validateEmail($_POST['email']) ||   !validatedoublon1($doublon1) || !validatePasswords($_POST['pass1'], $_POST['pass2']) || !validateDescription($_POST['description']) ) ):?>
  9.                 <div id="error">
  10.                     <ul>
  11.                         <?if(!validateNomOrganisateur($_POST['nomOrganisateur'])):?>
  12.                             <li><strong>Invalid Name:</strong>Trois lettres minimum</li>
  13.                         <?endif?>
  14.                         <?if(!validateEmail($_POST['email'])):?>
  15.                             <li><strong>Invalid E-mail:</strong>Merci de saisir une adresse mail correct</li>
  16.   <?endif?>
  17.   <?if(!validatedoublon1($doublon1)):?>
  18.                             <li><strong>Attention</strong>Cet Email est deja enregistré dans nos bases</li>
  19.                         <?endif?>
  20.                         <?if(!validatePasswords($_POST['pass1'], $_POST['pass2'])):?>
  21.                             <li><strong>Mot de passe invalide:</strong> Non saisi ou invalide!</li>
  22.                         <?endif?>
  23.                         <?if(!validateDescription($_POST['description'])):?>
  24.                             <li><strong>Description invalide:</strong>10 lettres minimum, 100 maximum</li>
  25.                         <?endif?>
  26.                     </ul>
  27.                 </div>
  28.             <?elseif(isset($_POST['send'])):
  29.                 include("organisateurInscriptionValid.php" );?>
  30.                 <div id="error" class="valid">
  31.                     <ul>
  32.                         <li><strong>Fêtes et loisir</strong> vous remerci de votre inscription</li>
  33.                         <li>Vous pouvez dès a present vous <a href="index.php?page=connexion"><strong>connectez</strong></a>et saisir vos évenements</li>
  34.                     </ul>
  35.                 </div>
  36.         <?endif?>


 
Voila, maintenant ca fonctionne bien, j'ai bien mon alerte au bon endroi, un peu decus que mon formulaire soit vidé, mais c'est deja pas mal ^^
 
En tous cas merci a vous ;)


Message édité par kontas le 30-04-2009 à 13:15:16
Reply

Sujets relatifs:

Leave a Replay

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