Skripti http://oppe.admin.ut.ee/ained/tulemus/komplexkontroll.asp kood
VÄRVIDE TÄHENDUSED
| |
Serveripoolne skript
|
| |
Kliendipoolne skript
|
| |
Link
|
| |
Include-lause
|
| |
Freimid
|
| |
Kommentaarid
|
| |
Objekti link
|
| |
HTML ja tavaline tekst
|
<%
'Tartu Ülikooli õppeaineregistri WWW-liides
'Autor: Aulis Sibola
'Juhendaja: Jaanus Pöial
'Komplekspäringu andmete kontrolli lehekülg.
'Kontrollitakse kasutaja andmed ja moodustatakse nende põhjal päringustring,
'mis pannakse sessioonimuutujasse Paring.
'Siit edasi minekuks on link päringulehele.
%>
<!--#INCLUDE file="header.lisamine"-->
<!--#INCLUDE file="komplex.tyhjax"-->
<%
'Siia lehele saab sattuda ainult komplekspäringu pealehelt:
if LCase(Request.ServerVariables("HTTP_REFERER")) <> "http://madu/ained/tulemus/komplex.asp" then
Response.Redirect "komplex.asp"
end if
%>
<html>
<head>
<title>Komplekspäring andmebaasis: andmete kontroll</title>
</head>
<!--#INCLUDE file="body.htm"-->
<center>
<h2>Teie poolt küsitu kontroll:</h2>
</center>
<font size=+1 color="#800040">
<ul>
<%
'Kontroll:
'Palju valeandmeid on:
valeandmed = 0
'Aine nimed peavad olema pikemad kui 3 sümbolit ja ei tohi sisaldada
'ülakoma (').
'Eestikeelne nimetus:
if len(Request.Form("eestinimi")) > 0 then
if len(Request.Form("eestinimi")) < 3 then
Response.Write "<li>Kuna sisestatud eestikeelne nimetus (selle osa) on liiga " & _
"lühike (alla 3. sümboli pikk), siis seda otsingus ei arvestata.<br> " & vbNewLine
valeandmed = valeandmed + 1
else
if InStr(Request.Form("eestinimi"), "'") > 0 then
Response.Write "<li>Praeguses versioonis ei tohi aine nimetus sisaldada " & _
"ülakoma(') ja seega eestikeelset nimetust otsingus ei arvestata.<br>" & vbNewLine
valeandmed = valeandmed + 1
else
nimi = true
Response.Write "<li>Eestikeelne nimetus "
if Request.Form("eestivalik") = "on" then
Response.Write "on: "
else
Response.Write "sisaldab: "
end if
Response.Write Request.Form("eestinimi") & ".<br>" & vbNewLine
end if
end if
else
valeandmed = valeandmed + 1
end if
'Inglisekeelne nimetus:
if len(Request.Form("inglisenimi")) > 0 then
if len(Request.Form("inglisenimi")) < 3 then
Response.Write "<li>Kuna sisestatud inglisekeelne nimetus (selle osa) on liiga " & _
"lühike (alla 3. sümboli pikk), siis seda otsingus ei arvestata.<br> " & vbNewLine
valeandmed = valeandmed + 1
else
if InStr(Request.Form("inglisenimi"), "'") > 0 then
Response.Write "<li>Praeguses versioonis ei tohi aine nimetus sisaldada " & _
"ülakoma(') ja seega inglisekeelset nimetust otsingus ei arvestata.<br>" & vbNewLine
valeandmed = valeandmed + 1
else
inimi=true
Response.Write "<li>Inglisekeelne nimetus "
if Request.Form("inglisevalik") = "on" then
Response.Write "on: "
else
Response.Write "sisaldab: "
end if
Response.Write Request.Form("inglisenimi") & ".<br> " & vbNewLine
end if
end if
else
valeandmed = valeandmed + 1
end if
'Maht peab olema numbriline, samas ei tohi ta olla negatiivne arv.
if len(Request.Form("maht")) > 0 then
if IsNumeric(Request.Form("maht")) then
if Request.Form("maht") > 0 then
Response.Write "<li>Aine maht " & Request.Form("mahuvalik") & ": " & Request.Form("maht") & ".<br>" & vbNewLine
mahukontr = true
else
Response.Write "<li>Kuna maht on negatiivne, siis seda otsingus ei " & _
"arvestata.<br>" & vbNewLine
valeandmed = valeandmed + 1
end if
else
Response.Write "<li>Kuna maht pole numbriline, siis seda otsingus ei " & _
"arvestata.<br>" & vbNewLine
valeandmed = valeandmed + 1
end if
else
valeandmed = valeandmed + 1
end if
'Õppekeel:
if Request.Form("keel").Count > 0 then
keelekontr = true
Response.Write "<li>"
if Request.Form("keel").Count = 1 then
Response.Write "Õppekeel on: "
else
Response.Write "Õppekeel võib olla: "
end if
Response.Write Request.Form("keel") & ".<br>" & vbNewLine
else
valeandmed = valeandmed + 1
end if
'Õppekavad:
'Kui õppekavasid on valitud üle kümne siis loetakse see veaks,
'kuna otsimine läheb aeglaseks.
if Request.Form("oppekava").Count > 0 then
Response.Write "<li>"
if Request.Form("oppekava").Count > 10 then
Response.Write "Kuna üle küme õppekava ainete " & _
"leidmine on küllaltki aeglane, siis õppekavasid " & _
"otsingus ei arvestata.<br>" & vbNewLine
valeandmed = valeandmed + 1
else
kavakontr = true
if Request.Form("oppekava").Count = 1 then
Response.Write "Aine kuulub õppekavasse: "
else
Response.Write "Aine võib kuuluda järgnevatesse õppekavadesse: "
end if
Response.Write Request.Form("oppekava") & ".<br>" & vbNewLine
end if
else
valeandmed = valeandmed + 1
end if
'Aste:
if Request.Form("aste").Count > 0 then
astmekontr = true
Response.Write "<li>"
if Request.Form("aste").Count = 1 then
Response.Write "Aine võib kuuluda järgmisse astmesse: "
else
Response.Write "Aine võib kuuluda järgmistesse astmetesse: "
end if
if Request.Form("aste")(1) = "" then
Response.Write "üldised"
end if
Response.Write Request.Form("aste") & ".<br>" & vbNewLine
else
valeandmed = valeandmed + 1
end if
'Õppejõud:
'Kui õppejõudusid on valitud üle kümne, siis loetakse see veaks (otsing aeglane).
if Request.Form("oppejoud").Count > 0 then
Response.Write "<li>"
if Request.Form("oppejoud").Count > 10 then
Response.Write "Kuna üle kümne õppejõu " & _
"ainete leidmine on liiga aeglane, siis õppejõudusid " & _
"otsingus ei arvestata.<br>" & vbNewLine
valeandmed = valeandmed + 1
else
oppkontr = true
if Request.Form("oppejoud").Count = 1 then
Response.Write "Ainet loeb: "
else
Response.Write "Ainet võivad lugeda: "
end if
For i = 1 To Request.Form("oppejoud").Count
Kes = Split(Request.Form("oppejoud")(i),", ",2)
Response.Write Kes(1) & " " & Kes(0)
if i <> Request.Form("oppejoud").Count then
Response.Write ", "
end if
Next
Response.Write ".<br>" & vbNewLine
end if
else
valeandmed = valeandmed + 1
end if
'Jooksev aasta:
if Request.Form("selaastal") = "OK" then
selaastal = true
'Ainult õppeaastal toimuvaid aineid ei väljastata:
if valeandmed = 7 then
Response.Write "<li>Kõikide sel õppeaastal " & _
"loetavate ainete väljastamine läheks liiga pikaks.<br>" & vbNewLine
else
Response.Write "<li>Aine toimub sel õppeaastal.<br>" & vbNewLine
end if
end if
Response.Write "</ul></font>" & vbNewLine
'Kui kõik peale õppeaastal toimumise on valesti, siis otsimist ei toimu:
if valeandmed = 7 then
%><h3><font color=red>Kahjuks olete valinud liiga vähe algandmeid ja nendega
ei saa päringut teha. Seega pöörduge
<a href=komplex.asp>eelmisele lehele</a> tagasi.</font></h3>
<!--#INCLUDE file="footer.htm"-->
<%
Response.End
end if
'Päringustringi moodustamine vastavalt sisendandmetele:
Paring = "select DBA_aine.teaduskond, DBA_aine.instituut, " & _
"DBA_aine.oppetool, DBA_aine.nr, DBA_aine.algoppeaasta, " & _
"DBA_aine.loppoppeaasta, DBA_Tekst.nimi " & _
"from DBA_aine, DBA_Tekst "
if kavakontr or astmekontr then
Paring = Paring & ", Kuulajaskond "
end if
if oppkontr then
Paring = Paring & ", DBA_tavalugeja "
end if
if selaastal then
Paring = Paring & ", DBA_ajakava "
end if
Paring = Paring & "where DBA_Aine.kood = DBA_Tekst.aine and " & _
"DBA_Tekst.lõppaasta is Null "
if nimi then
if Request.Form("eestivalik") = "on" then
Paring = Paring & "and DBA_Tekst.nimi = '" & Request.Form("eestinimi") & "' "
else
Paring = Paring & "and DBA_Tekst.nimi Like '%" & Request.Form("eestinimi") & "%' "
end if
end if
if inimi then
if Request.Form("inglisevalik") = "on" then
Paring = Paring & "and DBA_Tekst.inimi = '" & Request.Form("inglisenimi") & "' "
else
Paring = Paring & "and DBA_Tekst.inimi Like '%" & Request.Form("inglisenimi") & "%' "
end if
end if
if mahukontr then
Paring = Paring & "and DBA_Aine.maht "
if Request.Form("mahuvalik") = "on" then
Paring = Paring & "= "
elseif Request.Form("mahuvalik") = "on väiksem kui" then
Paring = Paring & "< "
else
Paring = Paring & "> "
end if
Paring = Paring & Request.Form("maht") & " "
end if
if keelekontr then
Paring = Paring & "and DBA_Aine.keel In ("
For i = 1 To Request.Form("keel").Count
Paring = Paring & "'" & Request.Form("keel")(i) & "'"
if i <> Request.Form("keel").Count then
Paring = Paring & ", "
end if
Next
Paring = Paring & ") "
end if
if kavakontr or astmekontr then
Paring = Paring & " and DBA_Aine.kood = Kuulajaskond.aine "
end if
if kavakontr then
Paring = Paring & "and Kuulajaskond.õppekava In ("
For i = 1 To Request.Form("oppekava").Count
Paring = Paring & "'" & Request.Form("oppekava")(i) & "'"
if i <> Request.Form("oppekava").Count then
Paring = Paring & ", "
end if
Next
Paring = Paring & ") "
end if
if astmekontr then
Paring = Paring & "and Kuulajaskond.aste In ("
For i = 1 To Request.Form("aste").Count
if Request.Form("aste")(i) = "" then
Paring = Paring & "' '"
else
Paring = Paring & "'" & Request.Form("aste")(i) & "'"
end if
if i <> Request.Form("aste").Count then
Paring = Paring & ", "
end if
Next
Paring = Paring & ") "
end if
%><!--#INCLUDE file="jooksevaasta.inc"-->
<%
'Õppejõud:
if oppkontr then
esimenelannu = false
Paring = Paring & "and DBA_Aine.kood = DBA_tavalugeja.aine and " & _
"(DBA_tavalugeja.aastani is null or " & _
"(DBA_tavalugeja.aastast = " & JooksevAasta & " and " & _
"DBA_tavalugeja.aastani = DBA_tavalugeja.aastast)) "
'Õppejõud edastati nimega, mitte andmebaasi koodiga (kuna leidub ühe
'nimega õppejõude) ja nüüd leitakse nime(de)le vastav(ad) kood(id).
'Avame ühenduse andmebaasiga:
'Ühenduse loomine:
Set yhendus = Server.CreateObject("ADODB.Connection")
'Andmebaasi avamine:
yhendus.Open "Aineregister"
Paring = Paring & "and DBA_tavalugeja.lektor In ("
For i = 1 To Request.Form("oppejoud").Count
Kes = Split(Request.Form("oppejoud")(i),", ",2)
'Kui õppejõu nimi sisaldab ülakoma võrreldakse kõiki andmebaasis olevaid õppejõude
'sellega:
if Instr(Request.Form("oppejoud")(i),"'") > 0 then
'Päring:
Opparing = "select kood, enimi, pnimi from DBA_lektor"
'Teeme päringu:
Set lektor = yhendus.Execute(Opparing)
Do while not lektor.EOF
if lektor("enimi") = Kes(1) and lektor("pnimi") = Kes(0) then
if esimenelannu then
Paring = Paring & ", "
else
esimenelannu = True
end if
Paring = Paring & lektor("kood")
end if
lektor.MoveNext
loop
lektor.close
'Kui nimes pole ülakoma, võetakse andmebaasist need õppejõud kelle
'nime küsiti:
else
'Päring:
Opparing = "select kood from DBA_lektor where enimi = '" & _
Kes(1) & "' and pnimi = '" & Kes(0) & "'"
'Teeme päringu:
Set lektor = yhendus.Execute(Opparing)
Do while not lektor.EOF
if esimenelannu then
Paring = Paring & ", "
else
esimenelannu = True
end if
Paring = Paring & lektor("kood")
lektor.MoveNext
loop
lektor.close
end if
Next
Paring = Paring & ") "
yhendus.close
end if
if selaastal then
Paring = Paring & "and DBA_Aine.kood = DBA_ajakava.aine and " & _
"DBA_ajakava.aasta = " & JooksevAasta & " "
end if
Paring = Paring & "group by DBA_Tekst.sort, DBA_Tekst.nimi, " & _
"DBA_aine.teaduskond, DBA_aine.instituut, DBA_aine.oppetool, " & _
"DBA_aine.nr, DBA_aine.algoppeaasta, DBA_aine.loppoppeaasta " & _
"order by DBA_Tekst.sort, DBA_aine.teaduskond, " & _
"DBA_aine.instituut, DBA_aine.oppetool, DBA_aine.nr"
'Sessioonimuutujate omistamine:
'Päring:
Session("Paring") = Paring
'Lisakontroll:
Session("OK") = True
%>
<font color=green size=+1>Kuna aineid võib olla mitu,
väljastatakse leitud ainete nimekiri.</font><p>
<a href=komplexparing.asp><img src=/gifs/oigedandmed.gif border=0 alt="Jah! Andmed on õiged, siirdume otsima!"></a>
<!--#INCLUDE file="footer.htm"-->