当我们尝试编辑一行数据时,如何为下拉列表设置预定义值?

How to set the predefined value for the dropdown while we try to edit the data of a row?

我创建了一个员工列表,其中的字段很少,其中也包括下拉列表。问题是每当我 select 编辑选项并重定向到编辑页面时,下拉列表中的值被设置为我正在查询它的数据库中的第一个值。我想在编辑选项 selected 之前将下拉列表的值设置为与预定义的值相同,即如果我 select 要编辑的领土并且在编辑之前它的值为 T5 我希望相同的是 selected 不是 T1,而是我在编辑页面中使用的代码是

 <?php                                          
  $sql = "SELECT DISTINCT `territory` FROM se_ae ";
 ?>
                    <select name="territory">
                    <?php foreach ($dbo->query($sql) as $row) { ?>
                    <option value="<?php echo $row['territory']; ?>">
                     <?php echo $row['territory']; ?></option> 
    <?php }
     ?>

谁能帮我解决这个问题。

您可能有一个存储员工字段的变量,对吧?如果你不这样做,你应该,毕竟你正在编辑它的数据,所以你应该显示当前数据,这样你就可以改变你想要的。

我们称这个变量为$employee

<?php $sql = "SELECT DISTINCT `territory` FROM se_ae "; ?>
<select name="territory">
  <?php foreach ($dbo->query($sql) as $row) { ?>
    <?php $selected = ($row['territory'] == $employee['territory']) ? 'selected' : '' ?>
    <option value="<?php echo $row['territory']; ?>" <?php echo $selected; ?>>
      <?php echo $row['territory']; ?>
    </option>
  <?php } ?>
</select>

这样,对于每个区域,您检查它是否等于员工区域,如果是,它会将 selected 参数添加到标签 option.

因为您已将值保存在变量中。你可以试试

<?php foreach ($dbo->query($sql) as $row) { ?>
    <option value="<?php echo $row['territory']; ?>" <?php echo ($territory == $row['territory']) ? 'selected' : '';?>>
        <?php echo $row['territory']; ?></option> 
<?php } ?>

已添加<?php echo ($territory == $row['territory']) ? 'selected' : '';?>