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

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



天涯尽头无女友
浏览 120回答 1
1回答

达令说

您需要让您的代码将每个值与所选值进行比较,并添加适当的关键字:$previous_selection = // whatever it is, from your data&nbsp; while($rows = mysqli_fetch_assoc($resultSet))&nbsp; {&nbsp; $thisone = $previous_selection == $rows['schedule_category'] ? " selected " : "";&nbsp; echo '<option value = "';&nbsp; echo ($rows['schedule_category']) . '"' . $thisone . '>';&nbsp; echo($rows['schedule_category']) . '</option>';}您在这里所做的是将您之前选择的值与每一行进行比较,当它匹配时,变量$thisone被设置为“已选择”,否则为空。然后,您将其添加到值之后和选项的结束标记之前的每个选项行中,当值匹配时,它将添加“selected”。此外,我个人不喜欢无缘无故地切换进出 PHP,这使得它很难阅读,因此我在这里回应了 HTML 的各个部分。ETA - 实际上可以进一步简化,如果您的选择值与列表中显示的文本相同,则无需在选项标签中实际指定值。这仅在值与显示不同时才需要,例如,如果您希望用户看到您的类别名称,但您希望提交类别 ID。
打开App,查看更多内容
随时随地看视频慕课网APP