/ 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
MoveNext
Fra : Michael Borup


Dato : 07-02-06 08:34

Hej
Har flg. problem:
Skal lave en liste der hentes fra db. Kan sagtens lave en liste,
men
hver liste skal have en overskrift (Efterår 2006, Forår 2007.
osv).
Overskriften skal kun vises, hvis der er indehold i db. Pt. kan
jeg sagtens lave listerne, men hvert emne fra db får en
overskrift.
det skal se sådan ud:
Efterår 2006
link til db
link til db
Forår 2007
link til db
link til db

Mit script:
<%
            strSQL = "SELECT ID, Overskrift,DiplomUdd, Kvartal FROM
DiplomModul WHERE DiplomUdd LIKE 'Kategori1' AND Kvartal LIKE
'Efterår2006' ORDER By ID"
Set rs1 = Conn.Execute(strSQL)

Do While Not rs1.EOF
lige=false
if rs1("DiplomUdd")="Kategori1" then
response.write "Efterår 2006 <br>"
end if%>
<% if rs1("DiplomUdd")="Kategori1" then
response.write " <a title='Klik på overskriften for flere
detaljer' href='paed_modul.asp?id="&rs1("ID")&"'>
"&rs1("Overskrift")&"</b></a><br> "

end if




rs1.MoveNext
Loop
%>

På forhånd tak
Michael Borup

--
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

 
 
Jørn Andersen (07-02-2006)
Kommentar
Fra : Jørn Andersen


Dato : 07-02-06 19:02

On 07 Feb 2006 07:34:02 GMT, Michael Borup <mi@jcvu.dk> wrote:

>Skal lave en liste der hentes fra db. Kan sagtens lave en
>liste, men hver liste skal have en overskrift (Efterår 2006,
>Forår 2007. osv).
>Overskriften skal kun vises, hvis der er indehold i db. Pt.
>kan jeg sagtens lave listerne, men hvert emne fra db får en
>overskrift.

>det skal se sådan ud:
>Efterår 2006
>link til db
>link til db
>Forår 2007
>link til db
>link til db
>
>Mit script:
><%
>            strSQL = "SELECT ID, Overskrift,DiplomUdd, Kvartal FROM
>DiplomModul WHERE DiplomUdd LIKE 'Kategori1' AND Kvartal LIKE
>'Efterår2006' ORDER By ID"

Der er et par uhensigtsmæssigheder med din SQL. LIKE kan måske være
udmærket, hvis man har behov for at lave en søgning. Men den er
generelt ressourcekrævende.

Her set det ud til, at 'DiplomUdd' og 'Kvartal' indgår som en fast del
af strukturen. I sådanne tilfælde er det smartest at lægge dem over i
sin egen tabel med hver sit Id og så JOIN'e tabellerne sammen.
Så kan du nemlig søge på Id'et (fx: DiplomUddId = 5).

Noget andet er så, at det du jo i virkeligheden ønsker er at lave en
"gruppering" af data. Og det er der faktisk en SQL.funktion, der gør:

SELECT felt1, felt2, felt3
FROM [tabelnavn eller join-forbindelse
WHERE [betingelser]
GROUP BY [feltnavne]
HAVING [betingelser]
ORDER BY [sorteringsfelter]

Hvis du bruger Access, så prøv dels at kigge i dokumentationen, dels
at lege med forespørgsels-gitteret (QBE-gitter) eller prøv med nogle
af guiderne.

Det resultat du får er grupperet efter fx kvartal.

Du kan trække det ud med noget i retning af:

intKvartalId = 0
Do While Not rs1.EOF
If intKvartalId = rs1("KvartalId") Then
' Do nothing
Else
Response.Write "<h3>" & rs1("Kvartal") & "</h3>" & vbcrlf
intKvartalId = rs1("KvartalId")
End If

Response.Write "[link'et]"
rs1.MoveNext
Loop

Logikken er, at hver gang der skiftes til en ny "kvartalgruppe", så
skrives der en "kvartal-overskrift".

Hvis du ikke kan overskue at lave din database om, så gør flg.:
- ændre sorteringen på din SQL til:
... ORDER BY Kvartal, ID
[Og skift evt. "LIKE" ud med "="]
- ændre udtrækket til:

strKvartal = ""
Do While Not rs1.EOF
If strKvartal = rs1("Kvartal") Then
' Do nothing
Else
Response.Write "<h3>" & rs1("Kvartal") & "</h3>" & vbcrlf
strKvartal = rs1("Kvartal")
End If

Response.Write "[link'et]"
rs1.MoveNext
Loop

Håber det hjalp lidt til at komme videre.


Good luck!

--
Jørn Andersen,
Brønshøj

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

Månedens bedste
Årets bedste
Sidste års bedste