【问题标题】:Maintain selected dropdown values across multiple pages in php在 php 中跨多个页面维护选定的下拉值
【发布时间】:2013-09-15 11:58:53
【问题描述】:

我有一个包含在选项卡(主页/联系人/详细信息)页面等的“页面”。 这个“包含的页面”有 3 个下拉菜单。我能够存储选定的下拉值并将其显示在下拉框中。 我想要的是选定的下拉值也应该显示在其他页面下拉列表中。 简而言之,我希望所选的下拉值在所有页面中保持一致。 我正在考虑使用会话,但不知道如何使用它。

【问题讨论】:

  • 是否涉及数据库?
  • 三个选项卡是否一致?还是之后的页面?
  • @tonoslfx :是的,涉及数据库。下拉列表中的值来自 DB。是的,希望它在三个选项卡中保持一致(选项卡代码本身写在 3 个不同的页面中)。
  • 您是通过简单地单击每个选项卡来导航页面,还是有某种按钮用于进入每个选项卡?
  • 我只需点击每个标签即可导航。

标签: php sql


【解决方案1】:

您需要在更改时存储该值,然后在您需要执行此操作的每个页面上:

<?php
session_start();
...
echo $_SESSION['dropdown1'];
?>

但也许您最好使用 Javascript 并将值存储在 cookie 中,因为这可能比在 Javascript 事件发生时更新 SESSION 变量更容易(您必须使用 AJAX 执行此操作)。这涉及数据库还是只是语言或主题等设置?

【讨论】:

  • 我已经尝试了上面的代码。我已经添加了所有 3 个标签页代码。但问题是它为一个选项卡显示的会话值。当我转到下一个选项卡时,没有显示任何值
  • 是的,问题是如果用户点击一个不是提交按钮的链接,您就无法使用 PHP 保存值。因此我建议使用 cookie。你能解释一下你想做什么吗?
  • 我想要的是取决于从下拉列表中选择的值,我想过滤数据并相应地显示。因此,我没有在每个页面上添加相同的下拉代码,而是在一个页面中编写了代码,并将其包含在所有 3 个选项卡的页面中。
  • 好吧,您可以使用 Javascript 将下拉列表值存储在 cookie 中,并在页面更改时让您的包含文件在 PHP 中读取它们。或者您可以使用 PHP 会话,但您需要设置 AJAX 机制,以便在每次更改时将值存储在 PHP 变量中。无论哪种方式,您都需要 Javascript。
  • 由于公共页面有下拉代码。我能够在该页面上维护那些选定的下拉值。这个公共页面包含在所有选项卡中(这是常见的)。那么当我导航时,当新页面加载时,选定的下拉列表值是否会从下拉列表中消失?
【解决方案2】:

第一页发布到 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;

【讨论】:

  • //这是第一页 //HTML 页面
    。在我的案例中,这是所有选项卡的常见包含页面。我没有为此指定任何操作。因此,此代码将适用于所有选项卡。
【解决方案3】:

注意:我已经重写了我的答案以解决解决方案,请参阅下面的 cmets 进行解释。

由于您使用单独的文件来显示每个页面而不是使用 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 中,您可以将值添加到会话变量中:

secondaryScript.php

<?php
session_start();
$_SESSION['dropDownValue'] = $_POST['value'];
?>

现在,在每个页面中,您都可以引用这个值:

...
echo $_SESSION['dropDownValue'];
...

当然,对于选择字段,您需要根据该值检查您的选项,并将selected 属性添加到匹配的那个。如果您不知道怎么做,我也可以帮助您。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2020-07-11
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
相关资源
最近更新 更多