Выделение конкретных записей в классическом ASP - PullRequest
1 голос
/ 04 августа 2011

На моей странице викторины у меня есть десять вопросов.Когда пользователь отвечает на эти вопросы, я сохраняю идентификаторы неправильных вопросов в массиве.Когда пользователь нажимает на ссылку «показать результат», я собираюсь отобразить все 10 вопросов с их ответами.Я хочу выделить неправильно отвеченный вопрос жирным шрифтом.

Вот мой код:

Dim DB_CONN_STRING
DB_CONN_STRING = "DBQ=" & Server.MapPath("quiz.mdb") & ";"
DB_CONN_STRING = DB_CONN_STRING & "Driver={Microsoft Access Driver (*.mdb)};"
DB_CONN_STRING = DB_CONN_STRING & "DriverId=25;FIL=MS Access;"

Const QUIZ_ID = 1

Dim panswer 

panswer=split((Request.QueryString("marked")),",")

''# collecting wrongly answered question id in panswer
Dim cnnQuiz, rsQuiz, I
Set cnnQuiz = Server.CreateObject("ADODB.Connection")
cnnQuiz.Open DB_CONN_STRING
Set rsQuiz = Server.CreateObject("ADODB.Recordset")
rsQuiz.Open "SELECT * FROM questions WHERE quiz_id=" & QUIZ_ID & " ORDER BY question_number;", cnnQuiz, 3, 1
Do While Not rsQuiz.EOF
    For  I = LBound(panswer) to UBound(panswer)
        if (CStr(rsQuiz.Fields("question_number").Value)) = CStr(panswer(i)) then
            ''# testing whether this question is wrongly answered and if its true then making bold letters.
            response.Write("<b>"&(rsQuiz.Fields("question_number").Value)&")</b>") 
            response.Write("<b>"&(rsQuiz.Fields("question_text").Value)&"</b><br>")
            response.Write("<b>"&(rsQuiz.Fields("correct_answer").Value)&"</b><br>")
        end if
    Next 
    '' # else displaying all 10 questions
    response.Write((rsQuiz.Fields("question_number").Value)&") ") 
    response.Write((rsQuiz.Fields("question_text").Value)&"<br>")
    response.Write((rsQuiz.Fields("correct_answer").Value)&"<br>")
    rsQuiz.MoveNext
Loop
rsQuiz.Close
Set rsQuiz = Nothing
cnnQuiz.Close
Set cnnQuiz = Nothing

Проблема: этот код отображает все 10 записей, но выделяется только первый элемент в массивеи это повторяется дважды.Это существующий веб-сайт, и я должен придерживаться классического ASP.

1 Ответ

1 голос
/ 04 августа 2011

Похоже, вы должны использовать цикл, чтобы определить, выделен ли жирный шрифт или нет, но не включать вывод в цикл.Затем используйте простой if для отправки одного или другого вывода.

Dim DB_CONN_STRING
DB_CONN_STRING = "DBQ=" & Server.MapPath("quiz.mdb") & ";"
DB_CONN_STRING = DB_CONN_STRING & "Driver={Microsoft Access Driver (*.mdb)};"
DB_CONN_STRING = DB_CONN_STRING & "DriverId=25;FIL=MS Access;"

Const QUIZ_ID = 1

Dim panswer 

panswer=split((Request.QueryString("marked")),",")

''# collecting wrongly answered question id in panswer
Dim cnnQuiz, rsQuiz, I
Set cnnQuiz = Server.CreateObject("ADODB.Connection")
cnnQuiz.Open DB_CONN_STRING
Set rsQuiz = Server.CreateObject("ADODB.Recordset")
rsQuiz.Open "SELECT * FROM questions WHERE quiz_id=" & QUIZ_ID & " ORDER BY question_number;", cnnQuiz, 3, 1

Dim bMakeBold
Do While Not rsQuiz.EOF

    bMakeBold = False;
    For  I = LBound(panswer) to UBound(panswer)
        ''# testing whether this question is wrongly answered and if its true then making bold letters.
        If (CStr(rsQuiz.Fields("question_number").Value)) = CStr(panswer(i)) Then
            bMakeBold = True
            Exit For
        End If
    Next

    if bMakeBold then 
        response.Write("<b>"&(rsQuiz.Fields("question_number").Value)&")</b>") 
        response.Write("<b>"&(rsQuiz.Fields("question_text").Value)&"</b><br>")
        response.Write("<b>"&(rsQuiz.Fields("correct_answer").Value)&"</b><br>")
    else
        response.Write((rsQuiz.Fields("question_number").Value)&") ") 
        response.Write((rsQuiz.Fields("question_text").Value)&"<br>")
        response.Write((rsQuiz.Fields("correct_answer").Value)&"<br>")
    end if

    rsQuiz.MoveNext
Loop
rsQuiz.Close
Set rsQuiz = Nothing
cnnQuiz.Close
Set cnnQuiz = Nothing
...