Souci avec else

Fermé
celishug Messages postés 3 Date d'inscription vendredi 27 février 2015 Statut Membre Dernière intervention 8 avril 2015 - 8 avril 2015 à 15:36
 celishug - 8 avril 2015 à 17:17
Bonjour,

J'ai fait un formulaire qui ne fonctionne qu'en partie, je m'explique

3 champs: nom, adresse mail, commentaire

Je souhaite que si l'un des champs nom ou adresse mail soit vide, un message d'erreur apparaisse sinon message indiquant que l'inscription est bien prise en compte.
Bref, à l'heure actuelle, si l'adresse mail est bonne et même si le champ nom est vide, il s'affiche le double message "merci de remplir tous les champs et félicitations". Il semblerait qu'il y ait une erreur avec else.
Bref, ci-dessous mon code php.

Quelqu'un aurait-il la solution?

D'avance merci :
<?php
ini_set('display_errors', 'off');
$nom=$_POST['nom'];
$email=$_POST['email'];
$commentaire=$_POST['commentaire'];
if(empty($nom) or empty($email))
{
echo'Veuillez remplir tous les champs','<br/>';
}
if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$_POST['email']))
$db=mysql_connect('localhost','root','') or die ('Erreur de connection'.mysql_error());
mysql_select_db('exo2',$db) or die ('Merci de renseigner votre adresse mail'.mysql_error());
$sql = "insert into exo2(id, nom, email, commentaire) values ('','$nom', '$email', '$commentaire')";
mysql_query($sql) or die ('Erreur d\'écriture'.mysql_error());
else
{
echo'Tous les champs doivent être renseignés';
}
{
echo'Félicitations, vous venez de nous rejoindre';
}
mysql_close();

?>

3 réponses

Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
8 avril 2015 à 16:32
Voila une possibilité :
<?php 
ini_set('display_errors', 'off'); 

function ifisset($value, $default=null) {
$val = (isset($_GET[$value])) ? $_GET[$value] : $default;
$val = (isset($_POST[$value])) ? $_POST[$value] : $default;
return $val;
}

$nom = ifisset('nom');
$email = ifisset('email'); 
$commentaire = ifisset('commentaire'); 

if($nom != null && $email != null && preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$email)) { 
	$db=mysql_connect('localhost','root','') or die ('Erreur de connection'.mysql_error()); 
	mysql_select_db('exo2',$db) or die ('Merci de renseigner votre adresse mail'.mysql_error()); 
	$sql = "insert into exo2(id, nom, email, commentaire) values ('','$nom', '$email', '$commentaire')"; 
	mysql_query($sql) or die ('Erreur d\'écriture'.mysql_error()); 
} 
elseif ($nom != null && $email != null) { 
	echo 'L\'email renseigné n\'est pas valide ! '; 
} elseif($nom == null && $email == null) {
	echo 'Veuillez remplir les champs nom et email';
} elseif($nom == null) {
	echo 'Veuillez remplir le champ nom';
} else {
	echo 'Veuillez remplir le champ email';
}
 
mysql_close(); 

?>
1
Merci Xavier du 34, ça fonctionne merveilleusement bien.
J'ai peur d'abuser si je demande la petite phrase de bienvenue si tout est ok. J'ai tenté de la rajouter à la suite mais elle n'est pas prise en compte.
Merci de ta bienveillance
0
Zephirr Messages postés 317 Date d'inscription mardi 30 décembre 2014 Statut Membre Dernière intervention 6 novembre 2015 100
8 avril 2015 à 16:06
Des accolades après ton
if
?
0
Merci d'avoir répondu si vite mais des accolades après mon if (celui qui se trouve avant mon dernier echo) ne changent rien ou alors je n'ai pas compris!!!
0
Zephirr Messages postés 317 Date d'inscription mardi 30 décembre 2014 Statut Membre Dernière intervention 6 novembre 2015 100
8 avril 2015 à 16:44
Regarde la solution de Xavierdu34
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
8 avril 2015 à 16:09
'lut, vires-moi ces fonctions
mysql_*
... Je suis sérieux, débarrasses-toi en, car elles induisent la gestion d'erreur que tu utilise, qui est atroce:
or die
c'est le mal.
Apprends a utiliser les Exceptions, et construit ta gestion d'erreur à partir de ça (en supplément d'être le moyen de gestion d'erreur de PDO ou MySQLi).
0