web-dev-qa-db-fra.com

Comment définir l'élément sélectionné dans une liste déroulante

Est-il possible de définir l'élément sélectionné dans une liste déroulante à l'aide du code de type suivant?

<select selected="<?php print($row[month]); ?>"><option value="Janurary">January</option><option value="February">February</option><option value="March">March</option><option value="April">April</option></select>

La base de données contient un mois .. et je veux autoriser, sur la page d'édition, à choisir ce mois-ci .. mais qu'elle soit pré-remplie avec leur paramètre actuel?

13
tarnfeld

Vous devez définir l'attribut sélectionné de la balise d'option correcte:

<option value="January" selected="selected">January</option>

Votre PHP ressemblerait à ceci:

<option value="January"<?=$row['month'] == 'January' ? ' selected="selected"' : '';?>>January</option>

Je trouve généralement plus pratique de créer un tableau de valeurs et de le parcourir pour créer un menu déroulant.

54
Greg

Vous marquez l'élément sélectionné sur la balise <option>, pas la balise <select>.

Donc, votre code devrait lire quelque chose comme ceci:

<select>
    <option value="January"<?php if ($row[month] == 'January') echo ' selected="selected"'; ?>>January</option>
    <option value="February"<?php if ($row[month] == 'February') echo ' selected="selected"'; ?>>February</option>
    ...
    ...
    <option value="December"<?php if ($row[month] == 'December') echo ' selected="selected"'; ?>>December</option>
</select>

Vous pouvez rendre cela moins répétitif en mettant tous les noms de mois dans un tableau et en utilisant un foreach de base dessus.

15
James Wheare

Vous pouvez utiliser cette méthode si vous utilisez une base de données MySQL:

include('sql_connect.php');
$result = mysql_query("SELECT * FROM users WHERE `id`!='".$user_id."'");
while ($row = mysql_fetch_array($result))
{
    if ($_GET['to'] == $row['id'])
    {
        $selected = 'selected="selected"';
    }
    else
    {
    $selected = '';
    }
    echo('<option value="'.$row['id'].' '.$selected.'">'.$row['username'].' ('.$row['fname'].' '.substr($row['lname'],0,1).'.)</option>');
}
mysql_close($con);

Il comparera si l'utilisateur dans $ _GET ['to'] est identique à $ row ['id'] dans la table, si oui, le $ sélectionné sera créé. C'était pour un système de messagerie privé ...

5
Frederick Marcoux

Exemple simple et facile à comprendre en utilisant des opérateurs ternaires pour définir la valeur sélectionnée en php

<?php $plan = array('1' => 'Green','2'=>'Red' ); ?>
<select class="form-control" title="Choose Plan">
<?php foreach ($plan as $id=> $value) { ?>
  <option value="<?php echo $id;?>" <?php echo ($id==  '2') ? ' selected="selected"' : '';?>><?php echo $value;?></option>
<?php } ?>
</select>
3
Muhammad Fahad

C'est trop vieux mais je dois aussi ajouter mon chemin :) parce que c'est générique et utile surtout quand vous utilisez des valeurs de menu déroulant statiques. 

function selectdCheck($value1,$value2)
   {
     if ($value1 == $value2) 
     {
      echo 'selected="selected"';
     } else 
     {
       echo '';
     }
     return;
   }

et dans vos options de liste déroulante, vous pouvez utiliser cette fonction comme ceci et vous pouvez l’utiliser autant que vous le pouvez car elle s’adapte à toutes vos listes de sélection/menus déroulants.

<option <?php selectdCheck($row[month],january); ?> value="january">january</option>

:) J'espère que cette fonction aidera les autres

2
Zaheer Ahmad

Moyen simple

<select class ="dropdownstyle" name="category" selected="<?php print($messageeditdetails[0]['category_id']); ?>">

<option value=""><?php echo "Select"; ?></option>

<?php  foreach ($dropdowndetails as $dropdowndetails) { ?>
    <option <?php if($messageeditdetails[0]['category_id'] == $dropdowndetails['id']) { ?> selected="<?php echo $dropdowndetails['id']; ?>" <?php } ?> value="<?php echo $dropdowndetails['id']; ?>"><?php echo $dropdowndetails['category_name']; ?></option>
<?php } ?>
</select>
1
user2142997

Une solution simple: Ça marche pour moi

<div class="form-group">
    <label for="mcategory">Select Category</label>
    <select class="form-control" id="mcategory" name="mcategory" required>
        <option value="">Please select category</option>
        <?php foreach ($result_cat as $result): ?>
        <option value="<?php echo $result['name'];?>"<?php 
           if($result['name']==$mcategory){
               echo 'selected';
           } ?>><?php echo $result['name']; ?></option>
                                        }
        <?php endforeach; ?>
    </select>
</div>
0
Sani Kamal

Vérifie ça:

<select class="form-control" id="department" name="department" type="text">
    <option value="medical-furniture" @if($list->department == "medical-furniture") selected @endif>Medical furniture</option>
    <option value="medical-table" @if($list->department == "medical-table") selected @endif>Medical table</option>
    <option value="service" @if($list->department == "service") selected @endif>Service</option>
</select>
0
Adrian

C'est la solution que j'ai proposée ...

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">   
    <select name="select_month">
        <?php
            if (isset($_POST['select_month'])) {
                if($_POST["select_month"] == "January"){
                    echo '<option value="January" selected="selected">January</option><option value="February">February</option>';
                }
                elseif($_POST["select_month"] == "February"){
                    echo '<option value="January">January</option><option value="February" selected="selected">February</option>';
                }
            }
            else{
                echo '<option value="January">January</option><option value="February">February</option>';
            }
        ?>
    </select>
    <input name="submit_button" type="submit" value="Search Month">
</form>
0
Sean R