Php 从选择标签中选择一个选项,在整个网站上执行操作
iamiI有一个选择标签和选项,可以在页面中执行任务,但问题是它只在索引页面中执行,而不在其他页面中执行。。。这是我的代码: region.phpPhp 从选择标签中选择一个选项,在整个网站上执行操作,php,html,Php,Html,iamiI有一个选择标签和选项,可以在页面中执行任务,但问题是它只在索引页面中执行,而不在其他页面中执行。。。这是我的代码: region.php (isset($_POST["company"])) ? $company = $_POST["company"] : $company=1; if(isset($_POST['selectedRegion'])){ $region = explode( "|" ,$_POST['selectedRegion'])
(isset($_POST["company"])) ? $company = $_POST["company"] : $company=1;
if(isset($_POST['selectedRegion'])){
$region = explode( "|" ,$_POST['selectedRegion']) ;
$_SESSION['regCode'] = $region[0];
$_SESSION['selection'] = $region[1];
$regionCode = $_SESSION['regCode'];
}else if(isset($_SESSION['regCode'])){
$region[1] = $_SESSION['selection'];
$regionCode = $_SESSION['regCode'] ;
}else{
$regionCode = 'DEF';
$_SESSION['regCode'] = $regionCode;
}
<form id="regionSelect" action="<?php $_SERVER['PHP_SELF'] ?>" method="post" onchange="this.form.submit();" >
<select id="selectedRegion" name="selectedRegion" size="1" autocomplete="off">
<option style="border-bottom: 1px dashed #000" value="<?php if (isset($_SESSION['regCode']) and $_SESSION['regCode'] != 'DEF'){ echo "".$_POST['selectedRegion']."";}?>" selected="selected"><?php if (isset($_SESSION['regCode']) and $_SESSION['regCode'] != "DEF"){ echo "".$region[1]."";}else{echo "--------";} ?></option>
<option value="ny">New York</option>
<option value="miami">Miami</option>
</select>
<input type="submit" value="Enter Region" />
</form>
(isset($_POST[“company”]))$company=$\u POST[“company”]:$company=1;
如果(isset($\u POST['selectedRegion'])){
$region=explode(“|”),$u POST['selectedRegion'];
$\会话['regCode']=$region[0];
$\会话['selection']=$区域[1];
$regionCode=$\会话['regCode'];
}else if(isset($\会话['regCode'])){
$region[1]=$\u会话['selection'];
$regionCode=$\会话['regCode'];
}否则{
$regionCode='DEF';
$\会话['regCode']=$regionCode;
}
$\u POST['selectedRegion']
的值不会始终可用。您应该将此值存储在会话中,如$\u session['selectedReg']=$\u POST['selectedRegion']代码>在表单提交期间
<form id="regionSelect" action="<?php $_SERVER['PHP_SELF'] ?>" method="post" onchange="this.form.submit();" >
<option style="border-bottom: 1px dashed #000" value="<?php if (isset($_SESSION['regCode']) and $_SESSION['regCode'] != 'DEF'){ echo $_SESSION['selectedRegion'];}?>" ><?php if (isset($_SESSION['regCode']) and $_SESSION['regCode'] != "DEF"){ echo $_SESSION['selectedRegion'];}else{echo "--------";} ?></option>
<option value="ny">New York</option>
<option value="miami">Miami</option>
</select>
<input type="submit" value="Enter Region" />
</form>
您正在寻找的解决方案包括以下步骤:
根据用户的选择,评估会话开始时从客户端收到的选择。那就是你目前所拥有的
将该选择存储在会话变量中。有关会话变量的基本用法,请参见。归结起来就是:
session_start();
$_SESSION['region'] = $_POST['selectedRegion'];
您可以基于所有脚本中的该会话变量创建一个switch语句,这些脚本应根据用户的选择做出反应:
session_start();
switch ($_SESSION['region']) {
case 'ny':
// do something
break;
case 'miami':
// do something
break;
default:
// do something
}
这样,用户只需在单个会话中进行一次选择(返回请求)。您可以在输入页面和/或所有页面上提供该选项,如您所愿。如果您有帐户管理,您可以通过将其存储在持久用户配置文件中来增强这一点
此外,还需要一些其他信息,作为对您通过编辑问题提供的其他信息的反应
你的总体方针可能是正确的,很好。不过,有几个问题需要纠正。我只能提示他们,因为您只提供脚本的片段
在“process.php”中有以下行:
$region = $_SESSION['selectedRegion']=$_POST['selectedRegion'];
这显然是无效语法,一条语句中不能有两个赋值。至少这不是你想要的
不确定此条件是否真的属于该条件:
if (isset($_POST['selectedRegion']))
如果“process.php”是用于设置会话变量的脚本,则可以。在所有其他脚本中,显然没有设置$\u POST['selectedRegion']
,因为用户没有做出选择/没有被提供选择。因此,您无法测试或使用该变量,您只需直接使用会话变量
还有一些其他的事情,但正如所说的,你走在了正确的轨道上李>
这种方法确实有效,这是“正常”的方法。所以不要沮丧,你会解决的。总的来说:您的代码有点混乱,太多单独的变量不清楚它们保存的目的。为什么要区分区域
、区域编码
和所选区域
。为什么单个变量不够?尽量简化您的代码,这将有助于使其正常工作 您可能正在寻找术语“php会话变量”。谷歌就是这样。另一种方法是在客户端设置cookie。结果是一样的。会话变量更容易实现。我会尝试一下,我看到很多页面可以通过选择来更改整个站点是的,当然,您只会更改一次选择,例如在起始页上。会话变量允许您将该值存储在服务器端,并为同一客户端随后发送的每个请求重用决策。把它想象成是把不同的请求粘在一起。你在谷歌上找到了吗?请给我一个例子的链接,我试图在下面发布的回答中表达得更清楚。我尝试了,但我得到了以下结果:(会话已经启动-忽略会话_start()你知道标题
功能吗?你想根据提交的值将用户发送到其他页面吗?如果是,那么你应该使用标题('location:abc.php')
从php代码重定向到abc.php
页面。不真正重定向它们,只想执行站点所有页面上的“来自”操作选项。我没有用户管理,切换代码可以工作,但它只在一个页面中执行,因此每当我单击另一个链接时,操作都会消失:SSYou do set the session var在下一个请求中,它可能会丢失?请发布新代码,方法是编辑上面的问题,并附加一个部分,在该部分中复制以下内容的相关行:1.正在编写会话变量的脚本;2.尝试使用它的其他脚本。感谢帮助:)…这就是我现在使用它的方式查找upI添加了一些详细信息,希望有帮助。我无法通过post read来使用代码,因为我只看到脚本的片段。但你的方向是正确的。我相信你会解决这个问题:-)
if (isset($_POST['selectedRegion']))