PHP JavaScript - 使用$ _SESSION时从第一个下拉列表中存储值

时间:2014-02-28 20:38:00

标签: javascript php pdo

我有一个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

1 个答案:

答案 0 :(得分:0)

而不是使用$ _SESSION使用setcookie(),因此PHP和JavaScript都可以使用您为这些选择设置的变量。这比你想要完成的要容易得多。

PHP: $ _COOKIE作为getter,setcookie()作为setter。

的JavaScript document.cookie读取所有设置的cookie,您可以将它们分解为数组以查找您的特定cookie。

希望有所帮助