2016-05-03 13 views
-1

「選択済み」が私の<option value="">に表示されない理由を知っていますか?「選択済み」が表示されないのはなぜですか?

<p> 
     <select name="images" class="dropdown"> 
      <option value="empty" 
      <?php if(isset($_GET['images']) && $_GET['images'] === "empty") { 
       echo 'selected'; 
      } ?>>select an image</option> 
      <?php foreach ($images as $key => $image) { ?> 
       <option value="<?= $key; ?>" 
       <?php 
       if (isset($_GET['images']) && $_GET['images'] === $key) { // and true is equal to 1, but not identical 
        echo 'selected'; 
       } ?>><?= $image; ?></option> 
      <?php } ?> 
     </select> 
     <?php 
     if (isset($_GET['images']) && $_GET['images'] == 'empty') { ?> 
      <span class="warning">Please select an image</span> 
     <?php } ?> 
    </p> 
    <p> 
     <input type="submit" name="submit" value="SUBMIT"> 
    </p> 

$ imagesは、適切な拡張子を持つ画像ファイル名のリストです。 最初のオプションemptyにはselectedが追加されていますが、<option>の残りの部分には追加されません。

+0

フォームメソッドがGETに設定されていて、イメージ取得パラメータが「空」に設定されていますか? – MajorCaiger

+0

==の代わりに==を使用してください。 –

+0

写真の中にありますか? :)あなたは '$ _GET ['images']' '' '?php echo" <! - images:$ _GET [images] - > "?>'や 'error_log'期待値があることを確認する – urban

答えて

1

ほとんどの場合、$画像のあなたのキーは数値です。 1 => 'abc'。 $ _GETには常に文字列値が含まれているため、$_GET['images'] === $keyで使用されている===比較演算子は決してtrueです。 ==を代わりに使用すると、数値と文字列値の数字が一致し、 '選択されました'が含まれます。

===が真である場合、両方のオペランドが同じ型と同じ値を持つ場合、==の場合、オペランドが同じ値であれば十分です。

+0

はい、インデックス配列です。私はあなたが言ったことを試しましたが、 '$ _GET ['images'] ==" $ key "'を設定すると、 ''画像を選択 'を選択すると ''空'と ''値= 1 'の両方が選択されます: ( – Gnahzllib

+0

あなたが意味することを望む – Gnahzllib

+0

$ keyを引用符で囲むべきではなく、 '$ _GET ['images'] == $ key'は正しいでしょう。 //digital-innovation-lab.de/test.php –

関連する問題