Simplifier un controle de formulaire et de base ainsi une insertion dans une bdd
lorant59
Messages postés42Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention14 novembre 2012
-
22 juin 2011 à 22:15
cs_nemo_1
Messages postés60Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention26 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
A voir également:
Simplifier un controle de formulaire et de base ainsi une insertion dans une bdd
cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 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.
lorant59
Messages postés42Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention14 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 .
cs_nemo_1
Messages postés60Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention26 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}