13

私は自分のphpに持っています

$sel = "
    <option> one </option>
    <option> two </option>
    <option> thre </option>
    <option> four </option>
";

インライン URL = があるとしましょうsite.php?sel=one

これらのオプションを変数に保存しなかった場合、この方法で、値が等しい場合にオプションの1つを選択することができます$_GET[sel]

<option <?php if($_GET[sel] == 'one') echo"selected"; ?> > one </option>
<option <?php if($_GET[sel] == 'two') echo"selected"; ?> > two </option>
<option <?php if($_GET[sel] == 'three') echo"selected"; ?> > three </option>
<option <?php if($_GET[sel] == 'four') echo"selected"; ?> > four </option>

しかし問題は、多くのオプションがあり、その変数を何度も呼び出す必要があるため、これらのオプションを変数に保存する必要があることです。

そのオプションをどこで選択する方法はありvalue = $_GET[sel]ますか?

4

6 に答える 6

20

オプションの配列を使用して、現在どのオプションが選択されているかを確認します。

$options = array( 'one', 'two', 'three' );

$output = '';
for( $i=0; $i<count($options); $i++ ) {
  $output .= '<option ' 
             . ( $_GET['sel'] == $options[$i] ? 'selected="selected"' : '' ) . '>' 
             . $options[$i] 
             . '</option>';
}

補足: 各要素の何らかの ID になるように値を定義します。そうしないと、2 つのオプションの文字列表現が同じ場合に問題が発生する可能性があります。

于 2012-10-08T13:11:01.517 に答える
6

これは、三項演算子を使用して selected=selected を設定する簡単な例です

<?php $plan = array('1' => 'Green','2'=>'Red' ); ?>
<select class="form-control" title="Choose Plan">
<?php foreach ($plan as $key => $value) { ?>
  <option value="<?php echo $key;?>" <?php echo ($key ==  '2') ? ' selected="selected"' : '';?>><?php echo $value;?></option>
<?php } ?>
</select>
于 2016-02-25T07:51:29.593 に答える
6
foreach($array as $value=>$name)
{
    if($value == $_GET['sel'])
    {
         echo "<option selected='selected' value='".$value."'>".$name."</option>";
    }
    else
    {
         echo "<option value='".$value."'>".$name."</option>";
    }
}
于 2012-10-08T13:18:43.187 に答える
0
foreach ($array as $value => $name) {
     echo '<option value="' . htmlentities($value) . '"' . (($_GET['sel'] === $value) ? ' selected="selected"') . '>' . htmlentities($name) . '</option>';
}

これはかなりきちんとしていて、一目瞭然だと思います。

于 2012-10-08T13:30:00.737 に答える
0

の引用符が$_GET['sel']ありません - これを修正すると、問題をより早く解決できる可能性があります :)

于 2012-10-08T13:12:19.910 に答える