我有一个包含在选项卡(主页/联系人/详细信息)页面等的“页面”。这个“包含的页面”有 3 个下拉菜单。我能够存储选定的下拉值并将其显示在下拉框中。我想要的是选定的下拉值也应该显示在其他页面下拉列表中。简而言之,我希望所选的下拉值在所有页面中保持一致。我正在考虑使用会话,但不确定如何使用它。
3 回答
您需要在更改时存储该值,然后在您需要执行此操作的每个页面上:
<?php
session_start();
...
echo $_SESSION['dropdown1'];
?>
但也许您最好使用 Javascript 并将值存储在 cookie 中,因为这可能比在 Javascript 事件发生时更新 SESSION 变量更容易(您必须使用 AJAX 来执行此操作)。这涉及数据库还是只是语言或主题等设置?
注意:我已经重写了我的答案以解决解决方案,请参阅下面的评论以获取解释。
由于您使用单独的文件来显示每个页面而不是使用 ajax,因此会话似乎是最好的选择。不幸的是,只要选项更改,您仍然需要设置这些会话变量。
我决定不为此解决方案使用 cookie,因为关闭 cookie 的人比关闭 javascript 的人多。
您可以决定在页面更改时设置会话变量,也可以在每次选择框更改值时设置会话变量。我建议做前者,因为它可以减少服务器上的负载(稍微说一下——你总是想寻找节省开销的方法)。因此,要在 jQuery 中执行此操作,您需要一个可以接受值然后将其放入会话变量的辅助脚本。
在您的每个页面中,您首先需要开始一个会话(或加入已经存在的会话):
<?php
session_start();
?>
当用户单击其中一个选项卡并将下拉列表中的数据传递给脚本时,您将需要 jQuery 来调用此辅助脚本:
每页的某处
$('#tab').click( function() {
var ddvalue = $("#dropDown").val();
$.ajax({
url: 'secondaryScript.php',
type: 'POST',
data: {
'value' : ddvalue
}.
success: function() {
//redirect to page that was clicked
location.href = 'nextpage.php';
}
});
});
现在,secondaryScript.php
您可以将值添加到会话变量中:
二级脚本.php
<?php
session_start();
$_SESSION['dropDownValue'] = $_POST['value'];
?>
现在,在每个页面中,您都可以引用此值:
...
echo $_SESSION['dropDownValue'];
...
当然,对于选择字段,您需要根据该值检查您的选项,并selected
为匹配的属性添加一个属性。如果你不知道怎么做,我也可以帮你。
第一页发布到 php 脚本
<form method="POST" action="anotherpage.php> //This is the first page which is
//HTML page
<select name="selected">
<option value="Foo">Foo</option>
<option value="Bar">Bar</option>
</select>
</form>
第二页:anotherpage.php
<?php
$value=$_POST["selected"];
session_start();
$_SESSION["value"]=$value; // The value is stored in session , it can be used in
// subsequent pages
?>
后续页面
session_start(); //we just have to session_start() then we can use $_SESSION["value"]
echo<<<FOO
<select>
<option value="$_SESSION["value"]">$_SESSION["value"]</option>
<option value="Bar">Bar</option>
</select>
FOO;