Souci avec else

celishug Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 celishug -
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   Statut Membre Dernière intervention   21
 
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
celishug
 
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   Statut Membre Dernière intervention   100
 
Des accolades après ton
if
?
0
celishug
 
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   Statut Membre Dernière intervention   100
 
Regarde la solution de Xavierdu34
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
'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