我正在從我的數據庫中打印選擇列表。使用PHP和MySQL在選擇選項上打印選定屬性
這裏是我的代碼的一部分:
<form action="" method="post">
<div class="form-item">
<select name="specialties">
<?php
$query = "SELECT * FROM specialties";
$result = mysqli_query($connection, $query);
echo '<option value="All">' . $filterTitle . '</option>';
while($row = mysqli_fetch_assoc($result)) {
$id = $row['id'];
$title = $row['title_'. $lang];
if($_POST['specialties'] == $id) {
$selected = 'selected';
}
echo '<option value="' . $id . ' "' . $selected . '>' . $title . '</option>';
}
?>
</select>
</div>
<div class="form-item">
<input class="form-submit" type="submit" name="submit" value="<?php echo $filterSubmit; ?>">
</div>
</form>
在這種形式下,當我選擇了一些選項,它過濾的內容。這工作正常,我不需要發佈那部分代碼。
首先,當我從選擇列表中選擇一些選項並提交後,它會過濾內容,但select選項顯示的是All值,而不是選定的選項。之後,我嘗試了上面的代碼,現在當我提交表單時,選擇值顯示最後一個選項,並且所有選項都具有selected
屬性。
如何更改該邏輯,因此當我選擇第二個選項時,在提交表單後,selected
屬性將僅出現在第二個選項上,所以文本將成爲第二個選項?
結論: 謝謝你們的答案。你們都是對的。我給你所有+1,我選擇Hassaan的答案,因爲它很好解釋。
這是因爲您設置了$選定的值一次,但是您從未將其取消設置。因此,在您的if語句成功後,所有後續選項也將被設置爲選中狀態。嘗試添加一個else {$ selected =''; }或者一些效果相同的東西。 – apriede
是的,我查看過其他人的答案,現在我知道缺失的差距。不管怎麼說,還是要謝謝你。 :) – user2519032