Avatar billede rasmus_h Nybegynder
14. oktober 2003 - 20:17 Der er 9 kommentarer og
1 løsning

Datoerne i min kalender passer ikke!

Hej!

Jeg har leget lidt med en ASP kalender til min hjemmeside

Men! Datoerne passer ikke!

Se selv http://papdyr.dyndns.dk/cal

Alle filerne til den kan hentes på http://papdyr.dyndns.dk/cal.zip

Vh

Rasmus!
Avatar billede cultx Nybegynder
14. oktober 2003 - 22:50 #1
Kom med noget kode, gider ikke bladre dine filer igennem...
Avatar billede rasmus_h Nybegynder
14. oktober 2003 - 23:02 #2
Jamen problemet er at jeg ved ikke hvilken fil det er som fejler! Jeg har ikke lavet systemet... Det var et jeg downloadede...

- Rasmus!
Avatar billede nielle Nybegynder
15. oktober 2003 - 14:41 #3
Du kan jo nøjes med at give os den kode som rent faktisk udskriver selve kalenderen.
Avatar billede rasmus_h Nybegynder
15. oktober 2003 - 17:20 #4
Jamen det må jo næsten være den her så:

default.asp
<!--#include file="dsn.asp"-->
<!--#include file="body.asp"-->
<html>
<head>
<title><%=RSBODY("Page_Title")%></title>

<!--#include file="style.asp"-->

</head>
<body bgcolor="<%=RSBODY("Background_Color")%>" text="<%=RSBODY("Font_Color")%>" link="<%=RSBODY("Link_Color")%>" vlink="<%=RSBODY("Visited_Link_Color")%>" alink="<%=RSBODY("Active_Link_Color")%>">

<%

navmonth = request.querystring("month")
navyear = request.querystring("year")

If navmonth = "" Then
    navmonth = Month(Date)
End If

If navyear = "" Then
    navyear = Year(Date)
End If

firstday = Weekday(CDate(navmonth & "/" & 1 & "/" & navyear))


leapTestNumbers = navyear / 4
leapTest = (leapTestNumbers) - Round(leapTestNumbers)
If navmonth = 2 Then
    If leapTest <> 0 Then
        lastDate = 28
    Else
        lastDate = 29
    End If
ElseIf ((navmonth = 4) OR (navmonth = 6) OR (navmonth = 9) OR (navmonth = 11)) Then
    lastDate = 30
Else
    lastDate = 31
End If

lastMonth = navmonth - 1
lastYear = navyear
If lastMonth < 1 Then
    lastMonth = 12
    lastYear = lastYear - 1
End If

nextMonth = navmonth + 1
nextYear = navyear
If nextMonth >12 Then
    nextMonth = 1
    nextYear = nextYear + 1
End If


dateCounter = 1
weekCount = 1

DateEnd = lastDate
DateBegin = firstDate

Weekday_Font = RSBODY("Weekday_Font")
Weekday_Font_Size = RSBODY("Weekday_Font_Size")
Weekday_Font_Color = RSBODY("Weekday_Font_Color")
Weekday_Background_Color = RSBODY("Weekday_Background_Color")
Date_Font = RSBODY("Date_Font")
Date_Font_Size = RSBODY("Date_Font_Size")
Date_Font_Color = RSBODY("Date_Font_Color")
Date_Background_Color = RSBODY("Date_Background_Color")
Event_Font = RSBODY("Event_Font")
Event_Font_Size = RSBODY("Event_Font_Size")
Event_Font_Color = RSBODY("Event_Font_Color")
Cell_Width = RSBODY("Cell_Width")
Cell_Height = RSBODY("Cell_Height")
Cell_Background_Color = RSBODY("Cell_Background_Color")
Border_Size = RSBODY("Border_Size")
Border_Color = RSBODY("Border_Color")
%>

<%=RSBODY("Header")%>

<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td align="center">

<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tr>
<td align="left" valign="bottom"><font face="verdana" size="2"><b><a href="default.asp?month=<%=lastMonth%>&year=<%=lastYear%>"><%If (RSBODY("Abbreviate_Months") = True) Then%><%=MonthName(lastMonth, true)%><%Else%><%=MonthName(lastMonth)%><%End If%></a></b></font></td>
<td align="center" valign="bottom"><font face="verdana" size="4"><b><%If (RSBODY("Abbreviate_Months") = True) Then%><%=MonthName(navMonth, true)%><%Else%><%=MonthName(navMonth)%><%End If%>&nbsp;<%=navyear%></b></font></td>
<td align="right" valign="bottom"><font face="verdana" size="2"><b><a href="default.asp?month=<%=nextMonth%>&year=<%=nextYear%>"><%If (RSBODY("Abbreviate_Months") = True) Then%><%=MonthName(nextMonth, true)%><%Else%><%=MonthName(nextMonth)%><%End If%></a></b></font></td>
</tr>
</table>

