Simplifier un controle de formulaire et de base ainsi une insertion dans une bdd

lorant59 Messages postés 42 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 14 novembre 2012 - 22 juin 2011 à 22:15
cs_nemo_1 Messages postés 60 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 26 octobre 2011 - 5 oct. 2011 à 16:43
Bonjour à tous

Mon script a pas mal de condition et j'aimerai le simplifier mais j' ai assez du mal entre
les controles de formulaire
la connection à la base
l insertion à la base
les controles des infos existant dans la base
les informations d' erreurs de connection
je vous montre le code
html>
<head>
<title> Inscription !!</title>
</head>

<html>
<head>
<title>< Inscrivez vous !!!!</title>
</head>

 Inscription

<form action="insert_client.php" method="post">
Civilité,
Monsieur : 
Madame : 
Mademoiselle : ,

----

Prénom,
">,

----

Nom,
">,

----

Mot de Passe,
">,

----

Mot de Passe,
"> ( Vérification ),

----

Email,
">,

----


</form>
<?php

/*controle formulaire*/

$sexe=@$_POST['sexe'];
$prenom = @$_POST['prenom'];
$nom = @$_POST['nom'];
$mdp = @$_POST['mdp'];
$mdp2 = @$_POST['mdp2'];
$email = @$_POST['email'];

$err=null;

if(isset($_POST)){
if( empty($_POST['sexe']))  $err.= "vous n'avez pas précisé votre civilité !
";
if( empty($_POST['prenom']) ) $err.= "vous n'avez pas précisé votre prénom !
";
if( empty($_POST['nom']) )    $err.= "vous n'avez pas précisé votre nom !
";

if( empty($mdp) ||(empty($mdp2) ) ) {$err.= "vous n'avez pas précisé votre Mot de passe ou/et celui de Vérification !
";}
elseif( $mdp != $mdp2 ) {
   $err.= "Les mots de passe que vous avez renseigné sont différents - Reformulez-les !
";}



if ( empty($email) ) {
$err.= "vous n'avez pas renseigné votre email !
";}
elseif(!ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $email)){
$err.=  "Le format de votre adresse Email doit être de format correct !
";}

}

/*pas d'erreurs on fait ...*/
if($err==null){

/*connection base*/
$db = mysql_connect('localhost', '','');
 mysql_select_db('');
 /*controle si le nom et le prenom existe dans la base*/

 $requete mysql_query("SELECT* FROM utilisateurs WHERE nom '".$nom."' and prenom = '".$prenom."'");
$nb=mysql_fetch_row($requete);
if($nb>0){
 echo"ce nom est déja pris";
 exit;}
 /*controle si l adresse email existe dans la base*/

 
 $requete = mysql_query("SELECT* FROM utilisateurs WHERE email= '".$email."'");
$nb=mysql_fetch_row($requete);
if($nb>0){
 echo"email est déja pris";
 exit;}
 /*insertion dans la base*/

 
 $requete ="INSERT INTO utilisateurs values ('".$sexe."','".$prenom."','".$nom."', sha1('".$mdp."'), '".$email."')";
 $resultat =mysql_query($requete);
 if ($resultat){
  echo mysql_affected_rows($db);
  echo "<meta http-equiv='refresh' content='0; url=index.php'>";
 }
else {echo"	Le service est temporairement indisponible, veuillez nous en excuser !";
}
 mysql_close($db);
 }else{
echo $err;

/*eventuellement une redirection ?*/
} 
?>
 </html>


voila il y pas mal de condition et je n arrive pas à les limiter pour rendre le code plus simple.
Si quelqu un peut m aider ?
Merci d avance
lorant

3 réponses

cs_eltyty Messages postés 86 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 22 novembre 2011
1 juil. 2011 à 19:44
Lut,

tu devrais faire découper en fonction :
-une qui affiche le formulaire style function showForm
-une qui contrôle style ctrlForm
-une fait l'action style actionForm

Comme ça tu n'as qu'à modifier actionForm pour une insertion, modif ou ajout. Ca rendra le code plus simple.
0
lorant59 Messages postés 42 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 14 novembre 2012
4 oct. 2011 à 14:19
Bonjour,
En fait j ai regrouper l ensemble de la fonction pour qui regroupe le formulaire et la connection à la base afin d 'afficher les informations de la base ou des teste formulaire sur la meme page css.
Pour l instant je simplifie pas sinon mon css fonctionnera plus mais je le ferai plus tard.
Merci quand meme .
0
cs_nemo_1 Messages postés 60 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 26 octobre 2011
5 oct. 2011 à 16:43
Bonjour,

Voici un exmple que je te propose pour les tests de tes inputs.

Après tu peux pousser/ameliorer ... la logique comme tu veux.

$required_fields = array('nom', 'sexe', 'prenom');
function check_required_fields($required_fields){
//tu mets $errors en global ici si tu l'utilise pour autre chose dehors ta function ou tu renvoie juste avec le return en fin de function
foreach($required_fields as $field){
if(empty($_POST[$field])){
$errors = array_merge($errors, $field);
}
}
return $errors;
}

Je m'excuse je n'ai pas de tester mais l'idée y est.

Tu fais un array avec tes inputs requis.

Tu fais une function qui verifie ces inputs

Et enfin tu verifie if(empty($errors)){//tout est ok}else{//Oooops}

Bon courage
0
Rejoignez-nous