私のデータベースから選択リストを印刷しています。私はいくつかのオプションを選択すると、それは、コンテンツをフィルタリングし、PHPとMySQLでselectオプションで選択した属性を印刷
<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>
このフォームで:
は、ここに私のコードの一部です。それは正常に動作しており、コードのその部分を投稿する必要はありません。
最初に選択リストからいくつかのオプションを選択すると、送信後にコンテンツがフィルタリングされますが、選択オプションは選択されたオプションではなくすべて値を表示します。その後、上記のコードを試してみましたが、フォームを送信すると、選択値に最後のオプションが表示され、すべてのオプションにselected
という属性があります。
このロジックを変更するにはどうすればいいですか。フォームを送信した後に2番目のオプションを選択すると、selected
属性が2番目のオプションにのみ表示されるため、2番目のオプションになります。
結論: 回答ありがとうございました。あなたはすべて正しいです。私はあなたにすべての+1を与えました、そして、私は非常によく説明されているので、ハッサンの答えを選びました。
これは、$ selected値を1回設定していますが、設定を解除していないためです。したがって、ifステートメントが成功した後、すべての後続オプションも選択済みとして設定されます。 else {$ selected = '';}を追加してみてください。 }または同じ効果の何か。 – apriede
はい、私は前に他の人からの回答をチェックしました。そして今、私は欠けているギャップを知っています。とにかくありがとう。 :) – user2519032