英雄!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! HELP ME!!!!!!!!!!!!!!!!!!!!!!!
只要取出的RESULTSET是你想要的,然后你把它放到哪里都可以呀! 只不过区别在于你向SELECT 中循环给值时是从数组或哈希表中取出! 如果我的想法可以的话,那就简单了,代码大体是这样的:从表A中取出省分名: rs1=state.executeQuery("select 省名 from 表A ORDER BY 编号"); 从表B 中取出对应的城市名: rs2=state.executeQuery("select 城市名 from 表B where 所属省编号="+ select中被选中的省名所对应的编号 +"");
然后触发得到选择的省份
再从另一个表中取出城市
比如你取的了 content
如果是省份的话不就可以放到select里了么
当用户选择的时候就触发
就可以获得用户选择的省份了
是这样么
就每次请求一个“省”然后把 id 用url传递出去,然后 根据这个 id 从数据中 把 属于这个“省”的“城市” 都读出来。
直接用resultset返回数据到jsp页面内,然后放入select中,再用jscript处理,我不知道改怎么做!!
首先你的数据库中的两个表的关系就一定要弄清,是通过什么字段来连接这两个表的.如表A中的陕西一定对应一个唯一的编号,如1,那么陕西省会有很多的城市了,它们应该通过这个陕西的唯一编号1来连接起来. 结构应该是这样的:
-------------------------表A
编号 省名
1 陕西
-------------------------表B
编号 所属省编号 城市
1 1 西安
2 1 AA
3 1 BB
--------------------------这样你能通过选取SELECT 框中的陕西省时,陕西省的城市就会通过 (所属省编号)这个字段查
出来.
如果理解错误请解释并说明清楚!
HELP ME!!!!!!!!!!!!!!!!!!!!!!!
如果我的想法可以的话,那就简单了,代码大体是这样的:从表A中取出省分名: rs1=state.executeQuery("select 省名 from 表A ORDER BY 编号");
从表B 中取出对应的城市名:
rs2=state.executeQuery("select 城市名 from 表B where 所属省编号="+ select中被选中的省名所对应的编号 +"");
要做这样的 连动 还是比较复杂的。。首先 select1中change时间中 刷新 iframe
用iframe去取得 select2中的数据
然后再在 iframe所指的页面 body的onload事件中把 内容写回select2确实挺复杂的。。 :)
damn it!!!
补充一句:我不是工作的人,只是完成学校的任务而已,clear??
所以,着急啊~~~~~~~~~~~~~~~~5555555555555~~~~~~~~~~
好不凄凉啊~~~~~~~~
或者参考下列代码:
http://www.andyfans.com/chinese/js/changlist.js
<form name="myform">
<select name="group" size=1 onChange='change_area(document.myform)'>
<option value="">请选择省份</option>
<option value="北京市">北京</option>
<option value="上海市">上海</option>
<option value="天津市">天津</option>
<option value="广东">广东</option>
<option value="浙江">浙江</option>
<option value="江苏">江苏</option>
<option value="福建">福建</option>
<option value="湖南">湖南</option>
<option value="湖北">湖北</option>
<option value="重庆市">重庆</option>
<option value="辽宁">辽宁</option>
<option value="吉林">吉林</option>
<option value="黑龙江">黑龙江</option>
<option value="河北">河北</option>
<option value="河南">河南</option>
<option value="山东">山东</option>
<option value="陕西">陕西</option>
<option value="甘肃">甘肃</option>
<option value="青海">青海</option>
<option value="新疆">新疆</option>
<option value="山西">山西</option>
<option value="四川">四川</option>
<option value="贵州">贵州</option>
<option value="安徽">安徽</option>
<option value="江西">江西</option>
<option value="云南">云南</option>
<option value="内蒙古">内蒙古</option>
<option value="广西">广西</option>
<option value="西藏">西藏</option>
<option value="宁夏">宁夏</option>
<option value="海南">海南</option>
<option value="香港">香港</option>
<option value="澳门">澳门</option>
<option value="台湾">台湾</option>
</select>
<select name="city" size=1>
<option value="">请选择城市</option>
</select>
<script src="changlist.js"></script>
</form>你自己看看,可以根据这个把那些城市和省份都从数据库里读出来,今天由于时间关系我只能说到这里了,不好意思:)
下面的代码是先读取省份表,然后根据不同选择再动态从数据库里读取城市名。
很简单的code,自己看看就明白了。select.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.sql.*"%>
<script>
function getURL(cid){
top.window.location="select.jsp?cid="+cid;
}
</script>
<%
String cid = request.getParameter("cid"); //url 传递的参数
if(cid==null || cid.equals("")) cid ="0";
int intCID = Integer.parseInt(cid);
//数据库连接部分略掉了
String sql="select 省份名,省份表的id from 省份表 order by 省份表的id desc";
rs=stmt.executeQuery(sql);
out.println("<select name=\"group\" onChange='getURL(group.value);'>");
out.println("<option value='javascript:void(0)'>请选择</option>");
while(rs.next()){
out.println("<option value="+rs.getString("省份表的id")+">"+rs.getString("省份名")+"</option>");
}
out.println("</select>");
rs.close();
out.println("<select name=\"city\">");
String sqlc = "select 城市名 from 城市表 where 所属省编号="+intCID+" order by 城市表id desc";
rsc=stmt.executeQuery(sqlc);
while(rsc.next()){
out.println("<option value=\""+rsc.getString("城市名")+"\">"+rsc.getString("城市名")+"</option>");
}
rsc.close();
out.println("</select>");
out.println("<input type=\"button\" value=\" SUB \" onClick=\"alert(city.value);\">");
%>
/**************************
*数据库pTable 省份表:
*id -- pName
*数据库cTable 城市表:
*id -- cName --(int)pID
*id ---pID 关联:
*数据库名:pcData
*
* By Alec Cheung
* http://cheung.cxc.cc
* http://www.andyfans.com/97741/
* msn:[email protected]
*****************************/
%>
<%
/***文件conn.jsp 用于连接数据库*******/
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.sql.*,java.lang.*,java.util.*;"%>
<%
Connection conn=null;
Statement stmt=null,stmtc=null;
ResultSet rs=null,rsc=null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/pTable?user=root&password=root&useUnicode=true&characterEncoding=GBK");
stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
stmtc=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
/*conn.jsp 结束*/
%>
<%/*****文件st.jsp用于显示所有省份名*******/%>
<%@ page contentType="text/html; charset=GBK" %>
<%@ page include="conn.jsp" %>
<%String sql="select pName from pName order by id desc";
rs=stmt.executeQuery(sql);
out.println("<form name=\"myform\"><select name=\"group\" onChange='change_area(document.myform)'>");
out.println("<option value='javascript:void(0)'>请选择</option>");
while(rs.next()){
out.println("<option value="+rs.getString("pName")+">"+rs.getString("pName")+"</option>");
}
out.println("</select>");
rs.close();
out.println("<select name=\"city\">");
out.println("<option value=\"请选择\">请选择</option>");
out.println("</select><script src=\"changlist.jsp\"></script>"); //注意此处的代码
out.println("<input type=\"button\" value=\" SUB \" onClick=\"alert(city.value);\"></form>");
//文件st.jsp 结束
%>
<%/*****文件changlist.jsp用于显示所有城市名*******/%>
<%@ page contentType="text/html; charset=GBK" %>
<%@ page include="conn.jsp" %>
<%///以下是调用一些脚本文件//%>
function aClass(aData, aValue, aText) {
if (aClass.arguments.length < 3)
alert("传入的参数错误!")
else {
this.Data = aData;
this.Value = aValue;
this.Text = aText;
}
} function chgDnCombobox(aSrc, aDes, aClass, aRemain){
if (chgDnCombobox.arguments.length < 3)
alert("传入的参数错误!")
else if (aSrc.type != "select-one")
alert("传入的参数错误!")
else if (aClass == null)
alert("aClass未定义错误!")
else {
if (aRemain==null)
aRemain = 1;
chgDnComboboxItem(aSrc.options[aSrc.selectedIndex].value, aDes, aClass, aRemain);
}
} function chgDnComboboxItem(aValue, aDes, aClass, aRemain){
if (chgDnComboboxItem.arguments.length<3)
alert("参数传入错误!")
else if (aClass==null)
alert("错误!aClass没有定义!")
else{
if (aRemain==null)
aRemain = 1;
deleteAllComboboxItem(aDes, aRemain);
for (var i=0; i<aClass.length; i++)
if (aClass[i].Data==aValue) /* check aClass[i].Data */
if (aClass[i].Data!="")
addComboboxItem(aDes, aClass[i].Text, aClass[i].Value);
}
} function deleteAllComboboxItem(aList, aRemain) {
for (var i=aList.options.length; i > aRemain-1; i--)
aList.options[i] = null;
} function addComboboxItem(aList, aText, aValue) {
var aOption = new Option(aText, aValue);
eval("aList.options[aList.options.length]=aOption");
}//数据区,可以在这里添加数据
function change_area(aForm) {
chgDnCombobox(aForm.group, aForm.city, f_Set0 , 0);
}function onchg(aForm) {
onchg(document.myform);}
var f_Set0 = new Array(
<%
//脚本结束开始读取数据库
String sql="select cName,pID from cTable order by id desc";
rs=stmt.executeQuery(sql);
while(rs.next()){
String sqlc = "select pName from pTable where id ="+rs.getInt("pID"); //注意此处外循环 先选环省份 是因为没个省份至少有一个城市
rsc = stmtc.executeQuery(sqlc);
while(rsc.next()){
out.println("new aClass('"+rsc.getString("pName")+"','"+rs.getString("cName")+"','"+rs.getString("cName")+"'),");
}
rsc.close();
}
rs.close();
%>
new aClass("End", "End", "End"));
<%
/*changlist.jsp 结束
*
* 以上程序没有问题,你可以到我的网站上看看。
*
* 至于用ArrayList or Hashtable 我还没想到。
*
*这样可能不是最好的程序但是可以实现你的要求
*/%>