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 " & _
   "&uuml;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 " & _
   "&uuml;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 "&Otilde;ppekeel on: "
  else
   Response.Write "&Otilde;ppekeel v&otilde;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 &uuml;le k&uuml;me &otilde;ppekava ainete " & _
   "leidmine on k&uuml;llaltki aeglane, siis &otilde;ppekavasid " & _
   "otsingus ei arvestata.<br>" & vbNewLine
   valeandmed = valeandmed + 1
  else
   kavakontr = true
   if Request.Form("oppekava").Count = 1 then
    Response.Write "Aine kuulub &otilde;ppekavasse: "
   else
    Response.Write "Aine v&otilde;ib kuuluda j&auml;rgnevatesse &otilde;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&otilde;ib kuuluda j&auml;rgmisse astmesse: "
  else
   Response.Write "Aine v&otilde;ib kuuluda j&auml;rgmistesse astmetesse: "
  end if
  if Request.Form("aste")(1) = "" then
   Response.Write "&uuml;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 &uuml;le k&uuml;mne &otilde;ppej&otilde;u " & _
   "ainete leidmine on liiga aeglane, siis &otilde;ppej&otilde;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&otilde;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&otilde;ikide sel &otilde;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&auml;he algandmeid ja nendega
ei saa p&auml;ringut teha. Seega p&ouml;&ouml;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&otilde;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"-->