我在 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。
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消