谁能帮我解决这个问题。为了显示来自 MySql 数据库的 rezults,我必须选择学校、班级、科目和考试。但是列出所有班级或所有考试不是很实用,所以我想做另一个功能,当我在第一个选择框中选择一些学校时,它会在第二个选择框中仅显示所选学校的班级。
我的代码是:
<div id="allselects">
<form action="viewing.php" method="post" name="filt">
<div class="multsarrange">
<h1 class="choosetext" >Chose Schools</h1>
<select class="multipleselect" name="schools[]" size="8" multiple="multiple" id="shkll">
<?php
$sql = "SELECT * FROM schools ";
$scc=mysql_query($sql);
while ($db_f = mysql_fetch_assoc($scc)) {
$schcd=$db_f['schoolcode'];
$schc=$db_f['schoolname'];
echo "<option value=$schcd >$schc</option>";
}
?>
</select>
</div>
<div class="multsarrange" id="clasaajax">
<h1 class="choosetext" >Chose an Classes</h1>
<select class="multipleselect" name="classes[]" size="8" multiple="multiple" ">
<?php
$c = "SELECT * FROM classes ";
$cl=mysql_query($c);
while ($db_f = mysql_fetch_assoc($cl)) {
$clsc=$db_f['schoolID'];
$claid=$db_f['classID'];
$clay=$db_f['year'];
$clanm=$db_f['className'];
$name=schoolidton($clsc)." ".$clay." ".$clanm;
echo "<option value=$claid >$name</option>";
}
?>
</select>
</div>
<div class="multsarrange">
<h1 class="choosetext" >Chose Subjects</h1>
<select class="multipleselect" name="subjects[]" size="8" multiple="multiple">
<?php
$sb = "SELECT * FROM subjects ";
$sbi=mysql_query($sb);
while ($db_f = mysql_fetch_assoc($sbi)) {
$sbnm=$db_f['subjectName'];
$sbid=$db_f['subjectID'];
echo "<option value=$sbid >$sbnm</option>";
}
?>
</select>
</div>
<div class="multsarrange">
<h1 class="choosetext" >Chose Exams</h1>
<select class="multipleselect" name="exams[]" size="8" multiple="multiple">
<?php
$e = "SELECT * FROM exams ";
$ex=mysql_query($e);
while ($db_f = mysql_fetch_assoc($ex)) {
$id=$db_f['examID'];
$sub=$db_f['subjectID'];
$desc=$db_f['description'];
$year=$db_f['year'];
$data=$db_f['data'];
$exnam=subidton($sub)." - ".$year." - ".$desc." - ".$data;
echo "<option value=$id >$exnam</option>";
}
?>
</select>
</div>
<div id="longsubmit">
</br></br>
<input name="submit" type="submit" value="View" />
</div>
</form>
</div>
您需要做的是:
- 在
select
上设置事件侦听器以侦听change
事件 - 请参阅此处 - 通过将所选值发送到 PHP 脚本来处理更改事件 - 请参阅此处
- 使用 PHP 获取所选值并根据需要查询数据库(您已经这样做了)
- 如果您只是创建新的选择列表,请发送关联的 HTML 输出或 JSON 或 XML - 这是一个简单的回显
- 使用 JavaScript 将输出写入屏幕 - 这要么基于 PHP 函数的回复创建一个新元素,要么插入 HTML 响应
在这个过程中有很多事情 - 每个都有多个选项 - 我建议你尝试解决每一个,如果你遇到困难,请回来提出具体问题
在
abc上使用ajax.php获取学校的值或ID,并制作所需的标签,并将结果返回给HTML的相关ID 函数get_options(表,id_field,name_field,where_field,field_value,select_id,edit_id){
$('#'+select_id).html('<option>Loading...</option>');
$.ajax({
type: "POST", url: "abc.php", data: "&table="+table+"&id_field="+id_field+"&name_field="+name_field+"&where_field="+where_field+"&field_value="+field_value+ "&edit_id=" + edit_id +"&get_option=1",
complete: function(data){
//alert(data.responseText);
$('#'+select_id).html(data.responseText);
}
});
}
您必须使用 AJAX 才能实现此目的。
检查这个
http://www.plus2net.com/php_tutorial/ajax_drop_down_list.php