</td>
</tr>
<tr>
<td>

<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td bgcolor="<%=Border_Color%>">

<table border="0" cellpadding="2" cellspacing="<%=Border_Size%>">
<tr>
<td width="<%=Cell_Width%>" align="center" bgcolor="<%=Weekday_Background_Color%>"><font face="<%=Weekday_Font%>" size="<%=Weekday_Font_Size%>" color="<%=Weekday_Font_Color%>"><b><%If (RSBODY("Abbreviate_Days") = True) Then%>Sun<%Else%>Sunday<%End If%></b></font></td>
<td width="<%=Cell_Width%>" align="center" bgcolor="<%=Weekday_Background_Color%>"><font face="<%=Weekday_Font%>" size="<%=Weekday_Font_Size%>" color="<%=Weekday_Font_Color%>"><b><%If (RSBODY("Abbreviate_Days") = True) Then%>Mon<%Else%>Monday<%End If%></b></font></td>
<td width="<%=Cell_Width%>" align="center" bgcolor="<%=Weekday_Background_Color%>"><font face="<%=Weekday_Font%>" size="<%=Weekday_Font_Size%>" color="<%=Weekday_Font_Color%>"><b><%If (RSBODY("Abbreviate_Days") = True) Then%>Tues<%Else%>Tuesday<%End If%></b></font></td>
<td width="<%=Cell_Width%>" align="center" bgcolor="<%=Weekday_Background_Color%>"><font face="<%=Weekday_Font%>" size="<%=Weekday_Font_Size%>" color="<%=Weekday_Font_Color%>"><b><%If (RSBODY("Abbreviate_Days") = True) Then%>Wed<%Else%>Wednesday<%End If%></b></font></td>
<td width="<%=Cell_Width%>" align="center" bgcolor="<%=Weekday_Background_Color%>"><font face="<%=Weekday_Font%>" size="<%=Weekday_Font_Size%>" color="<%=Weekday_Font_Color%>"><b><%If (RSBODY("Abbreviate_Days") = True) Then%>Thurs<%Else%>Thursday<%End If%></b></font></td>
<td width="<%=Cell_Width%>" align="center" bgcolor="<%=Weekday_Background_Color%>"><font face="<%=Weekday_Font%>" size="<%=Weekday_Font_Size%>" color="<%=Weekday_Font_Color%>"><b><%If (RSBODY("Abbreviate_Days") = True) Then%>Fri<%Else%>Friday<%End If%></b></font></td>
<td width="<%=Cell_Width%>" align="center" bgcolor="<%=Weekday_Background_Color%>"><font face="<%=Weekday_Font%>" size="<%=Weekday_Font_Size%>" color="<%=Weekday_Font_Color%>"><b><%If (RSBODY("Abbreviate_Days") = True) Then%>Sat<%Else%>Saturday<%End If%></b></font></td>
</tr>


<tr>
<% Do while weekCount <= 7
dateSelect = navmonth & "/" & dateCounter & "/" & navyear %>

<% If (weekCount < firstDay) OR (dateCounter > lastDate) Then %>
<td height="<%=Cell_Height%>" bgcolor="<%=Cell_Background_Color%>"><img src="im/clear.gif" height="1" width="1"></td>
<% else %>
<td height="<%=Cell_Height%>" bgcolor="<%=Date_Background_Color%>" valign="top"><a href="date.asp?date=<%=dateSelect%>"><font face="<%=Date_Font%>" size="<%=Date_Font_Size%>" color="<%=Date_Font_Color%>"><b><%=dateCounter%></b></font><font face="<%=Event_Font%>" size="<%=Event_Font_Size%>" color="<%=Event_Font_Color%>">

<%
Set RSEVENT = Server.CreateObject("ADODB.RecordSet")
RSEVENT.Open "SELECT * FROM Events", Conn, 1, 3

Do while NOT RSEVENT.EOF
rsdate = RSEVENT("Date")
If (Day(rsdate) = dateCounter) AND (Month(rsdate) = CInt(navmonth)) AND (Year(rsdate) = CInt(navyear)) Then%>

<br>
<%If RSBODY("Event_Display") = True Then%>
<%=RSEVENT("Category")%>
<%Else%>
<%=RSEVENT("Event_Name")%>
<% End If

End If
RSEVENT.movenext
Loop
RSEVENT.close
%>

</font></a></td>

<%
dateCounter = dateCounter + 1
end if

weekCount = weekCount + 1
Loop
weekCount = 1
%>
</tr>
<% Do while dateCounter <= lastDate %>
<tr>
<% Do while weekCount <= 7
dateSelect = navmonth & "/" & dateCounter & "/" & navyear %>

