【发布时间】:2015-05-29 11:39:18
【问题描述】:
我需要制作两个下拉列表。假设第一个包含食物类别:冰淇淋、比萨饼、面条、奶昔。
因此,如果我选择冰淇淋,第二个下拉列表将包含:巧克力、香草、薄荷等。如果我在第一个选择比萨,我希望第二个能够动态更改,以便包含:意大利辣香肠、全肉等。
但是,我需要用我在数据库中已有的值填充第二个下拉列表。因此,假设我没有巧克力冰淇淋,那么第二个下拉列表中将没有巧克力。这是我想要的结果。
我正在使用 HTML、PHP、JavaScript/jQuery 和 MySQL,所以目前它是一个 webapp,这两个下拉列表供我从数据库中删除值。因此,假设我想从 Pizzas 中删除 Pepperoni,我会在第一个下拉列表中选择 Pizzas,然后在第二个下拉列表中选择 Pepperoni。然后我会点击删除,它会执行一个js函数,使用ajax将参数传递给PHP,然后可以执行删除查询。
我一直在动态填充第二个下拉列表,对此有什么帮助吗?到目前为止我为下拉所做的只是:
<select id="tester_type">
<option value=""></option>
<option value="LMX">LMX</option>
<option value="LCX">LCX</option>
<option value="CAT">CAT</option>
<option value="J750">J750</option>
<option value="HPPS">HPPS</option>
<option value="HP93K">HP93K</option>
<option value="UFLEX">UFLEX</option>
<option value="IFLEX">IFLEX</option>
<option value="QRT">QUARTET</option>
<option value="TGR">TIGER</option>
<option value="ETS">ETS</option>
<option value="LEX">LEX</option>
<option value="HPLC">HPLC</option>
<option value="HPSS">HPSS</option>
</select>
</td>
</tr>
<tr>
<td>New Tester Name:</td>
<td>
<select id="tester_type">
<!--Update list of available testers-->
</select>
</td>
注意:顺便说一下,我只是将第一个下拉列表替换为食物类别,以便更好地理解我的问题。只需将第一个作为食物类别,第二个将是其类型/口味。
编辑:
它不会在窗口中所需的部分/div 中显示任何内容。除了我在 HTML 中添加的标题和其他两个按钮之外,只有一个空白。
我根据布兰登的回答做了什么:
在 HTML 中:
<html>
<head>
<title>Delete Tester</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="function.js"></script>
<script type="text/javascript">displayDropDown();</script>
</head>
<body>
<h3>Delete Tester</h3>
<div id="drop_two_list"></div>
<table class="deleteTable">
<tr>
<td/><td><br>
<input type="button" value="Cancel" onclick="window.close();"/>
<input type="button" name="send" value="Delete" onclick="deleteTester();"/>
</td>
</tr>
</table>
</body>
</html>
在外部 javascript 文件中:
function dislplayDropDown()
{
var page = "database.php";
$.post(page, {
action : "dislplayDropDown"
}, function(data) {
$("div#drop_two_list").html(data);
alert(data);
});
在 PHP 中:
function displayDropDown()
{
$tester_info = "dummy_tester_list";
$query_string = "select * from $tester_info";
$result = @mysql_query($query_string) or die (mysql_error());
$data = mysql_fetch_array($result) or die (mysql_error());
echo "<select id=\"tester_type\">";
while($data)
{
echo "<option value='$data['tester_type']'>$data['tester_type']</option>"; // first drop down
}
echo "</select>";
$selected_tester_type = $_REQUEST['tester_type'];
$query_string = "select * from $tester_info where tester_type = $selected_tester_type";
$result = @mysql_query($query_string) or die (mysql_error());
$data = mysql_fetch_array($result) or die (mysql_error());
echo "<select>";
while($data)
{
echo "option id=\"tester_name\" value='$data['tester_name']'>$data['tester_name']</option>"// second drop down
}
echo "</select>";
}
?>
<?php
$action = rtrim($_REQUEST['action']);
if($action=="insert")//This is for some other function
{
$tester_type = rtrim($_REQUEST['tester_type']);
$tester_name = rtrim($_REQUEST['tester_name']);
echo checkDuplicateTesterName($tester_type, $tester_name);
}
else if($action=="displayDropDown")
{
echo displayDropDown();
}
?>
这是 Kentot 要求的表结构,它只有前五行,因为有超过 500 行,所以我不想把整个东西放在这里:
id tester_type tester_name
1 LMX LMX-01
2 LMX LMX-04
3 LMX LMX-05
4 LMX LMX-06
5 LMX LMX-07
【问题讨论】:
-
能贴出你的mysql表结构吗?
-
好的,刚刚发布。
-
请注意,除非有非常多的选项,否则在一个查询中获取整个数据集并处理应用程序代码(php 或 JavaScript)中的所有其他内容可能会更有效 - 直到提交按钮还是被按下了
-
@Strawberry 好的,但我该怎么做?你介意给我一个建议吗?我还在想办法。我得到的最接近我想要的答案是 Brandon 的答案。
标签: javascript php jquery html mysql