1

マークアップ、

<span style="padding-left: 76px">
 <span style="padding-left:5px">
  <select id="select1" name="requestdbtype" value="<?php echo $type ?>">
   <?php
    $options = array('DB2' => 'DB2',
            'MySQL' => 'MySQL',
            'Oracle' => 'Oracle',
            'PostgreSQL' => 'PostgreSQL',
            'SQLite' => 'SQLite',
            'SQL Server' => 'SQL Server',
            'Sybase' => 'Sybase');
            foreach($options as $value => $type){
                          echo "<option value='$value'>".$row['requestdbtype']."</option>";
            }
      ?>
  </select>
 </span>
</span>

オプションの表示に問題があります。表示される現在のオプションは、 の値である必要があります$row['requestdbtype']。しかし、私のディスプレイにはすべてのオプションとして現在の値しか表示されません。助けてください。

4

6 に答える 6

2

明らかな答えは、もちろんすべてのドロップダウン オプションが同じものを表示するということです。注意すると、$row['requestdbtype'] は毎回同じになります。

あなたがやろうとしているのは、その配列内のすべてを使用することですが、現在選択されている $row['requestdbtype'] に等しいものを設定することです。それは次のように簡単です。

foreach($options as $value => $type){
    $selected = ($type == $row['requestdbtype']) ? "selected='selected'" : "";
    echo "<option value='$value' $selected>$type</option>";
}

ちょっと注意してください、($blah == $blah2) ? "some blah" : "other blah"は三項演算子と呼ばれます。それが行うことは、($blah == $blah2)をチェックして、それが true か false かを確認し、true の場合は"some blah"を返し、そうでない場合は"other blah"を返します。

三項演算子は、コンパクトなコードに非常に役立ちます。

于 2012-05-11T05:45:16.633 に答える
0

あなたのコードは

 foreach($options as $value => $type){
      if($value == $row['requestdbtype']) 
          echo "<option value='$value'  selected = 'selected' >".$type."</option>";
      else
          echo "<option value='$value' >".$type."</option>";
  }

私はあなたの$row['requestdbtype']価値が何であるかわかりませんが、選択された現在のオプションを表示するための$type条件$typeが代わりに置かれた場合、これがその時であるかどうかを確認してください。$valueあなたのコード$row['requestdbtype']では、それが選択ボックスに現在のオプションのみを何度も表示する主な理由でした。

お役に立てば幸いです。

于 2012-05-11T05:54:01.340 に答える
0

$row['requestdbtype']HTMLではなく、比較のために使用する必要があります。selectタグの構文にも注意してください。

<select id="select1" name="requestdbtype">
<?php
$options = array('DB2' => 'DB2',
    'MySQL' => 'MySQL',
    'Oracle' => 'Oracle',
    'PostgreSQL' => 'PostgreSQL',
    'SQLite' => 'SQLite',
    'SQL Server' => 'SQL Server',
    'Sybase' => 'Sybase');
foreach ( $options as $value => $type ) : ?>
  <option value="<?php echo $value; ?>"<?php if ( $value == $row['requestdbtype'] ) echo ' selected="selected"'; ?>><?php echo $type; ?></option>
<?php endforeach; ?>
</select>
于 2012-05-11T05:50:21.913 に答える
0

試す:

foreach( $options as $value => $type ) {
   echo "<option value='" . $value . "'>" . $type . "</option>";
}
于 2012-05-11T05:44:06.010 に答える
0
foreach($options as $value => $type){
    echo "<option value='".$value."'>".$type."</option>";
}
于 2012-05-11T05:44:27.113 に答える
0

selected='selected'属性を使用する必要があります。

foreach($options as $value => $type)
 {
  $select="";
  if($value==$row["requestdbtype"])
    $select="selected='selected'";
  echo "<option  $select value='$value'>$row[requestdbtype]</option>";
  }
于 2012-05-11T05:45:00.077 に答える