<% If dateCounter > lastDate Then %>
<td height="<%=Cell_Height%>" bgcolor="<%=Cell_Background_Color%>"><img src="im/clear.gif" height="1" width="1"></td>
<% else %>
<td height="<%=Cell_Height%>" bgcolor="<%=Date_Background_Color%>" valign="top"><a href="date.asp?date=<%=dateSelect%>"><font face="<%=Date_Font%>" size="<%=Date_Font_Size%>" color="<%=Date_Font_Color%>"><b><%=dateCounter%></b></font><font face="<%=Event_Font%>" size="<%=Event_Font_Size%>" color="<%=Event_Font_Color%>">

<%
Set RSEVENT = Server.CreateObject("ADODB.RecordSet")
RSEVENT.Open "SELECT * FROM Events", Conn, 1, 3
Do while NOT RSEVENT.EOF
rsdate = RSEVENT("Date")
If (Day(rsdate) = dateCounter) AND (Month(rsdate) = CInt(navmonth)) AND (Year(rsdate) = CInt(navyear)) Then%>

<br>
<%If RSBODY("Event_Display") = True Then%>
<%=RSEVENT("Category")%>
<%Else%>
<%=RSEVENT("Event_Name")%>
<% End If

End If
RSEVENT.movenext
Loop
RSEVENT.close
%>

</font></a></td>

<%
dateCounter = dateCounter + 1
end if

weekCount = weekCount + 1
Loop
weekCount = 1
%>
</tr>
<% Loop %>




</table>

</td>
</tr>
</table>

</td>
</tr>

<!-- Begin Ocean12 Technologies Copyright Notice -->
<!-- THIS CODE MUST NOT BE CHANGED -->
<tr>
<td align="center"><font face="Verdana" size="1">Maintained with the <a href="http://scripts.ocean12tech.com">Ocean<i>12</i> ASP Calendar Manager</a> v1.01<br>&copy;2001 <a href="http://scripts.ocean12tech.com">Ocean<i>12</i> Technologies</a>, all rights reserved.</font></td>
</tr>
<!-- End Ocean12 Technologies Copyright Notice -->

</table>

<%=RSBODY("Footer")%>

</body>
</html>
<!--#include file="dsn2.asp"-->
Avatar billede rasmus_h Nybegynder
15. oktober 2003 - 20:56 #5
Nå, der er åbenbart stille for tiden!
Avatar billede nielle Nybegynder
15. oktober 2003 - 21:48 #6
Gosh, noget slamkode! Jeg troede faktisk at Ocean12 kalenderen var af en bedre kvalitet...

Anyways, det ser ud til at firstDay variablen bliver sat til noget forkert:

firstday = Weekday(CDate(navmonth & "/" & 1 & "/" & navyear))

Den skal indeholde ugedagsnummeret på den dag hvor måneden starter. Det lader til at den får værdien 5 i stedet for 4 som er det rigtige (søndag=1, mandag=2, tirsdag=3 og onsdag=4). Dette kan måske skyldes at din server bruger dansk datoformat i stedet for amerikansk (vi starter nemlig ikke ugen med søndag).

Prøv at for tælle dit script at det skal arbejde med amerikansk datoformat:

Session.LCID = 1033
firstday = Weekday(CDate(navmonth & "/" & 1 & "/" & navyear))
Avatar billede rasmus_h Nybegynder
15. oktober 2003 - 22:20 #7
Hvorfor ikke fortælle det, at det skal arbejde med dansk datoformat egentlig?

- Rasmus!
Avatar billede nielle Nybegynder
16. oktober 2003 - 07:10 #8
Fordi at du så skal ind og rette i koden mange steder. Alle de steder hvor datoene behandles på en eller anden måde, så bruger de amerikansk format.
Avatar billede rasmus_h Nybegynder
16. oktober 2003 - 08:16 #9
Nå okay... Ja, så må jeg jo nøjes med amerikans format. Mon ikke jeg også overlever det ;)

Tak for hjælpen! Det virker perfekt når man bruger den der Session.LCID

- Rasmus!
Avatar billede nielle Nybegynder
16. oktober 2003 - 08:41 #10
Takker for points.

En lille forklaring på hvad der nok er gået galt:

Amerikansk datoformat: mm/dd/yyyy, Dansk datoformat dd/mm/yyyy. Når programmet prøver at bestemme ugedagen for den første dag i måneden så benytter det amerikansk datoformar og Weekday() får derfor serveret "10/1/2003". Men Weekday() tror imidlertid at scriptet bruger dansk datoformat, og fortolker derfor denne dato som 10 januar 2003. Og så må det jo gå galt!
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