Avatar billede tblaster Nybegynder
20. oktober 2002 - 21:08 Der er 30 kommentarer og
2 løsninger

Lidt asp sjov!

Jeg har lidt af en opgave jeg håbede der var en der kunne hjælpe med. Jeg er ved at lave et bookningssystem hvor man vælger en dato og kan så se en tidstavle for dagen og se hvilke bookninger der er lavet. Man vælger så en fri tid og kommer så til den side hvor jeg skal have lidt hjælp til. Jeg vil gerne have lavet en option select der kun viser de slut tider man kan vælge imellem.

Eks.
9:00  Fri
9:30  Fri
10:00  Fri
10:30  Booket
11:00  Fri
11:30  Booket

Hvis man her vælger 9:00 som start så når man kommer til siden skal man kun kunne vælge sluttiderne 9:30 og 10:00!

Option select skal udskrive det som:

<option selected value="9:30">9:30</option>
<option value="10:00">10:00</option>
</select>

Følgende bruges til at hente de tider der er booket fra databasen:

Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("../../db/Booking.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)};Password=1234 ;" & DBPath
'Find Bookninger for valgte dato
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
SQL = "SELECT start FROM booking WHERE dato = #" & dato & "#"

set rs = con.execute (SQL)


Start tiden hentes vha følgende:

request.querystring("Tid")

Jeg håber det er til at forstå og at der er en eller anden der gider hjælpe!
Avatar billede dr-data Nybegynder
21. oktober 2002 - 12:58 #1
det må vel blive noget med:
sql = "select * from db where tider > starttid AND NOT booked"

eller lign. :-)
Avatar billede dr-data Nybegynder
21. oktober 2002 - 13:00 #2
øhh? - lidt for hurtig ;-)
Avatar billede tblaster Nybegynder
21. oktober 2002 - 16:31 #3
det der med and not booked virker jo ikke da der ikke er defineret noget for booked ...

derudover hvordan skal jeg så få den til at skrive tiderne til en option select?
Avatar billede dr-data Nybegynder
21. oktober 2002 - 16:44 #4
ok, mit problem er at jeg ikke kan gennemskue, din opbygning af din database....
Avatar billede dr-data Nybegynder
21. oktober 2002 - 16:45 #5
hvor mange tider, skal der være mulighed for at booke ???
dette for at vide hvad der ville være smartest....
Avatar billede tblaster Nybegynder
21. oktober 2002 - 16:52 #6
Det skal være muligt at booke alle tiderne fra 7:3 op til 20:30 med spring af 30 min ... altså kun hvis der ikke er andre bookninger ... er der en bookning imellem skal det jo kun være muligt at lave en bookning op til det tidspunkt der ligger lige før bookningen som jeg prøvet at forklare i eksemplet i start teksten ... hjalp det?
Avatar billede dr-data Nybegynder
21. oktober 2002 - 16:56 #7
lidt :-)
Avatar billede tblaster Nybegynder
21. oktober 2002 - 17:03 #8
Hvis der er andet du ikke er sikker på eller ikke forstå så skriv endelig!
Avatar billede dr-data Nybegynder
21. oktober 2002 - 17:33 #9
jaja
Avatar billede dr-data Nybegynder
21. oktober 2002 - 17:33 #10
jeg ville lave en tabel, hvor der for hver halve time bliver indsat en post(linie) i tabellen, der bliver bestil fx 07:30-08:30 af bruger 4, og 17-19, af bruger 7:

BrugerID  tid    booked    dato
  4      07:30    true    ##-##-##                      (slut 08:00)
  4      08:00    true    ##-##-##                      (slut 08:30)
  7      17:00    true    ##-##-##                      (slut 17:30)
  7      17:30    true    ##-##-##                      (slut 18:00)
  7      18:00    true    ##-##-##                      (slut 18:30)
  7      18:30    true    ##-##-##                      (slut 19:00)

altså booking pr, halve time....

dertil dit spm.

DIM bookedtider

Sql = "SELECT * from tabel where booked AND dato=#dato#"
Set Rs = Conn.Execute(Sql)

Do while NOT Rs.EOF
If bookedtider <> "" Then
  bookedtider = bookedtider & Rs("tid")
Else
  bookedtider = bookedtider & "," & Rs("tid")
End If
Rs.MoveNext
Loop

'26 halve timer ;-) i array
tider = "07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,"
tider = tider & "12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,"
tider = tider & "16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30"

vivisertiderher = 0

Response.write "<select name=""tilgaengelige_tider"">"

For EACH tid In Split(tider, ",")
If tid = request.querystring("Tid") OR vivisertiderher = 1 Then
  vivisertiderher = 1        'vi viser tider sålænge værdi=1
