Problème de ELSEIF qui ne s'applique pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de ELSEIF qui ne s'applique pas

Re: Problème de ELSEIF qui ne s'applique pas

par dev3 » 06 août 2010, 15:56

Bonjour,

A froid je ne vois pas d'incohérence mais en codant quelques echo dans tes if pour "tracer" tes variables $_POST['Email'], $_POST['Nom'], $_POST['message'] devrait pouvoir te débloquer.
En gros dans chaque bloc de "if" tu affiches tes variables + un echo "premier if" et "deuxième if"

Ca semble un peu barbare et basique mais c'est souvent efficace ;-)

Problème de ELSEIF qui ne s'applique pas

par tittye » 05 août 2010, 13:23

Bonjour à tous,

je suis débutante en PHP et j'ai un problème de ELSEIF
Je fais remplir un formulaire de contact: Nom, Email, message
le php devrait fonctionner comme ça:
Si les variables existent:
si email correct et tous les champs remplis: envoie du message
si un des champs vide: "il faut remplir tous les champs"
si email incorrect: "Email invalide"
sinon : "vérifiez vos champs"
Sinon : afficher le formulaire de départ

Mon problème avec le elseif est que si l'email est invalide il m'écrit: "il faut remplir tous les champs" au lieu de e-mail invalide. Si j'inverse les deux elseif, il signale les erreurs d'e-mail mais plus les champs vides... Je pense que je me plante sur une fonctionnalité du elseif mais je ne comprends pas laquelle. car quand il y a juste un problème incorrect, la première condition est fausse, la seconde aussi puisqu'aucun des champs n'est vide, donc la troisième condition devrait s'éxécuter...

(ensuite j'ai un problème d'inexistence d'array concernant le code d'envoie du mail mais je me dit que c'est peut être pcq je travaille sur wamp et pas sur le serveur direct parce que ça fonctionnait précédemment avec une page cible indépendante.)

Si vous pouvez me filer un coup de main ce serait drôlement gentil:
<div id="corps">
  
   <H3>CONTACT</H3>
  
	<?php

		IF (Isset ($_POST['Nom']) AND Isset ( $_POST['Email']) AND isset ($_POST['message']))
		{
			IF (filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL) AND !empty($_POST['Nom']) AND !empty($_POST['message']))
			{
				$TO = "[email protected]";

				$CC = "[email protected]";

				$h  = "De " .$_POST['Email'] ;

				$subject = "Message pour Au chat va bien";

				$message = "";

				while (list($key, $val) = each($HTTP_POST_VARS)) 
				{
				$message .= "$key : $val\n";
				}
				$dmessage= html_entity_decode($message);

				mail($TO, $subject, $dmessage, $h);
				mail($CC, $subject, $dmessage, $h);
				
	?>
<p valign="middle"><center><h2>Votre message a bien &eacute;t&eacute; envoy&eacute;.<br> Je vous r&eacute;pondrai très rapidement.</h2></p>
<center><img src="images/thinkingcat.gif" ></center>
</div>

	<?php			
			}
			
			ELSEIF (empty($_POST['Nom']) OR empty($_POST['Email']) OR empty($POST['message']))
			{
			?>
			<center><font color="red">Vous devez remplir tous les champs.</font></center><br>
			<?php 
			include('Formcontact.php');
			}
			ELSEIF(!filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL))
			{
			?>
			<center><font color="red">Votre E-mail est invalide.</font></center><br>
			<?php
			include('Formcontact.php');
			}
			ELSE
			{
			?>
			<center><font color="red">Veuillez vérifier les champs.</font></center><br>
			<?php
			}
		}
		
		ELSE
		{
		include('Formcontact.php');
	 
		}
		
	?>	
	
</div>