关联这些说依靠javascript来实现的,其实所有的内容包括陕西,河南 以及 西安,洛阳,咸阳其实很多时候是已经全部select出来送到客户端的然后在客户端通过javascript来实现这种联动功能,你随便找个网站去看看这种联动的就
行拉

解决方案 »

  1.   

    多谢米兄的回应,我也明白关联主要依靠javascript或者xml技术解决,但是现在的问题关键是怎样对这样的结果集合进行处理呢?
      

  2.   

    不知道是不是这个意思你先把所有的省份取出来放到select里
    然后触发得到选择的省份
    再从另一个表中取出城市
      

  3.   

    象兄,我的意思是:现在通过两个表的关联取出了content和subcontent的结果集合,然后对这两个结果集合处理才能进行关联,对吧?但是现在问题的关键是:不知道该怎样对这些结果集合进行处理,不能单独提取吗??否则哪里来的‘放在select中呢’???
      

  4.   

    象兄,我现在是不知道该怎样单独取出来,不知道我说清楚没有,现在通过id关联直接用rs.getString('content')或者用rs.getString(1)取出来的都是一个结果集呀!!而且必须用在while循环中取,是不是必须用原数据方法呢?getmetadatameta??
      

  5.   

    select a.content as content,b.subcontent as subcontent from a,b where a.id=b.id;
      

  6.   

    还是不明白
    比如你取的了 content 
    如果是省份的话不就可以放到select里了么
    当用户选择的时候就触发
    就可以获得用户选择的省份了
    是这样么
      

  7.   

    如果不想在客户端都关联出来。
    就每次请求一个“省”然后把 id  用url传递出去,然后 根据这个 id 从数据中 把 属于这个“省”的“城市” 都读出来。
      

  8.   

    象兄,难道不能把结果集放入一个vector或者arraylist中吗?或者做相关的处理?
    直接用resultset返回数据到jsp页面内,然后放入select中,再用jscript处理,我不知道改怎么做!!
      

  9.   

    我是这样理解你的问题的,也不知道正不正确:
    首先你的数据库中的两个表的关系就一定要弄清,是通过什么字段来连接这两个表的.如表A中的陕西一定对应一个唯一的编号,如1,那么陕西省会有很多的城市了,它们应该通过这个陕西的唯一编号1来连接起来. 结构应该是这样的:
    -------------------------表A
    编号      省名
    1         陕西
    -------------------------表B
    编号    所属省编号   城市
    1           1         西安
    2           1         AA
    3           1         BB
    --------------------------这样你能通过选取SELECT 框中的陕西省时,陕西省的城市就会通过 (所属省编号)这个字段查
    出来.
    如果理解错误请解释并说明清楚!
      

  10.   

    不能让自己再堕落了,谢谢你的回应!我也这样想过,可是这样一来,用户在选择省份的时候就要连接一次数据库,是不是效率不高?而且怎样通过url把id发送出去的做法我没做过,可以告诉我吗?
      

  11.   

    tanguangbin(赚钱--买楼买车找老婆!),你理解的很正确!!能否给出代码解决呢????
      

  12.   

    okey!!多谢不能堕落兄!!!!!!
      

  13.   

    tanguangbin(赚钱--买楼买车找老婆!) 兄,也许可以按照你上面说的那个意思实现,不过我想最好把省份和城市全部取出来,放在一个临时变量里,比如数组,哈希表?然后再使用它们是不是更好些呢?或者你有更好的点子?帮我!!!
      

  14.   

    英雄!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    HELP ME!!!!!!!!!!!!!!!!!!!!!!!
      

  15.   

    只要取出的RESULTSET是你想要的,然后你把它放到哪里都可以呀! 只不过区别在于你向SELECT 中循环给值时是从数组或哈希表中取出!
    如果我的想法可以的话,那就简单了,代码大体是这样的:从表A中取出省分名: rs1=state.executeQuery("select 省名 from 表A ORDER BY 编号");
    从表B 中取出对应的城市名:
    rs2=state.executeQuery("select 城市名 from 表B  where  所属省编号="+ select中被选中的省名所对应的编号 +"");
      

  16.   

    我赞成用LinkedList 或hashmap,可以有很多方便的操作,只是需要多建个对象什么的……
      

  17.   

    就将字典表中的所有数据取出,放入javascript数组中,剩下的就是javascript的是了
      

  18.   

    也可以用iframe + javascript来实现
    要做这样的 连动 还是比较复杂的。。首先 select1中change时间中 刷新 iframe
    用iframe去取得 select2中的数据
    然后再在 iframe所指的页面 body的onload事件中把 内容写回select2确实挺复杂的。。 :)
      

  19.   

    shit!真是郁闷坏了,不如回去吃香蕉!拉大便!睡大觉!
    damn it!!!
      

  20.   

    到底高手今天不在呢,还是高手们不屑回答这个问题啊?还是这里没有高手啊??
    补充一句:我不是工作的人,只是完成学校的任务而已,clear??
    所以,着急啊~~~~~~~~~~~~~~~~5555555555555~~~~~~~~~~
    好不凄凉啊~~~~~~~~
      

  21.   

    老大,把他全都拿到客户端,我想不出来了,但是如果把省都写出来然后每次请求一下。从数据库里把省下属的城市都动态显示出来偶能办到主要是我对javascript 用的不够灵活:)。////////////////////////////
    或者参考下列代码:
    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>你自己看看,可以根据这个把那些城市和省份都从数据库里读出来,今天由于时间关系我只能说到这里了,不好意思:)
      

  22.   

    上面的脚本是让你参考的。
    下面的代码是先读取省份表,然后根据不同选择再动态从数据库里读取城市名。
    很简单的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);\">");
    %>
      

  23.   

    把你的e-mail 给我,我给你写了一个我给你发过去。然后好结帖子啊!
      

  24.   

    虽然结贴了,但是仍然希望这里的朋友,哪位有更好的点子,或者能直接对取出的结果集进行处理(比如放入arraylist或者hashmap中处理)的办法的,请继续跟贴,我可以重新发贴,点名这个主题,给你追加分数!决不食言,毕竟我们在这里主要是为了共同进步和交流的目的!
      

  25.   

    <%
    /**************************
    *数据库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 我还没想到。
    *
    *这样可能不是最好的程序但是可以实现你的要求
    */%>
      

  26.   

    Sorry ,conn.jsp 文件中 数据库名 pTable ==>pcDatahttp://cheung.cxc.cc/Article/showArticle.phtml?id=27