Выберите / Option / Value при изменении, используя Classic ASP

1

Я попытался создать значение параметра выбора при изменении с помощью классического ASP, но это не сработало. Нет ошибки, но когда я смотрю, ничего не всплывает со второго выбора.

Мне нравится выбирать имя студента из первого окна выбора, если оно совпадает, а затем второе поле показывает название курса, а в третьем поле отображается семестр.

Мне нравится хранить имена студентов и StudentID в DB.

Может ли кто-нибудь помочь?

Стол для студентов

StudentID   Firstname   Lastname
-------------------------------
01         AAA         LN1
02         BBB         LN2
03         CCC         LN3

Таблица классов

Course    CourseID StudentID Semester
-------------------------------------
History   C01      01        Spring
History   C01      01        Summer
Math      C02      02        Spring
Math      C02      02        Fall           

Код

            <%          Set oRs = Server.CreateObject("adodb.recordset")
                            strSQL = " SELECT StudentID, Firstname, Lastname FROM Students Where StudentID = '" & Request.ServerVariables("LOGON_Student") & "'"
                            oRs.Open strSQL, myConn
                            sName = oRs("Lastname") & ", " & oRs("Firstname")
                            if not oRs.eof then %>
                                            <select name="Students" id="selectStudent" onChange="this.form.action='default.asp';this.form.submit();">
            <option value="<%= oRs(0) %>" <% if trim(request.Form("Students")) = trim(oRs(0)) then response.write " selected "end if %>><%= sName %></option>
            <option value="<%= oRs("StudentID") %>" hidden></option>
                                            </select>
                            <%          end if
            %>
             <%          if request.Form("Students") <> "" then
                            strSQL = " SELECT Course FROM Class WHERE StudentID = '" & request.Form("StudentID") & "'"
                            Set oRs = Server.CreateObject("adodb.RecordSet")
                            oRs.Open strSQL, myConn
                            if not oRs.eof then %>
                                            <select name="Class" id="selectClass" onChange="this.form.action='default.asp';this.form.submit();">
                                                            <% do until oRs.eof  %>
                                                                            <option value="<%= oRs(0) %>" <% if trim(request.Form("Class")) = trim(oRs(0)) then response.write " selected "end if %>><%= oRs(0) %></option>
                                                            <% oRs.MoveNext
                                                                            loop       %>
                                            </select>
                            <% end if
                            end if
            %>
            <%          if request.Form("Class") <> "" then
                            strSQL = " SELECT Semester FROM Class WHERE Course = '" & request.Form("Course") & "'"
                            Set oRs = Server.CreateObject("adodb.RecordSet")
                            oRs.Open strSQL, myConn
                            if not oRs.eof then %>
                                            <select name="Class" id="selectClass" onChange="this.form.action='default.asp';this.form.submit();">
                                                            <% do until oRs.eof  %>
                                                                            <option value="<%= oRs(0) %>" <% if trim(request.Form("Class")) = trim(oRs(0)) then response.write " selected "end if %>><%= oRs(0) %></option>
                                                            <% oRs.MoveNext
                                                                            loop       %>
                                            </select>
                            <% end if
                            end if
            %>
Теги:
asp-classic
vbscript

1 ответ

0
Лучший ответ

Вы используете неправильное значение в своей инструкции SQL.

Вы должны использовать имя первого выпадающего элемента, а не имя поля базы данных.

Кроме того, вы действительно лучше используете параметры, а не вводите значение напрямую, так как это может позволить пользователю взять под контроль вашу базу данных и, возможно, весь сервер. (Чтобы узнать больше, читайте об атаках SQL Injection.)

Итак, правильный SQL:

strSQL = "SELECT Course FROM Class WHERE StudentID = ?"
Set oCommand = Server.Createobject("ADODB.Command")
Set oCommand.ActiveConnection = myConn
oCommand.CommandText = strSQL
oCommand.Parameters.Append(oCommand.CreateParameter("StudentID", 3, , , Request.Form("Students")) )
Set oRS = oCommand.Execute

Обязательно удалите строку oRs.Open strSQL, myConn из вашего кода при ее использовании.

Как вы видите, я изменил Request.Form("StudentID") на Request.Form("Students"), и теперь запрос должен вернуть результаты.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню