24. december 2002 - 13:39Der er
2 kommentarer og 2 løsninger
Datoer
Hej
Jeg har et script, som går ned i databasen og laver en sorteret streng bestående af datoer - starten fra i morgen og et år frem - som tidligere er blever reserveret. Og det virker fint. Sådan ser strengen ud:
24/12/2002, 26/12/2002, 27/12/2002, 30/12/2002
Nu mangler jeg bare, at scriptet finder de datoer, som ikke er listet i strengen og smider dem op i en dropdown-box. Derved kan man i dropdown-boxen vælge de datoer, som endnu ikke er blevet reserevet.
De ikke-reserverede dato, som kunne vælges i dropdown-boxen, skal starte fra i morgen til et år frem.
<% Set myConn=Server.CreateObject("ADODB.Connection") myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb")) strSQL = "Select distinct datopublish from search where (datopublish between #" & Date() + 1 & "# and #" & Date() + 364 & "#) order by datopublish" set rs = myConn.execute(strSQL)
do while not rs.EOF if isDate(rs("datopublish")) then myDates = myDates & rs("datopublish") & ", " End If rs.MoveNext Loop
if not myDates = "" then myDates = left(myDates,len(myDates)-2) end if %>
Så prøv med dette hvor du laver select/drop down boksen:
<% myDates = "24/12/2002, 26/12/2002, 27/12/2002, 30/12/2002" myDateArr = Split(myDates,",") %> <select name="test"> <% dato = date datoSlut = DateAdd("yyyy",1,date) i = 0 do while dato <= datoSlut if CDate(myDateArr(i)) <> CDate(dato) then Response.Write "<option value=""" & dato & """>" & dato & "</option>" else i = i + 1 if i > ubound(myDateArr) then i = ubound(myDateArr) end if dato = dateAdd("d",1,dato) loop %> </select>
Jeg rette det lidt til, og så virkede det :-) Kan jeg ikke også få dig til at udbygge koden efter følgende princip:
Hvis der er mere end 50 reserverede datoer (altså hvis dato-strengen har en vis længde eller noget lignende kan konstateres), skal det være muligt at reserverere en dato op til 2 gange. Og hvis der er mere end 100 datoer, skal det være muligt at reservere en dato op til 3 gange... 150 = 4, 200 = 5 osv.
<% Set myConn=Server.CreateObject("ADODB.Connection") myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb")) strSQL = "Select distinct datopublish from search where (datopublish between #" & Date() + 1 & "# and #" & Date() + 364 & "#) order by datopublish" set rs = myConn.execute(strSQL)
do while not rs.EOF if isDate(rs("datopublish")) then myDates = myDates & rs("datopublish") & ", " End If rs.MoveNext Loop
if not myDates = "" then myDates = left(myDates,len(myDates)-2) end if
<% dato = date () + 1 datoSlut = DateAdd("yyyy",1,date) i = 0 do while dato <= datoSlut if CDate(myDateArr(i)) <> CDate(dato) then Response.Write "<option value=""" & dato & """>" & dato & "</option>" else i = i + 1 if i > ubound(myDateArr) then i = ubound(myDateArr) end if dato = dateAdd("d",1,dato) loop %>
Mange tak for hjælpen - så vil jeg i gang med at programmere med den sidste stump kode, som du har givet mig.
Synes godt om
Ny brugerNybegynder
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.