2010-08-13 6 views
5

J'essaye d'obtenir l'option choisie en utilisant PHP, mais j'ai manqué d'idées!Comment présélectionner une liste déroulante html avec php?

est le code ci-dessous j'ai essayé jusqu'à présent:

<select> 
<option value="1">Yes</options> 
<option value="2">No</options> 
<option value="3">Fine</options> 
</select> 
<input type="text" value="" name="name"> 
<input type="submit" value="go" name="go"> 

Alors, que dois-je faire?

Répondre

5
<select> 
<option value="1" <?php if ($myVar==1) echo 'selected="selected"';?>>Yes</options> 
<option value="2" <?php if ($myVar==2) echo 'selected="selected"';?>>No</options> 
<option value="3" <?php if ($myVar==3) echo 'selected="selected"';?>>Fine</options> 
</select> 
<input type="text" value="" name="name"> 
<input type="submit" value="go" name="go"> 

C'est une manière très simple et directe, si j'ai bien compris votre question.

+0

Je vous ai battu par une seconde monsieur: P – Iznogood

+0

@Iznogood Je pense que vous voulez dire l'autre sens .. Mouseover votre timestamp de réponse dit 17:14:48, alors que sur la réponse de Bart, il est dit 17:14:47 :) – DavChana

+2

Bien @Davinder Vous avez 5 ans de retard! :-) – Iznogood

1

Donnez d'abord un nom à votre sélection. Procédez ensuite:

<select name="my_select"> 
<option value="1" <?= ($_POST['my_select'] == "1")? "selected":"";?>>Yes</options> 
<option value="2" <?= ($_POST['my_select'] == "2")? "selected":"";?>>No</options> 
<option value="3" <?= ($_POST['my_select'] == "3")? "selected":"";?>>Fine</options> 
</select> 

Qu'est-ce que cela fait est de vérifier si ce qui a été sélectionné est le même pour chacun et lorsque son trouvé un écho « sélectionné ».

-1

Cette réponse n'est pas pertinente pour un destinataire particulier, mais peut-être utile pour d'autres. J'ai eu problème similaire avec 'sélection' right 'option' par la valeur retournée à partir de la base de données. Je l'ai résolu en ajoutant un tag supplémentaire avec l'affichage appliqué: aucun.

<?php 
$status = "NOT_ON_LIST"; 

$text = "<html> 
<head> 
</head> 
<body> 
<select id=\"statuses\"> 
    <option value=\"status\" selected=\"selected\" style=\"display:none\">$status</option> 
    <option value=\"status\">OK</option> 
    <option value=\"status\">DOWN</option> 
    <option value=\"status\">UNKNOWN</option> 
</select> 
</body> 
</html>"; 

print $text; 
?> 
12

Les programmeurs sont paresseux ... euh .... efficace .... Je le ferais comme ceci:

<select><?php 
    $the_key = 1; // or whatever you want 
    foreach(array(
     1 => 'Yes', 
     2 => 'No', 
     3 => 'Fine', 
    ) as $key => $val){ 
     ?><option value="<?php echo $key; ?>"<?php 
      if($key==$the_key)echo ' selected="selected"'; 
     ?>><?php echo $val; ?></option><?php 
    } 
?></select> 
<input type="text" value="" name="name"> 
<input type="submit" value="go" name="go"> 
+0

C'est la seule solution qui s'adresse à un select avec des dizaines ou des centaines d'options. +1 – Wes

0

Je suppose que vous utilisez un tableau pour créer votre select entrée de formulaire. Dans ce cas, utilisez un tableau:

<?php 
    $selected = array($_REQUEST['yesnofine'] => 'selected="selected"'); 
    $fields = array(1 => 'Yes', 2 => 'No', 3 => 'Fine'); 
?> 
    <select name=‘yesnofine'> 
<?php foreach ($fields as $k => $v): ?> 
    <option value="<?php echo $k;?>" <?php @print($selected[$k]);?>><?php echo $v;?></options> 
<?php endforeach; ?> 
</select> 

