我有一个选择下拉列表,其中有三个选项;基于引用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>';}
?>`
答案 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>
作品?