2012-10-08 184 views
7

我在我的PHPHTML选择选项来选择

$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> 

但问题是,我需要保存这些选项的变量,因为我有很多的选择,我需要CAL l那个变量很多次。

有没有办法让选项被选中value = $_GET[sel]

+0

如何的是,选择所产生?它是硬编码的吗? –

+1

当你说你将它们存储在一个变量中时,我假设你的意思是一个数组,对吧? – BenM

+0

无论是本说,或者我假设你通过拍摄变量,你使用分配给选项的值而不是名称。我会为它写一个简单的函数,并且每次调用它,让它通过一个if else语句来运行。为您节省大量编码或复制粘贴。 – Dorvalla

回答

11

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

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

+0

谢谢@sirko,但发现一些错误 没有'var',它必须是$ i

+2

更正了这个问题。 – Sirko

0

您遗漏报价$_GET['sel'] - 固定这可能帮助您解决问题迟早:)

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

这将为选定的值输出**两个**值。你的意思是把第二个回音换成“else”吗? – TRiG

+0

是的,这是我的错误......它应该在其他部分。 –

+0

selected ='selected'作品 – kta

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

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

2

这是简单的例子,通过使用三元操作员设置所选=选择

<?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>