Om en användare skriver in på ett html formulär Vet inte om jag har förstått rätt, men... Varför ge användaren möjligheten att skriva in ett datum då när det endast skall gälla en speciell period. Kan du inte använda t ex veckonummer eller kanske låta användaren välja en lördag-lördag period från en select? Jo det tänkte jag lite på också. Det går ju helt klart att räkna hur många lördagar det finns i varje månad... men jag undrar om det inte borde vara enklare(fiffigare/smartare) om du istället tänker år/veckonummer istället för år/månad/dagar..? Ok, det har du nog rätt i för på ett år så finns det ju bara unika veckor. ok... selectbox med antal veckor Så jag testade det och det gav mig 52 veckor ;) borde ju funka... jättebra förståelse övning detta ;) så här steg 3 Har löst det nu tack vare din hjälp =) <b>Har löst det nu tack vare din hjälp =)</b>begränsa inskrivning av datum till enbart vecka lörd-lörd
(datum format yyyy-mm-dd)
från datum
till datum
Hur begränsar man användaren till att enbart skriva in
vecka från lörd-lörd i vilken månad som helst och från år 2006?
Hur skriva?Sv: begränsa inskrivning av datum till enbart vecka lörd-lörd
Dels minskar ju risken för felaktigheter i din databas och sen måste ju det underlätta för användaren att inte behöva kolla vilket datum en speciell lördag har...Sv:begränsa inskrivning av datum till enbart vecka lörd-lörd
Då hade jag tänkt så här:
1 selectbox för år från dagens år och framåt
1 selectbox med månader
så väljer jag år och sen månad och då ska det visas en selectbox med
alla veckorna för den månaden.
Hur får jag fram antal veckor för en viss månad ett visst år? (asp/VBScript)Sv: begränsa inskrivning av datum till enbart vecka lörd-lörd
Vet ju iofs inte exakt vad du vill åstadkomma... men om ditt fält innehåller år och veckonummer så kan du ju få fram datumen för lördagarna baserat på det...Sv:begränsa inskrivning av datum till enbart vecka lörd-lörd
Om jag då har en selectbox med åren och väljer ett år och klickar OK
då ska det visas en selectbox med alla veckorna i det året och jag ska kunna välja en vecka.
Efter jag valt en vecka och klickar SÖK OM LEDIG
(med vecka menas då lörd-lörd)
Då ska det sökas i databasen om denna vecka är ledig.
I min databastabellen har jag
reservation från_datum till_datum .....
Ska jag då kanske ha en kolumn med Vecka i databastabellen?
Hur får jag fram antalet veckor för ett valt år i selectboxen? om man räknar lörd-lörd som 1 vecka.
Vad händer då om en vecka infaller mellan årsskifte...
Kod uppskattas =)
För jag vet inte hur jag ska räkna ut det rätt.Sv: begränsa inskrivning av datum till enbart vecka lörd-lörd
<code>
<select name="weeks">
<%
For i=1 to DatePart(ww,cDate("2006-12-31"),0,3) ' Ger totala antalet veckor i 2006
Response.Write(" <option value="" & i & "">Vecka " & i & "</option>" & vbCrLf)
Next
%>
</select>
</code>
Det går att behålla datum... men blir betydligt enklare om man istället använder veckonummer...
Man kan ju alltid få fram vilket datum en lördag har i en speciell vecka. Tillvägagångssättet kan vara:
<code>
' 1. Kolla vilket veckonummer det är "idag" (DatePart)
DatePart("ww",Now(),0,0)
' 2. Subtrahera antal dagar till förra lördagen (DatePart+DateAdd) för att få fram aktuell veckas startdatum
DateAdd("w",-(DatePart("w",Now())),Now())
' 3. Addera antal veckor som valts med utgång från nuvarande vecka (DateAdd) för att få fram "bokad" veckas startdatum
DateAdd("ww",antalVeckor,aktuellLördagsDatum)
</code>
Använder du istället veckonummer (även fast inte båda lördagarna är i samma vecka) så blir det ju enklare... för då behöver du ju bara kolla om aktuell vecka redan är bokad...
Hjälp om VBScript funktioner hittar du här http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/adaabd2b-250e-4040-9eaa-127f5a41f8b9.aspSv:begränsa inskrivning av datum till enbart vecka lörd-lörd
DatePart("ww",#2006-12-31#,0,3)
Okej nästa steg:
Då väljer bokaren år 2006 och väljer vecka 26.
Kollar man i kalendern då så ser man att lördagarna är från 24 juni(v.25) - 1 juli(v.26)
Innebär det då att jag kan följa dina steg för steg anvisningar för att få fram att vecka 26 då blir 24 juni till 1 juli?
hmm..Sv: begränsa inskrivning av datum till enbart vecka lörd-lörd
Idag är vi i vecka 17... Förra lördagens datum var den 22:a (dagens datum - 4 dagar... använd Datepart/DateAdd funktionen)... lägg till (26-17) 9 veckor med DateAdd och du borde få fram den 24:e juni... å sen lägger du till ytterligare 7 dagar med DateAdd för att få fram nästkommande lördags datum... vilket borde bli 1:a juli...Sv:begränsa inskrivning av datum till enbart vecka lörd-lörd
På steg 3 är jag lite fundersam.
Om man vet datumen när lördagen börjar då kan man väl egentligen bara plussa på 7 dagar på det datumet? istället för att utgå ifrån dagen datum och räkna veckor..(?).Sv: begränsa inskrivning av datum till enbart vecka lörd-lörd
DateAdd("d",7,DateAdd("w",-(DatePart("w",Now())),Now()))
då fick jag
29 (april i detta fallet men det beror ju på att det är Now())
En fråga:
Varför utgår du från Now() i steg1 ?
det beror väl på vilket år och vilken vecka som är vald och utgå från detta?Sv:begränsa inskrivning av datum till enbart vecka lörd-lörd
Förstår att man måste utgå från Now() om man inte har så mycket annat att leka med.
min lösning
Ett formulär med selectbox year och en selectbox weeks
lookingForWeek=Request.Form("weeks")
lookingForYear=Request.Form("year")
currentWeek=DatePart("ww",Now(),0,0)
if currentWeek>lookingForWeek Then
diffWeeks=currentWeek-lookingForWeek
Else
diffWeeks=lookingForWeek-currentWeek
End If
Response.Write("<br> A differens veckor = "&diffWeeks&"<br>")
foundDate=DateAdd("ww",diffWeeks,DateAdd("w",-(DatePart("w",Now())),Now()))
Response.Write("<br> A Rätt datum= "&foundDate&"")
Response.Write("<br> A Till datum= "&DateAdd("d",7,foundDate)&"")Sv: begränsa inskrivning av datum till enbart vecka lörd-lörd
Vad bra... roligt att jag kunde hjälpa dig.
<b>Förstår att man måste utgå från Now() om man inte har så mycket annat att leka med.</b>
Ja, alltså... visst kan man ju räkna från ett fast datum t ex 1 jan... fast du måste ju ändå leta rätt på start-lördagen... och att räkna från Now() tyckte jag blev enklare...