2016-05-09 16 views
1

私のデータベースから選択リストを印刷しています。私はいくつかのオプションを選択すると、それは、コンテンツをフィルタリングし、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を与えました、そして、私は非常によく説明されているので、ハッサンの答えを選びました。

+2

これは、$ selected値を1回設定していますが、設定を解除していないためです。したがって、ifステートメントが成功した後、すべての後続オプションも選択済みとして設定されます。 else {$ selected = '';}を追加してみてください。 }または同じ効果の何か。 – apriede

+0

はい、私は前に他の人からの回答をチェックしました。そして今、私は欠けているギャップを知っています。とにかくありがとう。 :) – user2519032

答えて

1

の下にあなたが/チェック値を比較し、変数を生成しているように、空の選択した変数を作成する必要があります。生成された変数の値を変更/リセットする必要があるため、elseの条件を使用する必要があります。以下の例を参照してください。

if($_POST['specialties'] == $id) { 
    $selected = 'selected'; 
} 
else 
    $selected = ''; 
1

else句を追加して、selected属性を空の文字列にリセットします。

if($_POST['specialties'] == $id) { 
    $selected = 'selected'; 
} 
else{ 
    $selected = ''; 
} 
1

あなたは毎回現在

while($row = mysqli_fetch_assoc($result)) { 
    $selected = ''; 
    $id = $row['id']; 
    $title = $row['title_'. $lang]; 

    if($_POST['specialties'] == $id) { 
     $selected = 'selected'; 
    } 

    echo '<option value="' . $id . ' "' . $selected . '>' . $title . '</option>'; 
} 
関連する問題