如何设置下拉框中的选定项

31

有没有办法使用以下“type”代码设置下拉框中的所选项目?

<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>

数据库存储了一个月的数据。我希望在编辑页面上,让用户选择这个月,但同时使用他们当前的设置作为默认值。

13个回答

95

你需要设置正确选项标签的selected属性:

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

你的PHP代码应该长这样:

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

通常我发现创建一个值数组并循环遍历它来创建下拉框更加整洁。


抱歉,发现你的评论和我的几乎一模一样之前没有看到。我会给你点赞,但是让提问者选择获胜者。顺便问一下,你的 PHP 开始标签有错别字吗?或者 <?= ?> 是有效的吗? - James Wheare
4
<?= is有效的 - 它会为您执行一个echo操作。 - Greg
1
在MS Expression Web中,我收到一个警告,说这个(php脚本)不允许在HTML5的<option>标签内。这是真的吗? - samuelschaefer
@samuelschaefer 我也遇到了同样的错误。感到困惑。 - Andrew Truckle
如果我在 PHP 变量 $role 中传递了字符串 select,我该如何编写代码?$role= ''; - Bhargav Chudasama
显示剩余2条评论

25

你需要在 <option> 标签上标记选择的项,而不是在 <select> 标签上。

所以你的代码应该像这样:

<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>

将所有月份名称放入一个数组中,使用基本的 foreach 循环即可减少重复。


2
专业提示:在value声明中重复选项文本是没有任何优势或好处的。 - mickmackusa

6

使用三元操作符在php中设置选定值的简单易懂示例

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

6

如果您使用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);

它将比较$_GET ['to']中的用户是否与表中的$row ['id']相同,如果是,则创建$selected。 这是用于私人消息系统...


$_GET['to'] 数据从哪里获取? - KUMAR
@KUMAR 它将从URL中获取此信息:page.php?to=34 - Frederick Marcoux

2

虽然它有些过时,但我也必须加上我的方式:)因为它是通用且特别适用于使用静态下拉列表值的情况。

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

在您的下拉选项中,您可以像这样使用此函数,并且您可以尽可能多地使用它,因为它适用于所有选择框/下拉菜单。

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

:) 我希望这个函数能够帮助其他人。


1
这是我想出来的解决方案...
<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>

不错的快速解决方案 - marvinpoo

1
简单的方法
<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>

0
一个简单的解决方案: 它对我有效。
<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

使用PHP实现下拉选项中所选择的最简单的方法如下

<select class="form-control" name="currency_selling" required >
         <option value="">Select Currency</option>
         <option value="pkr" <?=$selected_currency == 'pkr' ? ' selected="selected"' : '';?> >PKR</option>
      <option value="dollar"  <?=$selected_currency == 'dollar' ? ' selected="selected"' : '';?> >USD</option>
      <option value="pounds"  <?=$selected_currency == 'pounds' ? ' selected="selected"' : '';?> >POUNDS</option>
      <option value="dirham"  <?=$selected_currency == 'dirham' ? ' selected="selected"' : '';?> >DRHM</option>
      </select>

0

请检查:

<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接