做一个课程报名模块,希望当点击报名的图标时,根据用户名在数据库的表中进行查询,如果表中已经存在该用户则提示“已经选报过!”,若没有则直接弹出窗口提示“还剩若干名额,确定报名吗?”目前判断是否重复报名这个功能还没实现,只实现了如下
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("该课程名额已满!");
}
}
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("该课程名额已满!");
}
}
就是打开这个页面的时候根据用户登录的名字去判断课程表中有没有用户名
的数据库应该是用户一个表 课程一个表 课程和用户表是存在关系的
那你的页面打开时间中就查询这个用户不存在的课程 这样就不需要判断这个人有没有报这个课程了
我想你现在打开的页面的sql查询语句都是全图查出来的吧 换成
select * from 课程表 where 课程表和用户表有关系的那一列比如是course_username not in(select username from 用户表)
或者你可以写 inner join on 课程表.xx!=用户表.xx
这样打开我页面的数据就是这个人没有报的课程数据 OK
就是把符合条件的课程放在ResultSet在页面显示出来,但是在报名表查询到的记录如何返回到页面呢??我之前也是放在另一个ResultSet,但是一个页面多个ResultSet不会处理,
你的意思是说查询所有的课程然后根据用户编号判断课程表中有没有用户编号
有就不插入没有就插入
第一个是显示select * from 报名表
第二是是图片超链接的单击事件 然后调用后台的另外一个方法 这个方法返回的是true或者false
select * COUNTS from 报名表 where username=‘传过来的值(id)’
return xxx.xxx方法>0忘记怎么写了
就是和你登陆的方法是一抹一样的 都是返回true或者false 如果是true那么就不添加 如果是false就insert
我现在又有新问题,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的值改变,也没有执行这个判断,找不出哪里有问题,麻烦帮忙看下
{
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里面的内容,麻烦看下我的代码哪里有问题,谢谢了!
发现错误了,我把string 类型用==进行比较了,但是改成.equals方法进行比较还是没有执行,我标记bj换成Int类型才成功。