Initiliser un menu déroulant sur une valeur

Petit nouveau ! | 4 Messages

06 mai 2005, 18:58

Bonjour, j'essaye de remplir le menu déroulant en initialisant celle ci sur la variable "$test"
mais le menu déroulant s'initialise toujours sur la valeur "4".

(J'aimerais garder l'integration du HTML dans le PHP.)

Code (exemple):


<? $test=3;

echo'<form name="form1" method="post" action="">
<p>
<select name="select">
<option>1</option>
<option>2</option>';
if ($test=3){
echo'<option selected>3</option>';}
else {
echo'<option>3</option>';}
if ($test=4)
{echo'<option selected>4</option>';}
else {
echo'<option>4</option>';}
echo'
<option>5</option>
<option>6</option>
</select>';
?>


Merci d'avance

Eléphant du PHP | 139 Messages

06 mai 2005, 19:04

essaie avec un double == comme ceci : if ($test==4)

Mammouth du PHP | 19672 Messages

06 mai 2005, 19:10

Pourquoi faire générer du HTML inutilement à PHP ? Ça alourdit la charge serveur et ça rend le code nettement moins lisible:
<?php 
$test=3;
?>
<form name="form1" method="post" action="">
<p>
<select name="select">
<option value="1"<?php if($test == 1){echo(" selected");} ?>>1</option>
<option value="2"<?php if($test == 2){echo(" selected");} ?>>2</option>
<option value="3"<?php if($test == 3){echo(" selected");} ?>>3</option>
<option value="4"<?php if($test == 4){echo(" selected");} ?>>4</option>
<option value="5"<?php if($test == 5){echo(" selected");} ?>>5</option>
<option value="6"<?php if($test == 6){echo(" selected");} ?>>6</option>
</select>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

06 mai 2005, 19:27

Merci pour votre réponse rapide!
Ca marche avec "==". c'est alot....

quand a l'integration du HTML dans PHP c'est que je croyais que le fait de fermer les balises PHP me ferait perdre certaines valeurs, car ce bout de code est contenu en fait dans un tableau "while($data = mysql_fetch_array($req))".

C'est donc faux !!????....heu.... pas sur.
En tous cas encore merci à vous.

ps: je trouve pas le RESOLU à mettre sur le post!!!

Mammouth du PHP | 19672 Messages

06 mai 2005, 19:32

En fermant la balise <?php, on ne pert pas les valeurs de variables: on les perdrait en changeant de page si elle ne sont pas globales..
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

06 mai 2005, 19:36

OK..... mais dans le cas de while($data = mysql_fetch_array($req)) c'est possible aussi ?

Mammouth du PHP | 19672 Messages

06 mai 2005, 19:40

bien sur, tu ouvres ton while et tu peux intercaler du HTML en fermant temporairement les balises <?php, voici un exemple d'un code sur lequel je suis, avec une boucle for, mais le principe est le même :
              <select name="type_bien" id="type_bien" title="Type de bien annoncé">
    <?php
    for ($i=0; $i < count($types); $i++)
    {
?>
  <option value="<?php echo($type[$i][0]); ?>"<?php if($type_bien == $types[$i][0]){echo("selected=\"selected\"");} ?>><?php echo $types[$i][1]?></option>
<?php
    }
?>
</select>
Je ne perds rien du tout en route.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

06 mai 2005, 19:51

merci à toi Cyrano pour ton explication.

Je vais de ce pas me retaper mon code de manière beaucoup plus lisible et du coup plus light.

:P