[PHP] pb controle de formulaire

pb controle de formulaire [PHP] - PHP - Programmation

Marsh Posté le 05-02-2007 à 14:51:13    

Bonjour.
J'ai cree une fontion qui me permet de controler la validite d'un formulaire. Maintenant je voudrais rentrer les donnees saisies par l'utilisateur que si ces donnees repondent aux critere de ma fonctions.(controle de larobase dans le mail ...). Commen faire???
Merci.


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 05-02-2007 à 14:51:13   

Reply

Marsh Posté le 05-02-2007 à 15:03:53    

Une méthode souvent utilisée consiste à faire retourner true/false à ta fonction de vérification et s'en servir ainsi:

Code :
  1. if ( isValidEmail($adress) ){
  2.   //insertion
  3. }


 
Mais j'ai comme l'impression que cela ne résoudra pas tout ton problème.
hummm je sens

Reply

Marsh Posté le 05-02-2007 à 15:15:03    

anapajari a écrit :

Une méthode souvent utilisée consiste à faire retourner true/false à ta fonction de vérification et s'en servir ainsi:

Code :
  1. if ( isValidEmail($adress) ){
  2.   //insertion
  3. }


 
Mais j'ai comme l'impression que cela ne résoudra pas tout ton problème.
hummm je sens


 
c'est vrai ca ne repond pas vraiment a ma question:
 
Donc voila le code ca sera plu simple je pense
 
ca c'est ma fonction :
 
 
function check_form($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass)
{
  $aroba = strpos($email, '@');
  $dot = strpos($email, '.');
 
      if(empty($nom))
 echo "Vous avez oublie de saisir votre nom <br />";
      if(empty($prenom))
 echo "Vous avez oublie de saisir votre prenom<br />";
      if(empty($login))
 echo "Vous avez oublie de saisir votre login<br / >";
      if(empty($adresse))
 echo "Vous avez oublie de saisir votre adresse<br /";
      if(empty($cp))
 echo "Vous avez oublie de saisir votre code postal<br />";
      if(empty($ville))
 echo "Vous avez oublie de saisir votre ville<br />";
      if (empty($email))
 echo "Vous avez oublie de saisir votre email<br />";
      elseif(!empty($email) && $aroba == '' | $dot == '')
 echo "Mail invalide<br />";
      if(empty($pass) || empty($repass))
 echo "Vous avez oublie de saisir votre pass<br />";
}
 
et ca c'est mon insertion :
 $fill_db = "INSERT INTO user (nom, prenom, login, adresse, cp, ville, email, pass, repass, date) VALUES (\"$nom\", \"$prenom\",\"$login\", \"$adresse\", \"$cp\",\"$ville\",\"$email\", \"$pass\", \"$repass\", \"$date\" )";
 
    $result = mysql_query($fill_db, $link);
    if (!$result)
      die('Requete invalide : ' . mysql_error());
   
le probleme ce que meme si des champs de mon formulaire ne sont pas remplis le formulaire et enregistre dans ma base. Je voudrais ke lon enregistre le formulire que si toute les information ont ete fournies par l'utilisateur. :)  
 
 
 
 
 
 
 


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 05-02-2007 à 15:39:51    

bin en fait si ça répond totalement à ta question :o
tu fais un return true/false dans check_form et tu mets un if avec ton insert [:spamafote]

Reply

Marsh Posté le 05-02-2007 à 15:46:26    

anapajari a écrit :

bin en fait si ça répond totalement à ta question :o
tu fais un return true/false dans check_form et tu mets un if avec ton insert [:spamafote]


OK j'essai de faire comme tu viens de me le dire mais ca ne marche pas pourrai tu mecrire la condition parce ke la je bloque
Merci!!


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 05-02-2007 à 16:06:19    

http://fr.php.net/manual/fr/language.functions.php
 
