1

我在 wordpress 网站中设置了货币转换下拉菜单。唯一缺少的是每次我加载另一个页面时,货币都会重置,因为表单选择被“忘记”了。

任何想法如何做到这一点?我尝试了一个我在这里看到的建议的 js cookie,但它不起作用。

这是我到目前为止得到的:

    <form name="myform" id ="myform" method="post">

    <select name="currency-select" id="sort" onchange="submitform();">

    <option value="" selected="selected">Currency</option>

                <option value="0">U.S Dollars (USD)</option> 
                <option value="1">Euros (EUR)</option>
                <option value="2">British Pounds (GBP)</option> `

    </select>

    </form>

js:

 function submitform()
{

document.myform.submit();

}

我尝试按照此处推荐的方式使用此代码,但它对我来说并没有真正奏效,我认为我没有以正确的方式使用它 -

 <?php 
 `session_start();`
 if (isset($_POST['currency-select'])) { 
 $_SESSION['sort'] = $_POST['sort'];
 } 
 ?> 

我也将 $_SESSION 添加到表单中:

<option value="0" <?php if($_SESSION['sort'] == "0") echo "selected";?>>U.S Dollars (USD)</option>

更新

我做了一些测试。会话似乎已保存(因为我在刷新时在几页上重复了它等)我想现在唯一的问题与表单本身有关。即使使用正确的会话编号,我也无法选择正确的选项。

我尝试了两种方法,但都不起作用:

    <option value="0" <?php if($_SESSION['currency-select'] == "0") echo 'selected="selected"';?>>U.S Dollars (USD)</option>

或者

    <option value="0" <?php if($_SESSION['currency-select'] == "0") echo "selected";?>>U.S Dollars (USD)</option>
4

3 回答 3

0

For permanent retain of data you only have a few possibilities, the easiest to implement are $_SESSION, $_COOKIE or in a Database.

于 2013-11-12T11:50:27.133 回答
0

你有两个选择来做到这一点

第一种是在页面中添加一个字段并保存您的数据,然后从您必须使用的和中options.php取回您的数据。options.phpupdate_option('nameOfField_form','nameOfFieldDb');get_option('nameOfFieldDb')

第二个选项是通过jquery.ajax();方法将您的数据保存在options.php

您可能会发现这些链接有用的法典

获取选项

更新选项

于 2013-11-12T12:11:38.240 回答
0

我会将选定的值存储在一个$_SESSION['selected_currency']变量中,并在使用货币列表填充下拉列表时进行交叉检查并选择它。

假设会话正在运行,我将使用类似下面的内容来保持您在下拉菜单中选择的货币。

<select name="currency">
<?php
foreach($currency as $value){
   if($value->currency_code == $_SESSION['currency']){
     echo "<option value='$value->currency_code' selected='selected'>$value->currency_name</option>";
   } else {
      echo "<option value='$value->currency_code'>$value->currency_name</option>";   
   }
}
?>
</select>

可能有更短的方法,我将其用于说明目的。

于 2013-11-12T11:44:10.283 回答