Php 从选择标签中选择一个选项,在整个网站上执行操作

Php 从选择标签中选择一个选项,在整个网站上执行操作,php,html,Php,Html,iamiI有一个选择标签和选项,可以在页面中执行任务,但问题是它只在索引页面中执行,而不在其他页面中执行。。。这是我的代码: region.php (isset($_POST["company"])) ? $company = $_POST["company"] : $company=1; if(isset($_POST['selectedRegion'])){ $region = explode( "|" ,$_POST['selectedRegion'])

iamiI有一个选择标签和选项,可以在页面中执行任务,但问题是它只在索引页面中执行,而不在其他页面中执行。。。这是我的代码:

region.php

   (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']))