【发布时间】:2013-05-31 05:13:46
【问题描述】:
我得到了一个名为 category 的数据库表,如图所示:
我正在尝试做一个动态下拉框,索引脚本显示为:
<?php
try {
$objDb = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$objDb->exec('SET CHARACTER SET utf8');
$sql = "SELECT *
FROM `category`
WHERE `master` = 0";
$statement = $objDb->query($sql);
$list = $statement->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
echo 'There was a problem';
}
?>
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Dependable dropdown menu</title>
<meta name="description" content="Dependable dropdown menu" />
<meta name="keywords" content="Dependable dropdown menu" />
<link href="/css/core.css" rel="stylesheet" type="text/css" />
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script src="/js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="/js/core.js" type="text/javascript"></script>
</head>
<body>
<div id="wrapper">
<form action="" method="post">
<select name="gender" id="gender" class="update">
<option value="">Select one</option>
<?php if (!empty($list)) { ?>
<?php foreach($list as $row) { ?>
<option value="<?php echo $row['id']; ?>">
<?php echo $row['name']; ?>
</option>
<?php } ?>
<?php } ?>
</select>
<select name="category" id="category" class="update"
disabled="disabled">
<option value="">----</option>
</select>
<select name="colour" id="colour" class="update"
disabled="disabled">
<option value="">----</option>
</select>
</form>
</div>
</body>
</html>
update.php 显示为:
<?php
if (!empty($_GET['id']) && !empty($_GET['value'])) {
$id = $_GET['id'];
$value = $_GET['value'];
try {
$objDb = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$objDb->exec('SET CHARACTER SET utf8');
$sql = "SELECT *
FROM `category`
WHERE `master` = ?";
$statement = $objDb->prepare($sql);
$statement->execute(array($value));
$list = $statement->fetchAll(PDO::FETCH_ASSOC);
if (!empty($list)) {
$out = array('<option value="">Select one</option>');
foreach($list as $row) {
$out[] = '<option
value="'.$row['id'].'">'.$row['name'].'</option>';
}
echo json_encode(array('error' => false, 'list' => implode('',
$out)));
} else {
echo json_encode(array('error' => true));
}
} catch(PDOException $e) {
echo json_encode(array('error' => true));
}
} else {
echo json_encode(array('error' => true));
}
第二个下拉框没有显示依赖于第一个下拉框的值,如图所示:
谁能帮帮我。
【问题讨论】:
-
我不明白你在做什么!只需将相关代码发布为呈现的客户端,而不是 php 服务器端代码。顺便说一句,您只使用一张桌子吗?这样做的目的?
-
当第一个下拉框被选中时,第二个下拉框应该显示套头衫和衬衫。例如,无论您选择哪个,如果我现在选择跳线,则第三个下拉菜单应显示黑色。
-
我在youtube.com/watch?v=ClRZzquik1c这个教程中得到了这个
-
您的表单似乎没有被提交。
<select name="gender" id="gender" class="update" onchange="this.form.submit()">可能会有所帮助,但很难理解所有事情的进展情况。 -
@munue 您无需提交表单即可填充这些下拉框。您希望根据前一个下拉列表的选择来填充每个下拉列表,对吗?如果是这样,您应该改用 jQuery AJAX。下面的示例有很多代码,但是如果您仔细阅读它,您会发现它完全符合您的要求。您将需要使用 jQuery 将第二个和第三个下拉框替换为新代码(您可以在 AJAX
success: function() {blah blah blah}代码中执行此操作)。此外,您需要有两个$.ajax()代码块,一个用于下拉列表#1,另一个用于下拉列表#2。