2012-02-16 9 views
0

私は編集履歴ページがありますが、データベースから関連する値リストを参照する選択ドロップダウンリストとして表示されるフィールドには小さな問題があります。PHPとHTMLフォームの選択リスト

データベースにドロップダウンリストを持つフィールドがいくつかありますが、ユーザーは値リストにない値を入力することができます。これは正常な動作が期待されます。しかし、私はこれをウェブ上に表示することに問題があります。ここではフィールドの1のためのコードは次のとおりです。フィールドの値が値リストからオプションのいずれかと一致した場合に

<select name="category"> 
<?php 
foreach($categories as $category) { 
    $selected = ""; 
    if($category == $record->getField('category')){ 
      $selected = " selected"; 
    } 
    $category = htmlspecialchars($category); 
    ?> 
    <option value="<?php echo $category; ?>"<?php echo $selected; ?>><?php echo   $category; ?></option> 
<?php 
} 
?> 
</select> 

これはうまく動作します。しかし、フィールドが空であるか、フィールドが一致しない場合は問題があります。フィールドが空の場合、最初の値リストオプションが自動的に表示されます。空白のオプションを追加することで、それを回避することができます。

フィールドの値が値リストのオプションと一致しない場合、値リストのオプションと一致しない場合でも、値リストの項目の前に値を表示できますが、値が値リスト項目は2回表示されます。一度は一番上に表示され、リストの通常の位置には理想的ではありません。私は値がvaluelistのメンバーであるなら、それが上記のコードが達成しているリストの通常の位置で選択されることを望みます。

誰もが前にこのシナリオをタックして、何か指針を持っていますか?

おかげで、 スティーブ

答えて

1

はあなたが$record->getField('category')を意味した、 "フィールド" によって何を意味しましたか?何をしたいが、それは$category配列のエントリがない場合でも、その値は、あなたの選択リストに含まれていることがある場合は、次の操作を行います。ご返信用

<select name="category"> 

    <?php 

     $output = ""; 
     $selected = false; 

     foreach ($categories as $category) { 

      $output .= "<option value=\"$category\""; 

      if ($category == $record->getField('category')) { 
       $selected = true; 
       $output .= " selected"; 
      } 

      $output += ">$category</option>"; 
     } 

     if (!$selected) { 
      $chosen = $record->getField("category"); 
      $output = "<option value=\"$chosen\" selected>$chosen</option>" . $output; 
     } 

     echo $output; 

    ?> 

</select> 
+0

おかげ - はい$の値はレコード> getField( 'category')変数は、$ categories配列に存在していてもいなくてもかまいません。私はあなたのコードを試しましたが、エラーはありませんが、私はこの出力しか得ていません: PHPコードや他のものが見当たりませんでした? – user982124

+0

"+ ="演算子の使用がここで正しいかどうか疑問に思っていますか? – user982124

+0

はい、あなたは正しいです、それは '。='でなければなりません。 – caleb

関連する問題