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

Eléphant du PHP | 226 Messages

27 févr. 2008, 12:49

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,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Eléphanteau du PHP | 21 Messages

27 févr. 2008, 13:02

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'; }

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 févr. 2008, 14:03

@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.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 21 Messages

27 févr. 2008, 14:08

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".