做一个课程报名模块,希望当点击报名的图标时,根据用户名在数据库的表中进行查询,如果表中已经存在该用户则提示“已经选报过!”,若没有则直接弹出窗口提示“还剩若干名额,确定报名吗?”目前判断是否重复报名这个功能还没实现,只实现了如下
function bm(kcbh,userName,sy)
  {  
     if(sy>=1)
     { if (confirm("还剩"+sy+"个名额是否确定报该课程?"))
  {
          window.open("/XSXK/servlet/KZServlet?action=bm&kcbh="+kcbh+"&userName="+userName,"mywindow","toolbar=no,left=150,top=50,width=600,height=600,menubar=no,systemMenu=no");
      }
      else
      {
      }}
      else
      {
       window.alert("该课程名额已满!");
      }
  }

解决方案 »

  1.   

    点击报名的时候,获取当前行课程的ID(如果没有ID那就获取某一个或者几个能唯一确定是哪个课程记录的字段);然后将ID传给查询action,后台去查询是否有符合条件的记录;接着回调函数判断后台传回的标识;后面就是加上你上面已经写的if...else
      

  2.   

    你需求说的很详细了,不知道是什么问题,是sql不会实现,还是其他问题
      

  3.   

    或者叫你个更简单的方法不过前提是要查询
    就是打开这个页面的时候根据用户登录的名字去判断课程表中有没有用户名 
    的数据库应该是用户一个表 课程一个表 课程和用户表是存在关系的
    那你的页面打开时间中就查询这个用户不存在的课程 这样就不需要判断这个人有没有报这个课程了
    我想你现在打开的页面的sql查询语句都是全图查出来的吧 换成
    select * from 课程表 where 课程表和用户表有关系的那一列比如是course_username not in(select username from 用户表)
    或者你可以写 inner join on 课程表.xx!=用户表.xx
    这样打开我页面的数据就是这个人没有报的课程数据 OK
      

  4.   

    这个我明白,我有用户表,课程表,报名表(用户名,课程编号),我们的这个课程设计要求就是用户一登入就根据用户名在后台进行查询筛选出符合条件的课程,我想的是同时也在报名表中去查询有没有这个记录,并把这个查询的结果返回页面的function里面去判断,但是就是不知道代码该如何写,两个查询可以放在一个数据集里面返回吗?因为这个基本是自己看书看代码学习,没有什么实际技术,所以很多细小的东西解决不出
      

  5.   


    就是把符合条件的课程放在ResultSet在页面显示出来,但是在报名表查询到的记录如何返回到页面呢??我之前也是放在另一个ResultSet,但是一个页面多个ResultSet不会处理,
      

  6.   

    不一样的 一个是查询一个是判断
    你的意思是说查询所有的课程然后根据用户编号判断课程表中有没有用户编号
    有就不插入没有就插入
    第一个是显示select * from 报名表
    第二是是图片超链接的单击事件 然后调用后台的另外一个方法 这个方法返回的是true或者false
    select * COUNTS from 报名表 where username=‘传过来的值(id)’
    return xxx.xxx方法>0忘记怎么写了 
    就是和你登陆的方法是一抹一样的 都是返回true或者false 如果是true那么就不添加 如果是false就insert
      

  7.   

    select * from 报名表 where username=‘传过来的用户编号’
      

  8.   


    我现在又有新问题,jsp后台的代码如下
    try  {      conn=DBConnection.getConnection_access();ResultSet rs=null;String bj="";        Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);String  sql1="select * from 启动表";rs=stmt.executeQuery(sql1);if(rs.next()){bj=rs.getString(1);} rs.close();stmt.close(); String  sql="select * from 学生表 where 学号=? and 密码=?";PreparedStatement pstat=conn.prepareStatement(sql);pstat.setString(1,userName);      pstat.setString(2,userPassword); rs=pstat.executeQuery();if(rs.next()){if(bj=="0") {request.setCharacterEncoding("gb2312"); response.setContentType("text/html;charset=gb2312"); out.print("<script language=javascript>window.alert('选课还未开始!');window.close();</script>");        }else {    request.setCharacterEncoding("gb2312");    response.setContentType("text/html;charset=gb2312");response.sendRedirect("/XSXK/XK.jsp?userName="+userName);}}  else   {    response.sendRedirect("loginError.html");}}catch(SQLException e){e.printStackTrace();}finally{try{if(conn!=null)conn.close();}catch(SQLException e){e.printStackTrace();}}}
    运行时
    if(bj=="0") {request.setCharacterEncoding("gb2312"); response.setContentType("text/html;charset=gb2312"); out.print("<script language=javascript>window.alert('选课还未开始!');window.close();</script>");        }
    这个部分的代码跳过了,即使bj的值改变,也没有执行这个判断,找不出哪里有问题,麻烦帮忙看下
      

  9.   

    我现在又有新问题,jsp后台的代码如下try
      {

          conn=DBConnection.getConnection_access();
    ResultSet rs=null;
    String bj="";
            Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String  sql1="select * from 启动表";
    rs=stmt.executeQuery(sql1);
    if(rs.next())
    { bj=rs.getString(1);

    rs.close();
    stmt.close(); 
    String  sql="select * from 学生表 where 学号=? and 密码=?";
    PreparedStatement pstat=conn.prepareStatement(sql);

    pstat.setString(1,userName);
          pstat.setString(2,userPassword);
     rs=pstat.executeQuery();

    if(rs.next())
    {
    if(bj=="0")
     {
    request.setCharacterEncoding("gb2312");
     response.setContentType("text/html;charset=gb2312");
     out.print("<script language=javascript>window.alert('选课还未开始!');window.close();</script>");
            }
    else
     {
        request.setCharacterEncoding("gb2312");
        response.setContentType("text/html;charset=gb2312");
    response.sendRedirect("/XSXK/XK.jsp?userName="+userName);
    }

    }

      else
       {

        response.sendRedirect("loginError.html");
    }

    }
    catch(SQLException e)
    {
    e.printStackTrace();
    }
    finally
    {
    try
    {
    if(conn!=null)
    conn.close();
    }
    catch(SQLException e)
    {
    e.printStackTrace();
    }
    }

    }
    但运行时if(bj=="0")
     {
    request.setCharacterEncoding("gb2312");
     response.setContentType("text/html;charset=gb2312");
     out.print("<script language=javascript>window.alert('选课还未开始!');window.close();</script>");
            }
    else
     {
        request.setCharacterEncoding("gb2312");
        response.setContentType("text/html;charset=gb2312");
    response.sendRedirect("/XSXK/XK.jsp?userName="+userName);
    } 无论bj的值如何,都直接跳过if判断执行else里面的内容,麻烦看下我的代码哪里有问题,谢谢了!
      

  10.   


    发现错误了,我把string 类型用==进行比较了,但是改成.equals方法进行比较还是没有执行,我标记bj换成Int类型才成功。