Sinon, vous pouvez juste déroulez la boucle au-dessus, et toujours utiliser un tableau.

<option value="1" <?php @print($selected[$k]);?>>Yes</options> 
<option value="2" <?php @print($selected[$k]);?>>No</options> 
<option value="3" <?php @print($selected[$k]);?>>Fine</options> 

note que je ne connais pas:

  • comment vous nommez votre entrée, donc j'ai fait un nom.
  • façon dont vous gérez votre entrée de formulaire côté serveur, je $_REQUEST,

Vous devrez adapter le code pour répondre aux exigences du cadre que vous utilisez, le cas échéant.

De même, il est habituel dans de nombreux cadres d'utiliser the alternative syntax dans des scripts dédiés.

5

vous pouvez l'utiliser ..

<select name="select_name"> 
    <option value="1"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='1')?' selected="selected"':'');?>>Yes</option> 
    <option value="2"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='2')?' selected="selected"':'');?>>No</option> 
    <option value="3"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='3')?' selected="selected"':'');?>>Fine</option> 
</select> 
0

J'utilise en ligne si est ce

($_POST['category'] == $data['id'] ? 'selected="selected"' : false) 
+0

Pour l'anecdote, "inline ifs" est en fait connu comme "opérateur ternaire". – Christian

0

J'ai 2 fichiers php et je l'ai fait cela, et il fonctionne. (ceci est un exemple) le premier code provient d'un fichier et le second code de deux fichiers.

<form action="two.php" method="post"> 
<input type="submit" class="button" value="submit" name="one"/> 
<select name="numbers"> 
<option value="1"> 1 </option> 
<option value="2"> 2 </option> 
<option value="3"> 3 </option> 
</select> 
</form> 



if(isset ($_POST['one'])) 
{ 

if($_POST['numbers']=='1') 
{ 
$a='1' ; 
} 
else if($_POST['numbers']=='2') 
{ 
$a='2' ; 
{ 
else if ($_POST['numbers']=='3') 
{ 
$a='3' ; 
} 

} 
-1

C'est la solution que je suis venu avec:

<form name = "form1" id = "form1" action = "#" method = "post"> 
    <select name = "DropDownList1" id = "DropDownList1"> 
<?php 
$arr = array('Yes', 'No', 'Fine'); // create array so looping is easier 
for($i = 1; $i <= 3; $i++) // loop starts at first value and ends at last value 
{ 
    $selected = ''; // keep selected at nothing 
    if(isset($_POST['go'])) // check if form was submitted 
    { 
    if($_POST['DropDownList1'] == $i) // if the value of the dropdownlist is equal to the looped variable 
    { 
     $selected = 'selected = "selected"'; // if is equal, set selected = "selected" 
    } 
    } 
    // note: if value is not equal, selected stays defaulted to nothing as explained earlier 
    echo '<option value = "' . $i . '"' . $selected . '>' . $arr[$i] . '</option>'; // echo the option element to the page using the $selected variable 
} 
?> 
    </select> <!-- finish the form in html --> 
    <input type="text" value="" name="name"> 
    <input type="submit" value="go" name="go"> 
</form> 

Le code je fonctionne tant que les valeurs sont des nombres entiers dans un ordre numérique (ascendant ou descendant). Ce qu'il fait est de lancer la liste déroulante en HTML, et ajoute chaque élément d'option dans le code PHP. Cela ne fonctionnera pas si vous avez des valeurs aléatoires, par exemple: 1, 4, 2, 7, 6. Chaque valeur doit être unique.

+2

Vous ne pouvez pas le rendre plus inefficace: ** 1. ** Vérifiez $ _POST ['go'] 'une seule fois, pas à chaque itération dans la boucle ** 2. ** Votre boucle ne prendre soin des changements dans le tableau, au moins utiliser 'count ($ arr)' pas un nombre codé en dur. ** 3. ** La boucle 'foreach()' de PHP gère automatiquement l'itération à travers un tableau et récupère les clés et les valeurs - ainsi vous n'avez pas besoin d'avoir votre propre index d'incrément. – Christian

Questions connexes