Sitter och håller på med en personlig webblogg. Nu hade jag tänk att på sidan ha en liten hörna med ett "arkiv". Där hade jag tänkt mig en uppstapling, typ:
-------------------------------------
Inlägg denna månaden:
6 december - Hej hopp
4 december - Blää
1 december - Greger är söt
Tidigare månader:
November 2004
Oktober 2004
September 2004
-------------------------------------
Hur gör jag för att skriva ut alla inläggen den månaden som det är nu? Dvs. alla inläggen skrivna i december.
Och fråga två, hur gör jag för att göra länkar till arkiv där de tre senaste månadernas inlägg finns. I November-sidan ska alla inlägg från november ligga etc. Ni förstår nog hur jag menar.
Vore jättetacksam för svar.
Datumen som skrivs in i databasen blir så som det blir med MS Access, har ett fält som heter "datum", och den använder "Datum/Tid" som typ i inställningarna i Access.
select *
from inlägg
where month(Datum) = month(date())
and year(Datum) = year(date())
Tre senaste månaderna
select top 3 month(datum) m,year(datum) y
from inlägg
where (year(datum) = year(date())
and month(datum) < month(date()))
or year(datum) < year(date())
group by month(datum),year(datum)
order by year(datum)desc,month(datum) desc
select top 3 month(datum) m,year(datum) y
from inlägg
where (year(datum) = year(date())
and month(datum) < month(date()))
or year(datum) < year(date())
group by month(datum),year(datum)
order by year(datum)desc,month(datum) desc
Koden för aktuella månaden fungerade, men detta gick inte. Jag får följande fel:
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'month(datum) m'.
/sidor/blog/Default.asp, line 14
<%
Set MinCon = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/db.mdb")
SQL = select top 3 month(datum) m,year(datum) y from blogg where (year(datum) = year(date()) and month(datum) < month(date())) or year(datum) < year(date()) group by month(datum),year(datum) order by year(datum) desc,month(datum) desc"
rs.Open SQL, MinCon
Do While Not rs.EOF
%>
<%
rs.MoveNext
Loop
%>
Det här är kod jag har. Hur ska jag nu göra för att få fram dem i en lista? Hur ska jag skriva ut det?
Ska jag använda <% = rs("datum") %> ?
Tja, vad som helst annat. Typ foo och bar? Jag tycker nämligen att SQL-frågan ser rätt ut, så jag förstår inte riktigt vad som skulle kunna vara fel annars.
<%
Set MinCon = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/db.mdb")
datum = now()
SQL = "select top 3 month(datum) m,year(datum) y from blogg where (year(datum) = year(date()) and month(datum) < month(date())) or year(datum) < year(date()) group by month(datum),year(datum) order by year(datum) desc,month(datum) desc"
rs.Open SQL, MinCon
Do While Not rs.EOF
Response.Write rs(0) & " "& rs(1)
Loop
%>
Såhär ser det ut nu, och felmeddelandet blir:
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'month(datum) m'.
/sidor/blog/Default.asp, line 16
Testat och kört. Det verkar trots allt vara alias:en det är fel på. Du kan ju testa att ta bort dem helt. När du anger index så behöver du ju inte några namn. Alltså:
<%
Set MinCon = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/db.mdb")
datum = now()
SQL = "select top 3 month(datum), year(datum) from blogg where (year(datum) = year(date()) and month(datum) < month(date())) or year(datum) < year(date()) group by month(datum),year(datum) order by year(datum) desc,month(datum) desc"
rs.Open SQL, MinCon
Do While Not rs.EOF
Response.Write rs(0) & " "& rs(1)
Loop
%>
Om du vill skriva ut månadens namn i stället för månadsnumret kan du i ASP-koden använda funktionen MonthName().
Mvh
258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2