webForumDet fria alternativet

Utforma ny sidnavigering

ASPur ASP

5 svar · 495 visningar · startad av Oputres

Medlem sedan feb. 2004333 inlägg
Frågan#1

Allå!

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:

http://www.monstrum.se/default.asp?Kat=2Rader&Sida=16

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:

SIDNAVIGERING:
2006
-Januari
-Februari
-Mars
-April
-Maj

2005
-Januari
-Februari
-Mars
-April
-Maj
-Juni
-Juli
-Augusti
-September
-Oktober
-November
-December

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?

Medlem sedan feb. 2004333 inlägg
#2

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?

Medlem sedan apr. 20031 660 inlägg
#3

HEJ!

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.

Medlem sedan feb. 2004333 inlägg
#4

Så här tänkte jag mig för övrigt att sökvägen skulle kunna se ut, om det underlättar förståelsen över mitt problem:
monstrum.se/default.asp?kat=2rader&year=2006&month=january

En sådan adress kommer ju alltid vara densamma och då kommer ju Googlaren alltid hitta rätt.

Medlem sedan feb. 2004333 inlägg
#5

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
%>
Medlem sedan juni 200032 967 inlägg
#6

Allt fungerar precis som jag vill ha det utom att månaderna är angivna i siffror. Hur kan jag ändra detta?

MonthName()

139 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)