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

Signaler
Messages postés
42
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
14 novembre 2012
-
Messages postés
60
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
26 octobre 2011
-
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

Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
22 novembre 2011

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.
Messages postés
42
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
14 novembre 2012

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 .
Messages postés
60
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
26 octobre 2011

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