html 选择选项已选择

问题描述 投票:0回答:7

我的 php 中有

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

假设我有一个内联 URL =

site.php?sel=one

如果我没有将这些选项保存在变量中,我可以通过这种方式来选择其中一个选项,其中值等于

$_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]
处被选中?

php html html-select
7个回答
23
投票

只需使用选项数组即可查看当前选择了哪个选项。

$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,否则当两个选项具有相同的字符串表示形式时,您可能会遇到问题。


8
投票

这是使用三元运算符设置 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>

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>";
    }
}

1
投票

您可以创建一个函数,然后将其添加到每个选项字段以打印 selected="selected"。

示例

<option value="PHP" ' . tsw_selected('PHP', $row['anchor']) . '>PHP/PDO/SQL[+]</option>
<option value="HTML" ' . tsw_selected('HTML', $row['anchor']) . '>HTML/CSS</option>

然后你的乐趣:

function tsw_selected( $opt, $val )
{
$sel = '';
$opt = ('' != $opt ) ? $opt : 'OTHER';
if( $opt == $val ) $sel = true;
if ( $sel ) {
    return 'selected="selected"'; } else { return ''; }
}

这将回显 select="selected" 为 true,回显 ''(无)为 false。 您可以设置 $sel = false,但这并不重要。布尔值检查空是否为假。


0
投票

您缺少

$_GET['sel']
的引号 - 修复此问题可能有助于更快解决您的问题:)


0
投票
foreach ($array as $value => $name) {
     echo '<option value="' . htmlentities($value) . '"' . (($_GET['sel'] === $value) ? ' selected="selected"') . '>' . htmlentities($name) . '</option>';
}

这相当简洁,而且我认为这是不言自明的。


0
投票
                                          <?php 

                                            $options = array( 'DG', 'DD1', 'DD2', 'DD3', 'SPAG', 'AG' );
                                            $options_title = array( 'Admin', 'Superviseur Direction 1', 'Superviseur Direction 2', 'Superviseur Direction 3', 'Super-Agent', 'Agent' );

                                            $output = '';
                                            for( $i=0; $i<count($options); $i++ ) 
                                            {


                                              if ($get_users_data["permission"] == $options[$i]) {

                                                echo "<option value=$options[$i] selected> $options_title[$i]</option>";

                                              }else{

                                                echo "<option value=$options[$i] > $options_title[$i]</option>";

                                              }


                                            }



                                         ?>

                                        </select>
© www.soinside.com 2019 - 2024. All rights reserved.