End If
If InStr(bookedtider, tider)=0 AND vivisertiderher = 1 Then
  Response.write "<option>" & tid & "</option>" & VBCrLf
Else
  vivisertiderher = 0
End If
Next

Response.write "</select>"
Avatar billede dr-data Nybegynder
21. oktober 2002 - 17:35 #11
det burde kunne gøre det......... :-)
Avatar billede tblaster Nybegynder
21. oktober 2002 - 17:40 #12
Den der DIM bookedtider hvad er den lige god for?
Avatar billede dr-data Nybegynder
21. oktober 2002 - 17:45 #13
den deklarer blot variablem tid ;-) ik meget andet, det er ikke absolut nødvendig, men meget god at bruge......
Avatar billede dr-data Nybegynder
21. oktober 2002 - 17:47 #14
deklarerer ;-)
Avatar billede tblaster Nybegynder
21. oktober 2002 - 17:51 #15
Den dim du laver er det den du henviser til med bookedtider for når jeg prøver at bruge det får jeg:

Item cannot be found in the collection corresponding to the requested name or ordinal.
Avatar billede dr-data Nybegynder
21. oktober 2002 - 19:32 #16
hmmm, ja det er den samme jeg refferer til, men jeg kan se at jeg også havde lavet en lille fejl....

jeg har rettet : "If InStr(bookedtider, tider)" til
"If InStr(bookedtider, tid)"

her er eksemplet i funktion, bare gem det som en asp-fil :-)

<%
DIM bookedtider

bookedtider = "14:30,15:00,15:30"

'26 halve timer ;-) i array
tider = "07:00,07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,"
tider = tider & "12:00,12:30,13:00,13:30,14:00,14:30,15:00,15:30,"
tider = tider & "16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00,20:30"

vivisertiderher = 0

Response.write "<select name=""tilgaengelige_tider"">"

For EACH tid In Split(tider, ",")
' If tid = "10:00" OR vivisertiderher = 1 Then
' If tid = "14:00" OR vivisertiderher = 1 Then

' If tid = request.querystring("Tid") OR vivisertiderher = 1 Then
  vivisertiderher = 1        'vi viser tider sålænge værdi=1
End If
If InStr(bookedtider, tid)=0 AND vivisertiderher = 1 Then
  Response.write "<option>" & tid & "</option>" & VBCrLf
Else
  vivisertiderher = 0
End If
Next

Response.write "</select>"
%>
Avatar billede dr-data Nybegynder
21. oktober 2002 - 19:32 #17
dog uden access delen, så du selv lige må fylde ud, eller bede om hjælp til :-)
Avatar billede tblaster Nybegynder
21. oktober 2002 - 20:10 #18
Det du har lavet er ved lavet ud fra at der er booket i tiderne 14:30,15:00,15:30 og ikke fra det jeg har i databasen hvilket jeg jo skal bruge!
Avatar billede dr-data Nybegynder
21. oktober 2002 - 21:35 #19
det er det samme........ jeg gentager min rettelse....

jeg har rettet : "If InStr(bookedtider, tider)" til
"If InStr(bookedtider, tid)"


jeg gave dette eksempel der via cut&paste skulle virke fejlfrit.... jeg har ikke acces på den maskine jeg sidder ved... og kan derved ikke selv teste op mod dette, men den fejl du beskrev, kan jeg ikke lige tyde.... jeg har ikke fundet yderligere fejl, hvis du ønsker hjælp til access delen, kan dette også gives, bare ik lige nu, pga. den maskine jeg benytter lige nu :-)
Avatar billede dr-data Nybegynder
21. oktober 2002 - 21:37 #20
prøv evt. at sammenligne de 2 koder.....

request.querystring("Tid") er som du selv skrev starttiden....

de linier som starter med "'" er bare udkommenterede linier (eksempler)
Avatar billede tblaster Nybegynder
21. oktober 2002 - 21:46 #21
jeg ser om jeg kan komme vidre med det ... hvis du får adgang til en computer med access så vil jeg meget gerne have at du ser om du kan hjælpe vidre ...
Avatar billede dr-data Nybegynder
21. oktober 2002 - 21:49 #22
har mulighed for det i morgen........
Avatar billede dr-data Nybegynder
21. oktober 2002 - 22:08 #23
fik det lavet med lidt hjælp fra en kammerat....
Avatar billede tblaster Nybegynder
22. oktober 2002 - 14:08 #25
Jeg har prøvet at overføre det over i min og rette det til men nu skriver den en option select og derefter alle tiderne og ikke tidene i option selecten ...

