Page 1 sur 1

Afficher un message en fonction du champ utilisé...

Posté : 27 févr. 2008, 12:49
par albius
Bonjour,

Je cherche à afficher un message selon le champ du formulaire utilisé. Le "souci" en question est que le formulaire contient deux champs et me renvoie les deux variables inhérentes à ces champs. Et malgré mes tests sur chacune de ces variables, les deux messages sont systématiquement affichés si le deuxième champ est employé...
Test:
if ($_POST['Bassin']){
echo 'premier message';
}
if ($_POST['CodePostal']){
echo 'deuxième message';
}
Le formulaire:
<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table border="0" cellspacing="5">
  ...
        <select name="Bassin" id="BassinEmploi">
		<option selected="selected">S&eacute;lectionner le bassin</option>
		<?php while($data = mysql_fetch_array($requete)) { 
		echo '<option value="'.$data['IDBassin'].'">'.$data['Bassin'].'</option>';} ?>
        </select></td>
  </tr>
    ...
      <td bgcolor="#CBE3EF"><select name="CodePostal" id="CodePostal">
        <option selected="selected">S&eacute;lectionner le code postal</option>
	  <?php while($data = mysql_fetch_array($requete1)) { 
	  echo '<option value="'.$data['IDCodePostal'].'">'.$data['CodePostal'].'</option>';}?>
      </select></td>
    ...
      <td bgcolor="#CBE3EF"><input type="submit" name="Submit" value="Afficher" /> </td>
    </tr>
merci,

Posté : 27 févr. 2008, 13:02
par Xvider
Et si tu fait comme ceci

parce que là tu verifie uniquement si ton champ est pésent et biensur c'est la cas donc il vaux mieu verifier si il a une valeur.

Code : Tout sélectionner

if (isset($_POST['Bassin']) !=""){ echo 'premier message'; } if (isset($_POST['CodePostal'])!=""){ echo 'deuxième message'; }

Posté : 27 févr. 2008, 14:03
par Ryle
@Xvider : tu compares le résultat du isSet() à une chaine vide, ça n'a pas un grand intérêt, manque un petit quelque chose à mon avis ;)

@albius : lorsque tu soumets un formulaire, tous les champs sont envoyés à l'exception des case à cocher et des boutons radios qui ne sont pas sélectionnées. Il est donc normal de toujours retrouver tes select dans $_POST.

Le mieux est donc de donner une valeur vide (ou bidon, genre -1) à tes balises options "Sélectionner ... " et de tester non seulement si le champ est bien défini avec isSet() mais également de comparer la valeur contenue à une chaine vide ou à -1 selon ce pour quoi tu optes.

A noter que la fonction empty() permet de tester à la fois l'existance et le contenu d'une variable.

Posté : 27 févr. 2008, 14:08
par Xvider
oui je faisais juste une modif à son post.

Effectivement pour aller plus en avant, il y a effectivement d'autre chose à mettre en place "certainement".