/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Kategoriseret præsentatation af data
Fra : René Kømler


Dato : 30-03-05 06:45

Hej Community,

Jeg arbejder på en nyhedsformidling baseret på Access, hvor jeg
gerne ville kunne præsenterer nyhederne opdelt i kategorier når
de vises.

KATEGORI 1
nyhed1 i kategori 1
nyhed2 i kategori 1
nyhed3 i kategori 1

KATEGORI 2
nyhed1 i kategori 2
nyhed2 i kategori 2
nyhed3 i kategori 2

Altså tage kategori feltet og præsenterer een gang pr. kategori
og derefter alle nyhederne i den kategori osv.

Da jeg helst ikke vil låse mig fast på kategorierne - så kunne
man jo hardcode' sig ud af det søger jeg en dynamisk løsning.

Anyone

Bedste hilsner
René



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (30-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 30-03-05 12:23

René Kømler skrev:

> Altså tage kategori feltet og præsenterer een gang pr. kategori
> og derefter alle nyhederne i den kategori osv.

Er det databaseopbygningen eller visningen du vil have hjælp til?

I databasen kan man enten have kategorierne som en selvstændig entitet
(i en kategori-tabel) eller som en fri egenskab (et kategori-felt i
nyhedstabellen). Jeg vil anbefale det første - dels fordi det giver
bedre styr på kategorierne, og dels fordi det giver mulighed for at
tilknytte ekstra oplysninger på kategoriniveau (det kan fx være en
beskrivelse af kategorien).

I visningen kan du bruge navn eller id-nummer på en kategori til at
afgøre om der skal udskrives en ny overskrift. Tricket er at gemme
id-nummeret (eller navnet) på kategorien i en variabel og så i hvert
gennemløb sammenligne den gemte værdi med den aktuelle værdi. Hvis der
er forskel, udskrives en kategorioverskrift og den gemte værdi opdateres
med den aktuelle værdi. Tildeler man en dummy-værdi til variablen før
løkken starter, virker metoden også på den første kategori (jeg plejer
bare at bruge 0 - da mine autogenererede id-numre altid er større end
0).

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

René Kømler (30-03-2005)
Kommentar
Fra : René Kømler


Dato : 30-03-05 13:35

>I visningen kan du bruge navn eller id-nummer på en kategori til at
>afgøre om der skal udskrives en ny overskrift. Tricket er at gemme
>id-nummeret (eller navnet) på kategorien i en variabel og så i hvert
>gennemløb sammenligne den gemte værdi med den aktuelle værdi. Hvis der
>er forskel, udskrives en kategorioverskrift og den gemte værdi opdateres
>med den aktuelle værdi.

Det er lige netop dette jeg gerne vil lave. Der skal udskrives en over
skrift

Laver man to Do-løkker eller er der en nemmere måde?


René


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (30-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 30-03-05 14:09

René Kømler skrev:

> Laver man to Do-løkker eller er der en nemmere måde?

Nej - én løkke er nok.

I skemakode:


' Variabel til at styre kategoriskift
Dim oldID
oldID = 0

' Databaseforespørgsel - som før
....
set rs = conn.execute(sql)

' Løkke:
Do While Not rs.EOF
' Tjek om vi har en ny kategori
If rs("kategoriID") <> oldID Then
   ' Udskriv navnet på kategorien
   Response.write ("<h2>" & rs("kategoriNavn") & "<h2>" & vbNewline)
   ' Opdater variablen
   oldID = rs("kategoriID")
End If

' Udskriv selve nyheden
Response.write ("<p>" & rs("nyhed") & "</p>")

' Ryk videre   
rs.movenext
Loop

Hvis man bruger tabeller eller har anden kode der skal startes og
sluttes ved hver kategorioverskrift, kan det være nødvendigt at ændre
tilføje et tjek på om det er første gennemløb i if-sætningen (fordi der
ikke skal udskrives lukkekoder til nyhedsafsnittet når den første
overskrift udskrives).

Prøv at eksperimentere lidt med strukturen herover. Man kan få vist
overskriften på mange måder. Dog skal man bemærke at ovenstående model
kun udskriver en kategorioverskrift hvis der rent faktisk er nyheder i
den kategori. Hvis man vil have vist alle overskrifter, uanset om der er
tilhørende data eller ej, skal man hente data i to omgange.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

René Kømler (30-03-2005)
Kommentar
Fra : René Kømler


Dato : 30-03-05 18:00


> Nej - én løkke er nok.

PERFEKT TUSIND TAK - bare man husker at ORDER BY i sin forespørgsel, du og
de der måtte kigge med får lige hele koden (hvis ikke man order by skiftes
variablen hele tiden):

<%

Dim KAT
KAT = ""

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)};"
DSN = DSN & "DBQ=" & Server.MapPath("db/nyheder.mdb")
Conn.Open DSN

strSQL = "Select * from nyhed order by nyhed_kategori"
Set rs = Conn.Execute(strSQL)
%>

<%
Do While Not rs.EOF

If rs("nyhed_kategori") <> KAT Then
Response.Write "<tr>"
Response.Write "<td width='500'>"
Response.Write "<h1>" & rs("nyhed_kategori") & "</h1>"
Response.Write "</td>"
Response.Write "</tr>"
KAT = rs("nyhed_kategori")
End If

Response.Write "<tr>"
Response.Write "<td width='500'>"
Response.Write "<b>" & rs("nyhed_overskrift") & "</b><br>"
Response.Write "<i>" & "af: " & rs("nyhed_byline") & "</i> (" &
rs("nyhed_dato") & ")<br>"
Response.Write rs("nyhed_text")
Response.Write "<hr></td>"
Response.Write "<td width='200' align='right'>"
If rs("nyhed_grafik") <> "" Then
Response.Write "<img border='0' src='grafik/" & rs("nyhed_grafik") &
"'>"
Else
Response.Write " "
End If
Response.Write "</td>"
Response.Write "</tr>"

rs.MoveNext
Loop
%>

<%
Conn.Close
Set Conn = Nothing
%>

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste