Avatar billede zantiago Nybegynder
01. oktober 2004 - 23:19 Der er 7 kommentarer og
1 løsning

idéer til nyhedsarkiv

Hej Eksperter

Jeg skal til at lave et nyhedsarkiv ud fra en database med en masse nyheder - alle er dateret.

Jeg vil gerne kunne lave en oversigt der ser således ud:

-----------------------------------------------------------------
2003 | 2004

Jan. | Feb. | Marts | April | Maj | Juni | Juli | Aug. | Sept. | Okt. | Nov. | Dec.
-----------------------------------------------------------------

Det skal bare laves automatisk ud fra min database. Den skal altså undersøge om der er nogen fra år 2003, er der det skal den skrive "2003" - Det samme skal ske med månederne.

Er der nogen der har en idé, og evt noget kode til hvordan det kunne laves?

//Z
Avatar billede eagleeye Praktikant
01. oktober 2004 - 23:25 #1
Hvis du vil udskrive en liste med årstal kan det gøres i stil med dette:

sql = "select distinct year(dato) as aar from nyheder order by year(dato)"
set rs=Conn.Execute(sql)

do while not rs.EOF
  response.write rs("aar")
  rs.Movenext
  if not rs.EOF then response.write " | "
loop


Skal månederne først komme frem når man vælger et årstal? Eller er årstallet ikke et link?
Avatar billede zantiago Nybegynder
01. oktober 2004 - 23:28 #2
Som standart skal den bare vælge det år som vi er i nu.

Men ja månederne skal naturligvis skifte hvis man eks. trykker på 2003 - Men standart vil være året man befinder sig i, som lige nu gerne skulle værre 2004, hvis ikke jeg tar meget fejl ;o)
Avatar billede eagleeye Praktikant
01. oktober 2004 - 23:35 #3
Det siger min kalender også vi er i :)

Så kan man lave noget som dette:

<%
aar=request("aar")
if aar="" then aar = Year(date)

sql = "select distinct year(dato) as aar from nyheder order by year(dato)"
set rs=Conn.Execute(sql)

'list årstallene
do while not rs.EOF
  response.write "<a href=""?aar="&rs("aar")&""">"&rs("aar")&"</a>"
  rs.Movenext
  if not rs.EOF then response.write " | "
loop

'list månederne for valgte år
response.write "<br><br>"

sql = "select distinct month(dato) as maaned from nyheder where year(dato)='" & aar & "' order by month(dato)"
set rs=Conn.Execute(sql)
'list månederne
marray=Split("Jan.,Feb.,Marts,April,Maj,Juni,Juli,Aug.,Sept.,Okt.,Nov.,Dec.",",")
do while not rs.EOF
  response.write  marray(int(rs("maaned"))-1)
  rs.Movenext
  if not rs.EOF then response.write " | "
loop
%>
Avatar billede zantiago Nybegynder
01. oktober 2004 - 23:42 #4
Cool - Mega najs :D

Jeg vil gerne have det sådan så den lister de nyheder der er i denne måned i dette år - Det gør den ikke nu vel? Nu er det kun år ik?

Hvordan smider jeg nemmest links på månederne, så det er lige til at lave udtræk??
Avatar billede eagleeye Praktikant
01. oktober 2004 - 23:49 #5
Ja ok, det kan gøre på samme måde som med år, så prøv dette kode:


<%
aar=request("aar")
if aar="" then aar = Year(date)
maaned=request("maaned")
if maaned="" then maaned = Month(date)

sql = "select distinct year(dato) as aar from nyheder order by year(dato)"
set rs=Conn.Execute(sql)

'list årstallene
do while not rs.EOF
  response.write "<a href=""?aar="&rs("aar")&""">"&rs("aar")&"</a>"
  rs.Movenext
  if not rs.EOF then response.write " | "
loop

'list månederne for valgte år
response.write "<br><br>"

sql = "select distinct month(dato) as maaned from nyheder where year(dato)='" & aar & "' order by month(dato)"
set rs=Conn.Execute(sql)
'list månederne
marray=Split("Jan.,Feb.,Marts,April,Maj,Juni,Juli,Aug.,Sept.,Okt.,Nov.,Dec.",",")
do while not rs.EOF
  response.write  "<a href=""?aar=" & aar & "&maaned=" & rs("maaned") & """>" & marray(int(rs("maaned"))-1) & "</a>"
  rs.Movenext
  if not rs.EOF then response.write " | "
loop

'List nyheder for valgte år og måned:

response.write "<br><br>"

sql = "select * from nyheder where year(dato)='" & aar & "' and month(dato)='" & maaned & "' order by dato"
set rs=Conn.Execute(sql)
do while not rs.EOF
 
  response.write "Nyheden ... " & rs("dato") & "<br>"
 
  rs.Movenext
loop
%>
Avatar billede zantiago Nybegynder
01. oktober 2004 - 23:59 #6
Det er så næsten perfekt som det kan være - En sidste ting er nemlig hvis jeg kunne på en <hr> ind i mellem hver dag? er det muligt?

Så skal jeg nok lade dig være i fred, og lade dig hygge med dine velfortjente 200 points :o)
Avatar billede eagleeye Praktikant
02. oktober 2004 - 00:02 #7
Ok, så prøv at rette:

set rs=Conn.Execute(sql)
do while not rs.EOF
 
  response.write "Nyheden ... " & rs("dato") & "<br>"
 
  rs.Movenext
loop


Til dette :

do while not rs.EOF

  response.write "Nyheden ... " & rs("dato") & "<br>"
 

  olddag=rs("dato")
  rs.Movenext
  if not rs.EOF then
    if  olddag <> rs("dato") then Response.Write "<hr>"
  end if
loop
Avatar billede zantiago Nybegynder
02. oktober 2004 - 00:04 #8
Lækkert - tak for hjælpen!!!
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