根据PHP引用URL选择选项值

时间:2012-07-04 20:17:05

标签: php url select drop-down-menu

我有一个选择下拉列表,其中有三个选项;基于引用URL,我需要每个选项都是所选的(即选择=“选中”)。

我对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>';}
?>` 

3 个答案:

答案 0 :(得分: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).'">';
}

注意:selected attrib是boolean,所以你不需要给它一个值,只需把它放在那里。

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

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

答案 1 :(得分:0)

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

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

多次?

答案 2 :(得分: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>

作品?