Koden ser således ud:

<%
DIM bookedtider

requesttid = request.querystring("Tid")

Set Conn = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("../../db/Booking.mdb")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};Password=1234 ;" & DBPath
'Find Bookninger for valgte dato
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
Sql = "SELECT * from booking WHERE dato = #" & dato & "#"
set rs = conn.execute (SQL)

Do while NOT Rs.EOF
If bookedtider <> "" Then
  bookedtider = bookedtider & Rs("start")
Else
  bookedtider = bookedtider & "," & Rs("start")
End If
Rs.MoveNext
Loop

'26 halve timer ;-) i array
tider = "07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,"
tider = tider & "12:30,13:00,13:30,14:00,14:30,15:00,15:30,"
tider = tider & "16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00"

vivisertiderher = 0

Response.write "<select name=""tilgaengelige_tider"">"

For EACH tid In Split(tider, ",")
If tid = requesttid OR vivisertiderher = 1 Then
  vivisertiderher = 1        'vi viser tider sålænge værdi=1
End If
If InStr(bookedtider, tid)=0 AND vivisertiderher = 1 Then
  Response.write "<option>" & tid & "</option>" & VBCrLf
Else
  vivisertiderher = 0
End If
Next

If requesttid = "" Then Response.write "<option>" & "Ingen tider ledige, eller ingen starttid angivet..." & "</option>" & VBCrLf

Response.write "</select>"
%>
Avatar billede tblaster Nybegynder
22. oktober 2002 - 16:03 #26
Wierd ... hvis jeg kigger på kilde koden når siden er åbnet skirver den følgende:

<select name="slut"><option>09:00</option>
<option>09:30</option>
<option>10:00</option>
<option>10:30</option>
<option>11:00</option>
<option>11:30</option>
<option>12:00</option>
<option>12:30</option>
<option>13:00</option>
<option>13:30</option>
<option>14:00</option>
<option>14:30</option>
<option>15:00</option>
<option>15:30</option>
<option>16:00</option>
<option>16:30</option>
<option>17:00</option>
<option>17:30</option>
<option>18:00</option>
<option>18:30</option>
<option>19:00</option>
<option>19:30</option>
<option>20:00</option>
</select>

Men det viser den ikke ... den skriver tiderne udenfor den der option select :-(
Avatar billede tblaster Nybegynder
22. oktober 2002 - 16:14 #27
Min fejl ... der var en konflikt i min kode der gjorde fejlen :-D

Nu har jeg en tilfældig dag 2 bookninger en kl 14:00 og en kl 17:30 ... ligemeget hvornår jeg vælger at booke så kan jeg booke til kl 17:00 også selvom at hvis tiden er før 14:00 så skal jeg kun kunne booke til 13:30! Hvad kan dette skyldes?
Avatar billede tblaster Nybegynder
22. oktober 2002 - 16:59 #28
Jeg har fundet fejlen men ved ikke hvordan det skal fikses ... den lagre kun den sidste booket tid i bookedtider og ikke dem alle ... hvordan fikses det?
Avatar billede dr-data Nybegynder
22. oktober 2002 - 18:18 #29
det den lagrer er start tid + sluttid, dvs. altid kun 2 halve timer....

du skal bruge en metode, der tilføjer alle tiderne imellem også....

dette burde virke...

'26 halve timer ;-) i array
tider = "07:30,08:00,08:30,09:00,09:30,10:00,10:30,11:00,11:30,12:00,"
tider = tider & "12:30,13:00,13:30,14:00,14:30,15:00,15:30,"
tider = tider & "16:00,16:30,17:00,17:30,18:00,18:30,19:00,19:30,20:00"

viindsaettertiderher = 0

For EACH tid In Split(tider, ",")
If tid = starttid Then
  viindsaettertiderher = 1        'vi indsætter tider sålænge værdi=1
End If
If tid = sluttid Then
  viindsaettertiderher = 0
End If

dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY

If viindsaettertiderher = 1 Then
SqlAdd = "INSERT INTO Bookings (BrugerID,Tid,dato) VALUES (" & BrugerID & ", '" & tid & "', #" & dato & "#)"
Conn.Execute(SqlAdd)
End If
Next
Avatar billede tblaster Nybegynder
22. oktober 2002 - 18:23 #30
Jeg har fået det til at virke på en lidt anden måde ved lidt hjælp fra en ven ... smid et svar og du skal få nogle point!
Avatar billede dr-data Nybegynder
22. oktober 2002 - 18:30 #31
no prob...
Avatar billede tblaster Nybegynder
22. oktober 2002 - 18:36 #32
.
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