Hej!
En sida som jag skapar har jag lite problem med nu, jag vill lista alla ämnen och tillhörande klasser i två olika select satser.
Informationen hämtar jag från en databas där fältet med ämnen och tillhörande klasser ligger i samma post. Jag skiljer dem ifrån varandra med kommatecken och stjärnor.
Ex:
Spanska - 2D*2E*3D, EngelskaA - 1A*1C*1E, EngelskaB - 2A*2D*2E
Alltså 2D, 2E och 3D har spanska, 1A, 1C och 1E har engelska A osv.
När jag delar upp dem använder jag mig av detta sätt:
' Dela upp klientens ämnen och klasser i ämnet i arrays
arrSubjectAndClass = split(objRS("subjects"), ", ")
countSubjectAndClass = uBound(arrSubjectAndClass) + 1
X = 0
Do Until X = countSubjectAndClass
xTemp = split(arrSubjectAndClass(X), " - ")
If sSubject = "" then
sSubject = xTemp(0)
Else
sSubject = sSubject & ", " & xTemp(0)
End If
If sKlasser = "" then
sKlasser = xTemp(1)
Else
sKlasser = sKlasser & ", " & xTemp(1)
End If
X = X + 1
Loop
' Dela upp bara ämnena i en array
arrSubject = split(sSubject, ", ")
' Räkna antalet ämnen
countSub = uBound(arrSubject) + 1
X = 0
%>
info info info
<%
' Loopa alla ämnen
Do Until X = countSub
Response.Write "<option value=""" & arrSubject(X)
' Kolla om ämnet är valt, isf markera det
If Request.QueryString("subject") = arrSubject(X) then
Response.Write """ selected>" & arrSubject(X) & "</option>"
Else
Response.Write """>" & arrSubject(X) & "</option>"
End If
X = X + 1
Loop
' Kolla om läraren har en ansvarsklass, och skriv ut den
If Not objRS("klass") = "-666" then
' Kolla om valt ämne är ansvarsklassen, isf markera den
If Request.QueryString("subject") = objRS("klass") then
Response.Write "<option value=""" & objRS("klass") & """ selected>" & objRS("klass") & "</option>"
Else
Response.Write "<option value=""" & objRS("klass") & """>" & objRS("klass") & "</option>"
End If
end if
%>
</select></td>
<td align="left"><select name="class" id="cls" onChange="updateStudents();">
<%
If Not Request.QueryString("subject") = "" then
Dim countClass, arrClass, ClassEs, countClassEs
ClassEs = split(sKlasser, ", ")
countClassEs = uBound(ClassEs) + 1
X = 0
Do Until X = countClassEs
If InStr(1, ClassEs(X), Request.QueryString("subject")) then
arrClass = split(ClassEs(X), "*")
End If
X = X + 1
Loop
If IsArray(arrClass) then
countClass = uBound(arrClass) + 1
X = 0
Do Until X = countClass
Response.Write "<option value=""" & arrClass(X) & """>" & arrClass(X) & "</option>"
X = X + 1
Loop
end if
Response.Write "<option> </option>"
Else
Response.Write "<option> </option>"
End If
X = 0
%>
</select></td>
Det här fungerar inte, troligtvis skiter det sig på InStr(1,... då den inte räknar med första bokstaven i ämnet vilket resulterar i att det inte finns några ämnen för t.ex. ngelskaA eller panska
Hoppas nån vet hur jag ska lösa det!
Lessen för all kod, vet att det blev lite mycket :l
------------------
SPiN, bjorne.w@telia.com