0

3つのオプションを含む選択ドロップダウンがあります。参照URLに基​​づいて、各オプションを選択する必要があります(つまり、selected = "selected")。

私はPHPにかなり慣れていませんが、次のように実行できます。

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

ドロップダウンの3つのオプションのそれぞれに対してこれを行います。すでに述べたように、これは機能しますが、オプションごとに同じことを繰り返すのはかなり非効率的なようです。誰かが私のために何か手がかりを得ましたか?よろしくお願いします。

編集:

助けてくれたすべての人、特にアドナンに感謝します。別のフォーラム検索とあなたの考えの助けを借りて、これが私の理想的な解決策であると考えました。

<?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 に答える