我如何设置该部分下拉列表显示某个主题可用的所有部分,具体取决于包含主题的上一个下拉列表。例如:如果我选择了主题A,它应该显示主题A的所有部分。目前该主题的下拉工作,它获取所有可用的主题,但我无法使第二个下拉获取部分,因为我想这样做:
select section from class WHERE (name of subject chosen above is equal to the name column in the database.
毕竟我是初学者,请忽略我的代码风格。提前谢谢。
我的代码:
<div>
<label for="subjects" accesskey="o">Subject</label>
<?php
$conn = new mysqli('localhost', 'afhfhdfhf', 'fhfhhfhfhfhf', 'fhfhfhfh')
or die ('Cannot connect to db');
$result = $conn->query("select name from class");
echo "<html>";
echo "<body>";
echo "<select name='subject'>";
while ($row = $result->fetch_assoc()) {
unset($id, $name);
$name = $row['name'];
echo '<option value="subject">'.$name.'</option>';
}
echo "</select>";
echo "</body>";
echo "</html>";
?>
</div>
<br>
<div>
<label for="section" accesskey="o">Section</label>
<?php
$conn = new mysqli('localhost', 'fgfgfgfg', 'rfgfgfgfg!~fgfgf', 'fgfgfgf')
or die ('Cannot connect to db');
$result = $conn->query("select section from class WHERE name = '$name'");
echo "<html>";
echo "<body>";
echo "<select name='id'>";
while ($row = $result->fetch_assoc()) {
unset($id, $name);
$name = $row['name'];
echo '<option value="">'.$name.'</option>';
}
echo "</select>";
echo "</body>";
echo "</html>";
?>
</div>
<br>
答案 0 :(得分:1)
(n.b。这确实应该是一个评论,但它太长了,所以回答是: - )
你在那里遇到了一些问题......首先,你正在呼出<html>
和<body>
标签,你已经在页面上有了这些标签,所以你不要需要这样做。
第二个问题是$name
在您查看第二个查询的方式中并不存在。实际上,它是您在第一个循环中回显的姓氏的值。
因此,基本问题是PHP在服务器上运行然后传递给客户端,并且您希望根据浏览器中发生的用户输入限制select
。所以您需要做的是选择subject
,提交回服务器以获取section
或者您可以使用jQuery
之类的内容来AJAX
回调服务器以检索此信息(可以是您可以解析和使用的JSON
,也可以是HTML
,您可以将其打包到表单中)。第二种选择肯定是要走的路。
有一个谷歌关于这种事情,你会找到负荷的例子,如果你遇到路障,请回到这里: - )