我的数据库中有两个表:
Country => countryid(primary),countryname
和State => stateid(primary),countryid(foreign),state
现在我想制作一个下拉列表。例如:
India
(下拉列表1)应显示各州Goa
,UP
和MP
(下拉列表2)Pakistan
(下拉列表1)应显示各州Lahore
和Karachi
(下拉列表2)我已使用这些值填充了两个表。
这里我包含了我的代码文件。我可以让第一个菜单工作但第二个菜单中没有值。我想第二个菜单在第一个菜单中选择的值更改时立即更改(不仅仅是在加载页面时)。
的index.php
<?php
include('config.php');
$query_parent = mysql_query("SELECT * FROM country") or die("Query failed: ".mysql_error());
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Dependent DropDown List</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#countryname").change(function() {
$(this).after('<div id="loader"><img src="img/loading.gif" alt="loading subcategory" /></div>');
$.get('loadsubcat.php?countryid=' + $(this).val(), function(data) {
$("#stateid").html(data);
$('#loader').slideUp(200, function() {
$(this).remove();
});
});
});
});
</script>
</head>
<body>
<form method="get">
<label for="category">Parent Category</label>
<select name="countryname" id="countryname">
<?php while($row = mysql_fetch_array($query_parent)): ?>
<option value="<?php echo $row['countryid']; ?>"><?php echo $row['countryname']; ?></option>
<?php endwhile; ?>
</select>
<br/><br/>
<label>Sub Category</label>
<select name="state" id="stateid"></select>
</form>
</body>
</html>
的config.php
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('login');
?>
loadsubcat.php
<?php
include('config.php');
$countryid = $_GET['countryid'];
$query = mysql_query("SELECT * FROM state WHERE countryid = {$countryid}");
while($row = mysql_fetch_array($query)) {
echo "<option value='$row['stateid']'>$row['state']</option>";
}
?>
我无法弄清楚我的问题。我之前没有做过PHP。这是我第一次学习这个项目,所以如果我犯了一些灾难性的错误,请原谅我。
答案 0 :(得分:0)
您在此处使用密钥名称countryname
发送国家/地区ID:
$.get('loadsubcat.php?countryname=' + $(this).val(), function(data) {
但是在您的PHP文件中,您尝试使用countryid
:
$countryid = $_GET['countryid'];
更改并使两者相同。它会工作!
<强>更新强>
$("#state").html(data);
您在这里引用state
,但在您的HTML上,您使用的是stateid
。
<select name="state" id="stateid"></select>
答案 1 :(得分:0)
Muhammad Sumon Molla Selim所说的是正确的,在loadsubcat.php中还有一个错误
你需要改变,回应选项陈述
echo "<option value='$row['stateid']'>$row['state']</option>";
echo "<option value=".$row['stateid'].">".$row['statename']."</option>";
然后第二次下拉将根据国家下降的变化得到状态。
当我在本地计算机上执行代码时,我没有获取数据。你做的错误是你没有正确地整理字符串和变量。