[英]PHP Edit form for MySQL database <option> value is not correct after a fetch
我在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
您需要讓您的代碼將每個代碼與所選值進行比較,並添加適當的關鍵字:
$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-實際上,可以進一步簡化它,如果您選擇的值與列表中顯示的文本相同,則無需在option標簽中實際指定該值。 僅當值不同於顯示時才需要這樣做,例如,如果您希望用戶看到您的類別名稱,但是您想提交類別ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.