记住 php 表单数据以显示整个网站的货币


Remembering php form data to display currency all over a website

我已经在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>

我会将所选值存储在$_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>

可能有更短的方法,我用它来说明目的。

对于永久保留数据,您只有几种可能性,最容易实现的是 $_SESSION、$_COOKIE 或数据库中。

您有两种选择可以执行此操作

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

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

您可能会发现这些链接对法典很有帮助

get_option

update_option