簡體   English   中英

PHP JavaScript-使用$ _SESSION時從第一個下拉列表存儲值

[英]PHP JavaScript - Store value from first drop down list when using $_SESSION

我有一個PHP代碼,並且在SQL數據庫中有一個國家列表的下拉列表。 值排序:

Continent (Row 1) - > Country (Row 2) -> City (Row 3)

例如。

Europe -> England -> London
Europe -> England -> London
Europe -> Gemany -> Munich
North America -> New York -> Manhattan
North America -> California -> Los Angeles

這是我選擇第一大洲時的代碼

$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$tableName = 'categories';

ob_start();
session_start(); 

//Get values from table
$sqlPrimaryCategory = $dbh->prepare("SELECT * FROM $tableName GROUP BY primary_category");
$sqlPrimaryCategory->execute();
echo '<form id="primary_category" name="primary_category" action="" method="post">';
echo '<select name="primary_category" onChange="this.form.submit()" size = "4"> ';
while ($result = $sqlPrimaryCategory->fetch()) {
    echo '<option value="';
    echo $result['primary_category'];
    echo '">';
    echo $result['primary_category'];
    echo '</option>'; 
}
echo '</select>'; 
echo '</form>'; 
echo '<p><strong>You have selected</strong> <em>'.$_POST['primary_category'].'</em></p>';
$_SESSION['primary_category'] = $_POST['primary_category'];

echo 'Your selection is ' . $_SESSION['primary_category'];
$primaryCategory = $_SESSION['primary_category'];

然后根據第一個值選擇第二個值,例如,如果選擇歐洲-我將在選擇英格蘭或德國之間進行選擇。

這是使用我的第二個代碼來獲取第二個值來完成的

//Get values from table
$sqlSecondaryCategory = $dbh->prepare("SELECT * FROM $tableName WHERE primary_category = :primary_category GROUP BY secondary_category");
$sqlSecondaryCategory->execute(array(':primary_category'=>$primaryCategory));
echo '<form action="" method="post">';
echo '<select name="secondary_category" onChange="this.form.submit()" size = "4"> ';
while ($result = $sqlSecondaryCategory->fetch()) {
    echo '<option value="';
    echo $result['secondary_category'];
    echo '">';
    echo $result['secondary_category'];
    echo '</option>'; 
}
echo '</select>'; 
echo '</form>'; 
echo '<p><strong>You have selected</strong> <em>'.$_POST['secondary_category'].'</em></p>';
$_SESSION['secondary_category'] = $_POST['secondary_category'];

echo 'Your selection is ' . $_SESSION['secondary_category'];
$secondaryCategory = $_SESSION['secondary_category'];

不幸的是,當我在第二個類別(即國家/地區)中選擇時,將顯示$_SESSION['primary_category']$_SESSION['secondary_country']值。

我希望在選擇說歐洲時保留$_SESSION['primary_category']

我的懷疑是,因為它們兩個HTML表單都包含onChange="this.form.submit()" ,所以一個正在刪除另一個。

我想如果我更改onChange="this.form.submit()"並根據表單名稱或ID提交,則不會有此問題。 不幸的是我不熟悉JavaScript

不要使用$ _SESSION來使用setcookie(),這樣PHP和JavaScript都可以使用為這些選擇設置的變量。 這將比您要實現的目標容易得多。

PHP:$ _COOKIE作為獲取器,setcookie()作為設置器。

JavaScript document.cookie讀取所有設置的cookie,您可以將它們分解為數組以查找您的特定cookie。

希望能有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM