我有一个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
答案 0 :(得分:0)
而不是使用$ _SESSION使用setcookie(),因此PHP和JavaScript都可以使用您为这些选择设置的变量。这比你想要完成的要容易得多。
PHP: $ _COOKIE作为getter,setcookie()作为setter。
的JavaScript document.cookie读取所有设置的cookie,您可以将它们分解为数组以查找您的特定cookie。
希望有所帮助