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


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

我创建了一个员工列表,其中包含一些字段,其中也包含下拉列表。问题是,每当我选择编辑选项并重定向到编辑页面时,下拉列表中的值都会被设置为我查询它的数据库中的第一个值。我想将下拉列表的值设置为与选择编辑选项之前预定义的值相同,即如果我选择要编辑的区域,并且其值在编辑之前为T5,我希望选择相同的值,而不是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 }
     ?>

有人能帮我吗。

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

<?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' : '';?>

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

让我们把这个变量称为$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中。