繁体   English   中英

PHP和MySQL中的动态下拉列表

[英]Dynamic drop down list in PHP and MySQL

我的数据库中有两个表:

  • 表1: Country => countryid(primary),countryname
  • 表2: State => stateid(primary),countryid(foreign),state

现在我想制作一个下拉列表。 例如:

  • India国家(下拉1)应显示各州GoaUPMP (下拉2)
  • 国家Pakistan (下拉列表1)应显示LahoreKarachi (下拉列表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。 这是我第一次学习这个项目,所以如果我犯了灾难性的错误,请原谅我。

在这里,您将使用密钥名称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>

Muhammad Sumon Molla Selim所说的是正确的,在loadsubcat.php中还有一个错误

你需要改变,回应选项陈述

从:

echo "<option value='$row['stateid']'>$row['state']</option>";

至:

echo "<option value=".$row['stateid'].">".$row['statename']."</option>";

然后第二次下拉将根据国家下降的变化获得状态。

当我在本地机器上执行代码时,我没有得到数据。 你做的错误是你没有正确地整理字符串和变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM