![](/img/trans.png)
[英]make an option from select tag stays the same after reload or change the page, PHP
[英]make an option from a selection tag do action on the whole site PHP
iami我有一個選擇標記和可以在頁面中執行任務的選項,但是問題是它只是在索引頁面中執行,而在其他頁面中沒有...這是我的代碼:
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>
process.php
<?php if(!isset($_SESSION)){ session_start();}
if(isset($_POST['selectedRegion'])){
$region = $_SESSION['selectedRegion']=$_POST['selectedRegion'];
if($region == "ny"){
echo "new york selected";
}
if($region == "miami"){
echo "miami selected";
}
?>
該網站的index.php和所有其他頁面上都包含region.php和process.php,但是我的問題是,只要我進行選擇,它就只會對位於該頁面上的內容進行操作...如果我想在另一個頁面中執行該操作,則必須再次按下該選項。 無論如何,我可以在頁面更改和網站的所有頁面上執行選擇操作嗎? 謝謝
$_POST['selectedRegion']
將始終不可用。 您應該將該值存儲在$_SESSION['selectedReg']=$_POST['selectedRegion'];
會話中$_SESSION['selectedReg']=$_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>
您正在尋找的解決方案包括以下步驟:
您可以根據用戶選擇的內容評估在會話開始時從客戶端收到的選擇。 所以就是你到目前為止所擁有的。
將該選擇存儲在會話變量中。 有關會話變量的基本用法,請參見php文檔 。 歸結為:
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'是用於設置會話變量的腳本,那就很好。 在所有其他腳本中,顯然未設置$_POST['selectedRegion']
,因為用戶未做出選擇/未提供選擇。 因此,您無法測試或使用該變量,您只能直接使用會話變量。
這種方法確實有效,這是“正常”的方法。 因此,不要沮喪,您將對此進行解決。 總的來說:您的代碼有些混亂,在不清楚它們保存什么目的的地方有太多單獨的變量。 為什么區分region
, regionCode
和selectedRegion
。 為什么單個變量不夠? 嘗試簡化您的代碼,這將有助於使其正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.