Et aussi (car même si t'as pas balancé tout ton code, je parie que $nom, $prenom et cie proviennent directement du formulaire, sans contrôle) :
http://fr.php.net/mysql_real_escape_string
 
voire mieux :
http://fr.php.net/manual/fr/functi [...] xecute.php (si tu as mysqli)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 05-02-2007 à 16:17:11    

sielfried a écrit :

http://fr.php.net/manual/fr/language.functions.php
 
Et aussi (car même si t'as pas balancé tout ton code, je parie que $nom, $prenom et cie proviennent directement du formulaire, sans contrôle) :
http://fr.php.net/mysql_real_escape_string
 
voire mieux :
http://fr.php.net/manual/fr/functi [...] xecute.php (si tu as mysqli)


Apres avoir lu tes liens ca ne marche tjrs pas (pr http://fr.php.net/mysql_real_escape_string je suis o courant. cvrai que c plus correct) mais sinon je nariv jamais a tomber dans la bonne condition]. je les gere mal.
 
 
Bref quelq'un pourrais -t-il reprendre mon code au dessus et le modifier afin de le faire fonctionner correctement??
Merci!!!


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 05-02-2007 à 16:30:18    

Si c'est pas bon, tu retournes false, sinon tu retournes true, y a pas plus basique. Fais voir ce que t'as essayé de faire au moins.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 05-02-2007 à 17:14:27    

Code :
  1. function check_form($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass)
  2. {
  3.   $aroba = strpos($email, '@');
  4.   $dot = strpos($email, '.');
  5.     $error == True;
  6.    
  7.       if(empty($nom))
  8.       {
  9.         $error == True;
  10.         echo "Vous avez oublie de saisir votre nom <br />";
  11.       }
  12.       else
  13.         $error == False;
  14.        
  15.        
  16.       if($error == False)
  17.       // On insert
  18.       else
  19.       // On insert pas
  20. }

Reply

Marsh Posté le 05-02-2007 à 19:16:22    

La requête SQL en tant que telle et les affichages ne devraient pas avoir lieu là-dedans.

Message cité 1 fois
Message édité par sielfried le 05-02-2007 à 19:16:37

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 05-02-2007 à 19:16:22   

Reply

Marsh Posté le 06-02-2007 à 10:09:41    

sielfried a écrit :

La requête SQL en tant que telle et les affichages ne devraient pas avoir lieu là-dedans.


 
Je suis pas sur qu'il veuille se lancer dans le MVC  :ange:

Reply

Marsh Posté le 06-02-2007 à 11:09:21    

nycius a écrit :

Code :
  1. function check_form($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass)
  2. {
  3.   $aroba = strpos($email, '@');
  4.   $dot = strpos($email, '.');
  5.     $error == True;
  6.    
  7.       if(empty($nom))
  8.       {
  9.         $error == True;
  10.         echo "Vous avez oublie de saisir votre nom <br />";
  11.       }
  12.       else
  13.         $error == False;
  14.        
  15.        
  16.       if($error == False)
  17.       // On insert
  18.       else
  19.       // On insert pas
  20. }



 
 
Cette exemple de code controle la valeur de retour champs par champs. Moi ce que je veut faire c'est controler que tout les champs ont bien etes rempliset enregister dans la base que si tout les champs sont remplis. je vous envoi ma version qui ne marche pas:
function insert_in_db($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass)
{
 
  $fill_db = "INSERT INTO user (nom, prenom, login, adresse, cp, ville, email, pass, repass, date) VALUES (\"$nom\", \"$prenom\",\"$login\", \"$adresse\", \"$cp\",\"$ville\",\"$email\", \"$pass\", \"$repass\", \"$date\" )";
       
      $result = mysql_query($fill_db);
      echo "donnee entreerr";
      if (!$result)
 die('Requete invalide : ' . mysql_error());
     
}
 
 
function check_form($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass)
{
  $aroba = strpos($email, '@');
  $dot = strpos($email, '.');
 
  $retval = FALSE;
  while ($retval == FALSE)
    {
      if(empty($nom))
 echo "Vous avez oublie de saisir votre nom <br />";
      if(empty($prenom))
 echo "Vous avez oublie de saisir votre prenom<br />";
      if(empty($login))
 echo "Vous avez oublie de saisir votre login<br / >";
      if(empty($adresse))
 echo "Vous avez oublie de saisir votre adresse<br /";
      if(empty($cp))
 echo "Vous avez oublie de saisir votre code postal<br />";
      if(empty($ville))
 echo "Vous avez oublie de saisir votre ville<br />";
      if (empty($email))
 echo "Vous avez oublie de saisir votre email<br />";
      elseif(!empty($email) && $aroba == '' | $dot == '')
 echo "Mail invalide<br />";    
      if(empty($pass) || empty($repass))
 echo "Vous avez oublie de saisir votre pass<br />";
    }
    $retval = TRUE;
  if ($retval == TRUE)
    insert_in_db($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass);
}
 
j'ai aussi essaye a ta maniere ca fait apreil que celle ci. Please HELP!!!!


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 06-02-2007 à 11:50:16    

C'est exactement ce que je t'ai mis, regarde et adapte

Reply

Marsh Posté le 06-02-2007 à 12:31:31    

nycius a écrit :

C'est exactement ce que je t'ai mis, regarde et adapte


 
Je vien d'adapeter mon code donc dis moi si tu vois un probleme ne tout si je ne saissi aucune valeur dans mes champs ca enregiste une ligne vide dans ma base ou si je saisi juste un champs ca le marquera: Moi je veut que ca enregistre dans la base une fois ke tous les champs ont etes remplis. Merci de ton aide.
 
 
function insert_in_db($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass)
{
 
  $fill_db = "INSERT INTO user (nom, prenom, login, adresse, cp, ville, email, pass, repass, date) VALUES (\"$nom\", \"$prenom\",\"$login\", \"$adresse\", \"$cp\",\"$ville\",\"$email\", \"$pass\", \"$repass\", \"$date\" )";
 
 $result = mysql_query($fill_db);
    echo "donnee entreerr";
    if (!$result)
    die('Requete invalide : ' . mysql_error());
 
       
}
 
 
function check_form($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass)
{
  $aroba = strpos($email, '@');
  $dot = strpos($email, '.');
 
 
  $retval = TRUE;
  if(empty($nom))
    {
      $retval = TRUE;
      echo "Vous avez oublie de saisir votre nom <br />";
    }
  if(empty($prenom))
    {
      $retval = TRUE;
      echo "Vous avez oublie de saisir votre prenom<br />";
    }
  if(empty($login))
    {
      $retval = TRUE;
      echo "Vous avez oublie de saisir votre login<br / >";
    }
  if(empty($adresse))
    {
      $retval = TRUE;
      echo "Vous avez oublie de saisir votre adresse<br /";
    }
  if(empty($cp))
    {
      $retval = TRUE;
      echo "Vous avez oublie de saisir votre code postal<br />";
    }
  if(empty($ville))
    {
      $retval = TRUE;
      echo "Vous avez oublie de saisir votre ville<br />";
    }
  if (empty($email))
    {
      $retval = TRUE;
      echo "Vous avez oublie de saisir votre email<br />";
    }
  elseif(!empty($email) && $aroba == '' | $dot == '')
    {
      $retval = TRUE;
      echo "Mail invalide<br />";    
    }
  if(empty($pass) && empty($repass))
    {
      $retval = TRUE;
      echo "Vous avez oublie de saisir votre pass<br />";
    }
  $retval = FALSE;
  if ($retval == FALSE)
    insert_in_db($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass);
  else
    echo "on insere pas";
 
}
 
 
 


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 06-02-2007 à 12:34:38    

nycius a écrit :

C'est exactement ce que je t'ai mis, regarde et adapte


 C bon ca marche j'ai oublier le else. Merci encore tu dechire


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Sujets relatifs:

Leave a Replay

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