为了账号安全,请及时绑定邮箱和手机立即绑定

获取后,MySQL 数据库 <option> 值的 PHP 编辑表单不正确

获取后,MySQL 数据库 <option> 值的 PHP 编辑表单不正确

PHP
天涯尽头无女友 2021-12-24 15:06:20
我在 php 中有一个 Edit 表单,一切都很好。我唯一的问题是当我单击“编辑”时,它会返回除“选择”下拉列表之外的所有数据。它没有选择的类别,它总是显示列表中的第一个值。但是我可以单击下拉菜单并选择一个新类别,然后它就可以工作了。//Query the category table$resultSet = $con->query("SELECT * FROM schedule_category");<select id="schedule_category" name="schedule_category" class="custom-select">              <?php               while($rows = mysqli_fetch_assoc($resultSet))                {            ?><option value = "<?php echo($rows['schedule_category'])?>">         <?php echo($rows['schedule_category']) ?>        </option>        <?php                }                 ?>               </select>I would like to have it show the correct select option record not the first one in the drop down list. Here is an image of what happens https://imgur.com/a/XVXQ2Sa
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您需要让您的代码将每个值与所选值进行比较,并添加适当的关键字:


$previous_selection = // whatever it is, from your data

  while($rows = mysqli_fetch_assoc($resultSet))

  {

  $thisone = $previous_selection == $rows['schedule_category'] ? " selected " : "";

  echo '<option value = "';

  echo ($rows['schedule_category']) . '"' . $thisone . '>';

  echo($rows['schedule_category']) . '</option>';

}


您在这里所做的是将您之前选择的值与每一行进行比较,当它匹配时,变量$thisone被设置为“已选择”,否则为空。然后,您将其添加到值之后和选项的结束标记之前的每个选项行中,当值匹配时,它将添加“selected”。


此外,我个人不喜欢无缘无故地切换进出 PHP,这使得它很难阅读,因此我在这里回应了 HTML 的各个部分。


ETA - 实际上可以进一步简化,如果您的选择值与列表中显示的文本相同,则无需在选项标签中实际指定值。这仅在值与显示不同时才需要,例如,如果您希望用户看到您的类别名称,但您希望提交类别 ID。


查看完整回答
反对 回复 2021-12-24
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信