Avatar billede kramerfan Nybegynder
29. november 2000 - 11:51 Der er 16 kommentarer og
1 løsning

Tjek på reservering af tid

Jeg har lavet et script der ser sådan ud, som jeg vil bruge til at tjekke om en bestemt tid( ud af tre) er reserveret på en bestemt dato.

<%\'----------skal tjekke om dato\'en og tiden er taget------------------

strSQL = \" SELECT Tid1, Tid2, Tid3 FROM Kalend WHERE Dato = #\"&session(\"a\")&\"#\"
Set rsSchedule = conn.Execute(strSQL)

If rsSchedule(\"Tid1\") = \"-5\" Then
Response.Redirect \"skema.asp?error=3\"
elseif rsSchedule(\"Tid2\") = \"-4\" Then
Response.Redirect \"skema.asp?error=3\"
elseif rsSchedule(\"Tid3\") = \"-5\" Then
Response.Redirect \"skema.asp?error=3\"
Else
Response.Write \"\"
End If
%>

Problemet er at hvis bare en af tiderne er udfyldt så melder den at tiden er reserveret, men det er jo kun hvis den pågældende tid er reserveret at det er interessant.
Hvordan kommer man frem til det? 
Avatar billede kasseper Nybegynder
29. november 2000 - 11:55 #1
Skal den ikke det ?
Altså hvis tid1 eller tid2 eller tid3 er reserveret, så skal den melde at tid1 eller tid2 eller tid3 er reserveret ? eller hur ?
Avatar billede kramerfan Nybegynder
29. november 2000 - 12:00 #2
Hvis Tid1 er reserveret, men man spørger på Tid2, så skal den altså accepterer valget og sende reservationen videre. Den skal ikke stoppe ved Tid1 og sige at der ikke er en ledig tid.
Desuden virker koden ikke som den er her, hvis der man spørger på en tid på en dato hvor der ikke er reserveret noget. Så melder den

Exception occurred.
Avatar billede kasseper Nybegynder
29. november 2000 - 12:06 #3
Ja men det er jo klart, for du har jo tjek på Tid1 før Tid2.
Du skal lave en funktion der tager et parameter, for så at tjekke på den relevante tid. feks. sådan her :

function tjeckTime(tid)

dim equalsTo
if tid = \"Tid2\" then
equalsTo = \"-4\"
else
equalsTo = \"-5\"
end if

if rsSchedule(tid) = equalsTo Then
Response.Redirect \"skema.asp?error=3\"
end if

end function

Den kan du så kalde, når du skal lave dit tjeck f.eks. sådan her :

strSQL = \" SELECT Tid1, Tid2, Tid3 FROM Kalend WHERE Dato = #\"&session(\"a\")&\"#\"
Set rsSchedule = conn.Execute(strSQL)

Dim MyTime
MyTime = Request.QueryString(\"tid\") \' Dette er måske hvordan du gør iøjeblikket
\' MyTime skal bare indeholde \"Tid1\", \"Tid2\" eller \"Tid3\" alt efter hvilken tid du vil tjekke på.
tjeckTime(MyTime)
Avatar billede kasseper Nybegynder
29. november 2000 - 12:07 #4
Jeg gør opmærksom på at jeg jo ikke kan teste så fejl skal du lige poste her!
Avatar billede kramerfan Nybegynder
29. november 2000 - 12:24 #5
Prøv lige at se denne url.

http://eschle.net/bunkeren/skema.asp

Så kan det være du bedre kan gennemskue hvad jeg vil.
Avatar billede kasseper Nybegynder
29. november 2000 - 12:27 #6
OK, når man klikker på reserver, så sender du en dato og en tid med over til næste side ?
Den tid hedder enten 10-15 = Tid1, 15-19 = Tid2 eller 19-24 = Tid3, så skal du altså se om den man prøver at reservere er optaget ?
Hvorfor kan du  så ikke bruge min funktion. ?
Avatar billede kramerfan Nybegynder
29. november 2000 - 12:29 #7
Problemet er jeg ikke rigtig forstår den. Kan du ikke prøve at forklarer den lidt nærmere?
Avatar billede kramerfan Nybegynder
29. november 2000 - 12:30 #8
Jeg synes det ser ud til at du bruger en Querystring, men det gør jeg jo ikke.
Avatar billede kramerfan Nybegynder
29. november 2000 - 12:33 #9
Mit script ser sådan ud i øjeblikket.

<%\'----------skal tjekke om dato\'en og tiden er taget------------------

strSQL = \" SELECT Tid1, Tid2, Tid3 FROM Kalend WHERE Dato = #\"&session(\"a\")&\"#\"
Set rsSchedule = conn.Execute(strSQL)

\'If rsSchedule.eof then
\' Response.Write \"\"
if rsSchedule(\"Tid1\") = session (\"b\") Then
Response.Redirect \"skema.asp?error=3\"
elseif rsSchedule(\"Tid2\") = session (\"b\") Then
Response.Redirect \"skema.asp?error=3\"
elseif rsSchedule(\"Tid3\") = session (\"b\") Then
Response.Redirect \"skema.asp?error=3\"
Else
Response.Write \"\"
End If
%>
Avatar billede kramerfan Nybegynder
29. november 2000 - 13:56 #10
Nu har jeg noget der se sådan ud. Men der er noget jeg har misforstået for det virker ikke.

<%
strSQL = \" SELECT Tid1, Tid2, Tid3 FROM Kalend WHERE Dato = #\"&session(\"a\")&\"#\"
Set rsSchedule = conn.Execute(strSQL)

Dim MyTime
MyTime = &session (\"b\")&
RESPONSE.WRITE\"mytime\"   
\' Dette er måske hvordan du gør iøjeblikket
\' MyTime skal bare indeholde \"Tid1\", \"Tid2\" eller \"Tid3\" alt efter hvilken tid du vil tjekke på.

tjeckTime(MyTime)

function tjeckTime(tid)

dim equalsTo
if MyTime = rsSchedule(\"Tid1\") then
equalsTo = \"10-15\"
elseif MyTime = rsSchedule(\"Tid2\") then
equalsTo = \"15-19\"
elseif MyTime = rsSchedule(\"Tid3\") then
equalsTo = \"19-24\"
end if

if MyTime = equalsTo Then
Response.Redirect \"skema.asp?error=3\"
end if
end function

%>
Avatar billede kasseper Nybegynder
29. november 2000 - 14:44 #11
OKay, jeg har lige været ude lidt, sorry....
hvad indeholder session(\"b\") og hvorfor har du & rundt om ...?
du bruger jo ikke den parameter du sender med til funktionen...så behøver du den ikke.
Avatar billede kasseper Nybegynder
29. november 2000 - 14:49 #12
Prøv denne :

function tjeckTime(tid)

dim equalsTo
if tid = rsSchedule(\"Tid1\") then
equalsTo = \"10-15\"
else
if tid = rsSchedule(\"Tid2\") then
equalsTo = \"15-19\"
else
if tid = rsSchedule(\"Tid3\") then
equalsTo = \"19-24\"
end if

if tid = equalsTo Then
Response.Redirect \"skema.asp?error=3\"
end if
end function

Avatar billede kramerfan Nybegynder
29. november 2000 - 15:01 #13
session(\"b\") er den tid der komme fra request.form(Tid)
Så det er altså enten 10-15, 15-19 eller 19-24.

Hvad er tid i denne sætning og hvad er det der skal være = med hvad:
if tid = rsSchedule(\"Tid1\") then
Jeg ved godt, at rsSchedule(\"Tid1\") er 10-15 , 15-19 eller 19-24. Men hvor defineres tid
Avatar billede kramerfan Nybegynder
29. november 2000 - 15:08 #14
Jeg har prøvet og sætte det ind du kom med. Men det virker stadig ikke. Jeg kan ikke komme igennem scriptet. DVS den ligger heller ikke noget ned i DB\'en.
Avatar billede kasseper Nybegynder
29. november 2000 - 15:11 #15
tid er i denne sætning, lige præcis det du gerne vil have den til at være !

OK, lidt grundlæggende :

Hvis man laver en funktion, kan man vælge at give den 0 parametre f.eks. myfunction() eller flere parametre myfunktion(tid) (her en parameter, hvis der skal være flere separeres de så med et komma). Tid kan du så bruge inde i din funktionskrop, altså mellem function tjeckTime(tid) og end function. tid får tildelt en værdi ved funktionskaldet, altså idet at du skriver tjckTime(MyTime). Nu køres funktionen tjeckTime så med den værdi som MyTime indeholder, som jo så er session(\"b\")...
Det er lavet sådan så man kan genbruge tjeckTime(tid), med forskellige input...OK ?
Avatar billede kasseper Nybegynder
29. november 2000 - 15:22 #16
OKAY SÅÅÅÅÅÅÅ:
Er det ikke sådan at forstå at brugeren indtaster en dato, og afmærker et tidspunkt på din kalender side. Når han trykker reserver, sendes han til din næste side kalendertjeck.asp hvor kalendertjeck skal kontroller om tiden er optaget eller ej ! Det kan du gøre med denne sætning :

myDate = session(\"a\")
myTime = session(\"b\")
strSQL = \" SELECT * FROM Kalend WHERE Dato = #\" & myDate & \"# and (Tid1 = \'\" & myTime & \"\' or Tid2 = \'\" & myTime & \"\' or Tid3 = \'\" & myTime & \"\')\"
Set rsSchedule = conn.Execute(strSQL)
if NOT rsSchedule.EOF then
  \' OPTAGET
  Response.Redirect \"skema.asp?error=3\"
else
  \' IKKE OPTAGET
  \' GØR DET DU SKAL HER :
end if


Avatar billede kramerfan Nybegynder
29. november 2000 - 15:55 #17
Mange tak for hjælpen. Jeg undskylder lidt de sidste problemer - jeg havde et problem med et asp-tag som ikke var afsluttet, så det var temmelig uoverskueligt en overgang for mig at finde ud af hvad der var galt. Men det sidste script du kom med er lige det, jeg har brug for.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester