Problème avec if...else.

Résolu
DocN -  
 Utilisateur anonyme -
Bonjour,

Voila, je dois actuellement réaliser un formulaire d'envoi de mail en php, mais j'ai un problème, j'utilise un code trouvé sur le net pour vérifier que mes champs sont remplis, le code marche, puisque quand je ne remplis pas un champ, il me le signale avec le nom associé a la variable, le problème vient de mon else, je pense, puisque si tous les champs sont remplis, je n'ai pas la suite de mon code, une page blanche qui ne m'indique pas d'erreur. Je suis désolé de ne pas pouvoir fournir tout le code, mais l'application n'est pas pour moi, néanmoins, voici la plus grosse partie, sachez que y a plusieurs echo dans le else qui appelle les variables (je ne sais pas si l'erreur vient du fait qu'on a pas le droit de mettre plusieurs echo, j'ai déjà essayé de les enlever, ça marchait pas pour autant.)

<?
if(!empty($_POST))
{
foreach($_POST as $cle=>$val)
{
if(empty($val))
{
echo 'Le champ ',$cle,' est obligatoire.<br />';
}
}
}
else
{
...
echo '<input type = "button" value = "<- Precedent" onclick="history.go(-1)" />';
echo '<input type = "submit" value = "Valider" />' ;
}
?>

Merci d'avance pour votre aide.

3 réponses

Angelneonizz Messages postés 788 Date d'inscription   Statut Membre Dernière intervention   137
 
bonjour,

tu ne donnes pas d'instruction au cas ou tout se passe bien.

Il faudrait faire ça, je pense:
<? 
if(!empty($_POST)) 
{ 
	foreach($_POST as $cle=>$val) 
	{ 
		if(empty($val)) 
		{ 
			echo 'Le champ ',$cle,' est obligatoire.<br />'; 
		}
		else
		{
			echo 'Le formulaire est rempli correctement';
		}
	}
} 
else 
{ 
... 
echo '<input type = "button" value = "<- Precedent" onclick="history.go(-1)" />'; 
echo '<input type = "submit" value = "Valider" />' ; 
} 
?> 


0
Utilisateur anonyme
 
Tu vas afficher 'Le formulaire est rempli correctement' à chaque champ rempli correctement :-)
Il faut être un peu plus subtil que ça, par exemple une variable qui mémorise qu'il y a eu un pb, et la tester à la fin du traitement.
0
Angelneonizz Messages postés 788 Date d'inscription   Statut Membre Dernière intervention   137
 
oupps effectivement, je n'ai pas fait attention.
0
Angelneonizz Messages postés 788 Date d'inscription   Statut Membre Dernière intervention   137
 
il y a peut être plus simple mais ça devrait marcher :
$erreur = '0';
if(!empty($_POST)) 
{ 
	foreach($_POST as $cle=>$val) 
	{ 
		if(empty($val)) 
		{ 
			echo 'Le champ ',$cle,' est obligatoire.<br />'; 
			$erreur = '1';
		}
	}
	if($erreur = '0') {  echo 'tout est ok'; }
} 
else 
{ 
... 
echo '<input type = "button" value = "<- Precedent" onclick="history.go(-1)" />'; 
echo '<input type = "submit" value = "Valider" />' ; 
} 
?> 
0
Utilisateur anonyme
 
Très distrait, Angelneonizz ^^
if($erreur = '0') { echo 'tout est ok'; }, ça n'affichera jamais 'tout est ok'. La comparaison, c'est ==
0
DocN
 
Le père a raison, ça m'affiche juste une douzaine de fois "Le formulaire est correctement rempli", je vais essayer cette idée de variable, transformer mon else en elseif si il faut.
0
DocN
 
Je n'ai pas essayé ta solution, mais le problème est réglée, j'ai affecté une variable aux erreurs, comme tu l'as fait, mais pas avec le même traitement de celle-ci, merci quand même de votre aide.
0