Problème avec if...else.

Résolu/Fermé
DocN - 23 janv. 2013 à 14:18
 Utilisateur anonyme - 23 janv. 2013 à 15:59
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 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
23 janv. 2013 à 15:15
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
23 janv. 2013 à 15:24
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 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
23 janv. 2013 à 15:27
oupps effectivement, je n'ai pas fait attention.
0
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
23 janv. 2013 à 15:43
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
23 janv. 2013 à 15:59
Très distrait, Angelneonizz ^^
if($erreur = '0') { echo 'tout est ok'; }, ça n'affichera jamais 'tout est ok'. La comparaison, c'est ==
0
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
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