0

我有一个选择下拉菜单,其中包含三个选项;根据引用的 URL,我需要每个选项都被选中(即 selected="selected")。

我对 PHP 很陌生,但可以这样做:

       <?php if (strstr( $_SERVER['HTTP_REFERER'],"url-1" )) {
            ?>
               <option value="value-1" selected="selected">
            <?
         } else {
            ?>
            <option value="value-1">
            <?
         }                           
      ?>

我对下拉列表中的三个选项中的每一个都执行此操作。如前所述,这是可行的——但是为每个选项重复相同的事情似乎效率很低。有人对我有任何线索吗?在此先感谢您的时间。

编辑:

感谢大家的帮助,尤其是阿德南。在另一个论坛搜索以及您的想法的帮助下,这是我理想的解决方案:

<?php 
$options = array(array('value' => 'value-one', 'label' => 'value-one', 'ref' => 'url-one'),array('value' => 'value-two', 'label' => 'value-two', 'ref' => 'url-two'),array('value' => 'value-three', 'label' => 'value-three', 'ref' => 'url-three'),
);  
foreach ($options as $option) {
if (strpos($_SERVER['HTTP_REFERER'], $option['ref']) > 0) {
$optSelected = ' selected';
} else {
$optSelected = ''; 
}
echo '<option value="' . $option['value'] . '"' . $optSelected . '>' . $option['label'] .     '</option>';}
?>` 
4

3 回答 3

1

这是一种“酷”的做法

foreach(array('url-1', 'url-2', 'url-3') as $url){
    echo (strstr ($_SERVER['HTTP_REFERER'], $url))?'<option value="value-'.substr($url, 4, 1).'" selected>':'<option value="value-'.substr($url, 4, 1).'">';
}

注意:selectedattrib 是布尔值,所以你不需要给它一个值,只要把它放在那里。

更新:这是您评论中代码的更正:

foreach (array('url1' => 'value-one', 'url2' => 'value-two', 'url' => 'value-three') as $url => $value){
   echo (strstr($_SERVER['HTTP_REFERER'], $url))?"<option value=\"$value\" selected>$value</option>":"<option value=\"$value\">$value</option>";
}
于 2012-07-04T20:34:59.373 回答
0

您总是可以使用 switch(case) 语句吗?它会阻止你打电话

strstr( $_SERVER['HTTP_REFERER'],"url-1" )

多次?

于 2012-07-04T20:21:04.257 回答
0

在将所有选项存储在数组中之后,您始终可以使用 foreach 循环。

<select name="someOption">
<?php foreach (array('option1', 'option2', 'option3') as $option):?>
    <option value="<?php echo $option;?>" <?php if (strstr( $_SERVER['HTTP_REFERER'],$option )):?> selected="selected"<?php endif;?>>
        <?php echo $option;?>
    </option>
<?php endforeach;?>
</select>

作品?

于 2012-07-04T20:32:53.343 回答