Jag har ett litet dilemma med min hemsida Monstrum. Problemet är att den senaste dagboksposten alltid finns på sida 1 och att det absolut första inlägget alltid ligger på sista sidan, just nu sidan 62 (se själva: Min dagbok). Detta blir ju inte så himla lyckat om man hittar något dagboksinlägg på Google som då ger länken:
Här är det ju idiotiskt att dagboksposterna alltid får nya sidnummer varefter dagboken fylls på med nya inlägg. Här kommer ju Googlaren aldrig att hitta posten.
Eftersom jag lagrar posterna med datum tänkte jag att jag kanske kunde sortera efter månad och år, alltså så här:
2004...
2003... Tills alla år i databasen är listade.
Och när jag klickar på t.ex. februari 2006 så skall den månadens alla dagboksinlägg visas - med det senaste inlägget överst. Samtidigt vill jag att den visar aktuell månad by default när man kommer in på sidan, alltså maj 2006 om man skulle gå in där nu.
Hur sjutton gör jag detta? Går det ens med hjälp av att varge dagboksinlägg är sparat med datumet, ex. 2006-05-27?
Ingen som kan hjälpa mig? Om jag bara får hjälp med hur jag loopar ut de år som finns i databasen så kan jag nog spinna vidare med månaderna. Jag har ju som sagt datum lagrat på varenda post. Det borde alltså gå att plocka ut år-delen av datumet och loopa ut dessa så att den varje gång den stöter på ett nytt år skriver ut detta en gång. Det finns över tusen poster men det handlar ju bara om fem olika år. Så hur skulle en sådan loop se ut?
Du har redan svarat på din fråga, fast på svenska.
I ett mer anpassat datorspråk blir det ungefär:
Do Until Rs.Eof
nytt_ar = Year(rs("datum")
if old_ar<>nytt_ar then
'nytt år
response.write nytt_ar
old_ar=Year(datum)
else
skriv ut allt annat
end if
rs.movenext
loop
Sedan vill du väl skriva ut månaderna också? Samma sätt, jämför med senaste post, om inte samma, skriv ut.
Jippi, det börjar arta sig nu, kolla in den aktuella hemsidan. Allt fungerar precis som jag vill ha det utom att månaderna är angivna i siffror. Hur kan jag ändra detta?
Så här ser koden ut so far, lite kladdigt med int-prefix och Cint-konvertering dit men jag skall stila till det sedan när jag fått allt att fungera: (Raden som skriver ut månaderna är fetmarkerad)
<p>Test av ny sidnav.:</p>
<%
'Ta fram det senaste året som finns registrerat i 2 Rader-tabellen.
Set RS2Year = Connect.Execute("SELECT TOP 1 * FROM tvarader ORDER BY datum DESC")
If Len(Request.QueryString("y")) = 0 Then
Visa_Ar = Cint(Year(RS2Year("Datum")))
Else
Visa_Ar = Cint(Request.QueryString("y"))
End If
Set Rs2RaderSidNav = Connect.Execute("Select * From tvarader ORDER BY datum Desc")
Do Until Rs2RaderSidNav.Eof
intValtAr = Year(Rs2RaderSidNav("datum"))
If intValtAr <> Foregaende_ar Then
Response.Write "<b><a href='default.asp?Kat=2Rader&y=" & intValtAr & "'>" & intValtAr & "</a></b><br>"
If Cint(Visa_Ar) = Cint(intValtAr) Then
Set Rs2RaderSidNav2 = Connect.Execute("Select * From tvarader Where Year(datum) = " & intValtAr & " ORDER BY datum Desc")
Do Until Rs2RaderSidNav2.Eof
intValdManad = Month(Rs2RaderSidNav2("datum"))
If intValdManad <> Foregaende_manad Then
[B]Response.Write intValdManad & "<br>"[/B]
End If
Foregaende_manad = intValdManad
Rs2RaderSidNav2.MoveNext
Loop
End If
End If
Foregaende_ar = intValtAr
Rs2RaderSidNav.MoveNext
Loop
%>