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?
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.
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.
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é ...
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>
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
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>
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>
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>
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>