100分求助ASP问题。
最近用ASP作了个《体育专项》网上选课系统。基本流程是这样,学生用学号登陆后,用Session保存学号,然后判断出学生的性别,在页面上显示该性别可以选择的《体育专项》,任选其一(单选框)后提交,提交后转到另一个页面,在这个页面中根据Session中的学号,Request.Form("r1")中《体育专项》选课的名称来操作:如果该学生已经选过本学期的《体育专项》课,就先删除,否则就直接添加一条记录。
经过1个月,2000多人的测试发现出了问题:有三个学生的选课出了大问题,主要是:女生选到了男生才能选的课,而男生选到了女生才能选的课。
请大家帮我看看问题出在哪里??我自己已经检察很久了,就是看不出问题。
用Dreamweaver MX 2004
下面是先删除后添加的代码:
<%
If Request.Form("r1") <> "" and (Not rs_TaskStudent.EOF Or Not rs_TaskStudent.BOF) Then
if(rs_Student.Fields.Item("StudentID").Value <> "") then C_del__p0 = rs_Student.Fields.Item("StudentID").Value //学号
if(rs_Semester.Fields.Item("Semester").Value <> "") then C_del__p1 = rs_Semester.Fields.Item("Semester").Value //选课学期
if(rs_TaskStudent.Fields.Item("taskclass").Value <> "") then C_del__p2 = rs_TaskStudent.Fields.Item("taskclass").Value //选课课程名称
end if
%>
<%'
If Request.Form("r1") <> "" and (Not rs_TaskStudent.EOF Or Not rs_TaskStudent.BOF) Then
set C_del = Server.CreateObject("ADODB.Command")
C_del.ActiveConnection = MM_SQL_VB_STRING
C_del.CommandText = "DELETE FROM dbo.St_TaskStudent WHERE studentID ='" + Replace(C_del__p0, "'", "''") + "'and semester='" + Replace(C_del__p1, "'", "''") + "' and Taskclass='" + Replace(C_del__p2, "'", "''") + "' "
C_del.CommandType = 1
C_del.CommandTimeout = 0
C_del.Prepared = true
C_del.Execute()
end if
%>
<%
if(Request.Form("r1") <> "") then C_inse__p1 = Request.Form("r1") //Request.Form("r1") 为选中的《体育专项》课程名称
if(rs_Student.Fields.Item("StudentID").Value <> "") then C_inse__p2 = rs_Student.Fields.Item("StudentID").Value
if(rs_Semester.Fields.Item("Semester").Value <> "") then C_inse__p3 = rs_Semester.Fields.Item("Semester").Value
%>
<%
if(Request.Form("r1") <> "" ) then
set C_inse = Server.CreateObject("ADODB.Command")
C_inse.ActiveConnection = MM_SQL_VB_STRING
C_inse.CommandText = "INSERT INTO dbo.St_TaskStudent (taskclass, studentID, semester) VALUES ('" + Replace(C_inse__p1, "'", "''") + "','" + Replace(C_inse__p2, "'", "''") + "','" + Replace(C_inse__p3, "'", "''") + "') "
C_inse.CommandType = 1
C_inse.CommandTimeout = 0
C_inse.Prepared = true
C_inse.Execute()
end if
%>