Recuperer une variable à partir d'une liste

Petit nouveau ! | 2 Messages

27 avr. 2005, 17:59

Bonsoir.

Je voudrais récuperer une variable à partir d'un formulaire.

L'operation marche parfaitement avec un champ de texte:

Code : Tout sélectionner

<input name="entreprise" type="text" id="entreprise">


mais quand j'essaye de le faire à partir d'une liste:
<select name="entreprise" id="entreprise">
      <?php
do {  
?>
      <option value="<?php echo $row_ID_entreprises['action_id']?>"<?php if (!(strcmp($row_ID_entreprises['action_id'], $row_ID_entreprises['action_societe']))) {echo "SELECTED";} ?>><?php echo $row_ID_entreprises['action_id']?></option>
      <?php
} while ($row_ID_entreprises = mysql_fetch_assoc($ID_entreprises));
  $rows = mysql_num_rows($ID_entreprises);
  if($rows > 0) {
      mysql_data_seek($ID_entreprises, 0);
	  $row_ID_entreprises = mysql_fetch_assoc($ID_entreprises);
  }
?>
impossible de recuperer la variable....Le formulaire est en "POST" et sur la page cible, j'utilise:

if(isset($_POST['entreprise'])) $entreprise=$_POST['entreprise'];
else $entreprise="";

Donc je voudrais savoir pourquoi ça ne marche pas...

Merci d'avance.


J'espere avoir été assez clair, sinon demandez des info :)

Eléphant du PHP | 357 Messages

28 avr. 2005, 10:09

pas trop compris avec le fragment de code que tu as donné et le pb de récupération de la variable post.
toutefois a tout hasard:
if(isset($_POST['entreprise'])) 
{ //<-- a pas oublier
$entreprise=$_POST['entreprise'];
} //<-- a pas oublier
else 
{ //<-- a pas oublier
$entreprise=""; 
} //<-- a pas oublier
toutefois ce test n'est me semble t il pas nécessaire:

Code : Tout sélectionner

$entreprise = isset ($_POST['entreprise']) ? $_POST['entreprise'] : "";
fait me semble t il la meme chose

Eléphanteau du PHP | 22 Messages

28 avr. 2005, 12:33

Bonjour

Pour seayoung :
Les crochets ne sont pas obligatoires quand il n'y a qu'une ligne (ou une instruction, je sais plus) après la condition.
Sinon tu dis que le test n'est pas nécessaire et juste en-dessous, tu fais un test qui n'est rien d'autre que ce qui est écrit au-dessus mais en PHP condensé...

Pour Kaatu :
Ton code me semble correct... Essai de voir si la valeur que tu envois n'est pas vide car ce n'est pas parce qu'une variable existe qu'elle contient forcément une valeur.
Teste en faisant un truc du genre :
if(isset($_POST['entreprise'])) echo "variable existante";
Mais à priori si tu vois quelquechose dans ton champ select, la valeur envoyée ne peut pas être vide puisque tu remplis avec la même variable.
Sinon montre nous tout le formulaire ainsi que le script qui récupère le formulaire.

Spartakis

Eléphant du PHP | 357 Messages

28 avr. 2005, 13:25

je sais que la ligne que j ai mis est la meme chose que son test et c'est justement pour ca que je l'ai mis car cela prend moi de place au lieu d'avoir 4lignes il n'en n'a plus qu une.
Dsl je me suis mal exprimé pour l'explication :oops:

Daz
Eléphanteau du PHP | 36 Messages

28 avr. 2005, 14:05

Salut,
une petite précision, effectivement ce code est le meme
PHP:
if(isset($_POST['entreprise']))
{ //<-- a pas oublier
$entreprise=$_POST['entreprise'];
} //<-- a pas oublier
else
{ //<-- a pas oublier
$entreprise="";
} //<-- a pas oublier

toutefois ce test n'est me semble t il pas nécessaire:
Code:

$entreprise = isset ($_POST['entreprise']) ? $_POST['entreprise'] : "";
de plus les accolades ne sont effectivement pas obligatoires si'il n'y a qu'une instruction.
MAIS le premier code a l'avantage d'être beaucoup plus lisible que le deuxieme, et meme si il est plus long, c'est une bonne habitude a prendre (la lisibilité), dans l'optique d'une reprise de son code par un autre(voir meme pour soi).
8)

++

Daz

Eléphant du PHP | 357 Messages

28 avr. 2005, 14:09

je suis d accord sur le fait de la lisibilité du code .
Personnellement je prefere la solution en une ligne qui forcement prend moins de place et qui est tout aussi visible mais qui a l'avantage que si tu as plusieurs requettes de ce type (il m'est arriver d'en avoir une 50 aine )
faire 50 boucles de 4lignes soit 200lignes et 50ligne pour une compréhension de code je préfère les 50 apres c'est une question de point de vue :wink: