/ 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
Rekursiv funktion og SQL
Fra : Christian Kragh


Dato : 15-06-09 18:13

Hej.

Jeg er igang med at hente noget data ud fra en database.

Jeg har lavet en menu der henter data ud fra en databvase på
følgende måde med en rekursiv funktion.

'' Kører SQL og gemmer data som kommasepareret liste
strSQL = "Select * from tblTags where (tblTags.[public] > " &
SafeSQL(session("qUserGroup") -1) & ") order by tblTags.[tag]"
Set rs = Conn.Execute(strSQL)
Do while not rs.eof
arrUID   = arrUID   & "," & rs("UID")
arrTag   = arrTag   & "," & rs("tag")
arrOwner   = arrOwner   & "," & rs("ownerUID")

rs.MoveNext
Loop


rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing

arrUID      = split(arrUID,",")
arrTag      = split(arrTag,",")
arrOwner   = split(arrOwner,",")

qTempElement = 0
function Tags(startTag,levels,helptext)
for i = lbound(arrUID) +1 to ubound(arrUID)
if arrOwner(i) +0 = startTag +0 then
select case levels
case 0
TempLevel = ""
case 1
TempLevel = "class='child1'"
case 2
TempLevel = "class='child2'"
case else
TempLevel = "class='child3'"
end select
prt "<a href='#' title='" & utf9(cPageTags & helptext & "
--> " & arrTag(i)) & "' " & TempLevel & "
onclick='ToogleDisplay(" & qTempElement & ",""" & qPath &
"view.asp?type=tag&uid=" & arrUID(i) & """);'>" & utf9(arrTag(i))
& "</a>"
prt "<div id='l" & qTempElement & "' style='display:none'>"
qTempElement = qTempElement + 1
prt Tags(arrUID(i),levels+1,helptext & " --> " & arrTag(i))
prt "</div>"
end if
next

end function

prt Tags(0,0,"")



Det virker fint og man kan åbne og lukke de enkelte punkter.

På den enkelte side skal man så vise det aktuelle menupunkt og
alle undermenupunkter.

Samtisig med at den henter de enkelte punkter ud skal den også
sortere dem som det er i menuen.


Test mærke 1
Test mærke 2
.. Test mærke 4
.. . Test mærke 5
.. Test mærke 6
Test mærke 3

Hvis man vælger mærke 1 vises kun billeder herfra.
Vælger man mærke 2 skal alle punkter i mærke 2 vises.
Derefter skal der vises alle punkter i mærke 4.
Under mærke 4 skal mærke 5 vises.
Til slut skal der vises mærke 6.

Jeg vil vise det på følgende måde:

Mærke 2:
Billede 1, billede 2, billede 3, ect

Mærke 4:
Billede 4, billede 5, billede 6, ect

Mærke 5:
Billede 7, billede 8, billede 9, ect

Mærke 6:
Billede 10, billede 11, billede 12, ect



MVH
Christian

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

 
 
Christian Kragh (15-06-2009)
Kommentar
Fra : Christian Kragh


Dato : 15-06-09 21:39

> Det virker fint og man kan åbne og lukke de enkelte punkter.
>
> På den enkelte side skal man så vise det aktuelle menupunkt og
> alle undermenupunkter.
>
> Samtisig med at den henter de enkelte punkter ud skal den også
> sortere dem som det er i menuen.
>
>
> Test mærke 1
> Test mærke 2
> .. Test mærke 4
> .. . Test mærke 5
> .. Test mærke 6
> Test mærke 3
>
> Hvis man vælger mærke 1 vises kun billeder herfra.
> Vælger man mærke 2 skal alle punkter i mærke 2 vises.
> Derefter skal der vises alle punkter i mærke 4.
> Under mærke 4 skal mærke 5 vises.
> Til slut skal der vises mærke 6.
>
> Jeg vil vise det på følgende måde:
>
> Mærke 2:
> Billede 1, billede 2, billede 3, ect
>
> Mærke 4:
> Billede 4, billede 5, billede 6, ect
>
> Mærke 5:
> Billede 7, billede 8, billede 9, ect
>
> Mærke 6:
> Billede 10, billede 11, billede 12, ect

Det løses selvfølgelig med:

select xx from tbldata where uid = 1
OR
select xx from tbldata where uid = 2
OR
select xx from tbldata where uid = 3

og så sætter man bare det antal OR select... man har brug for.

Christian

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

Leif Neland (16-06-2009)
Kommentar
Fra : Leif Neland


Dato : 16-06-09 08:54

Christian Kragh skrev:

>
> select xx from tbldata where uid = 1
> OR
> select xx from tbldata where uid = 2
> OR
> select xx from tbldata where uid = 3
>
> og så sætter man bare det antal OR select... man har brug for.
>
Du blander tingene sammen

Skal du kun vælge fra en enkelt tabel, bruger du OR i where-delen:


select xx from tbldata where uid = 1
OR uid = 2
OR uid = 3

Kan også laves som "... where uid in (1,2,3) "

Skal du have resultat fra flere tabeller, bruger du UNION imellem queries.

select xx from tblA where uid = 1
union
select xx from tblB where uid = 1
union
select xx from tblC where uid = 1

Leif

Stig Johansen (16-06-2009)
Kommentar
Fra : Stig Johansen


Dato : 16-06-09 11:50

Leif Neland wrote:

> Skal du have resultat fra flere tabeller, bruger du UNION imellem queries.
>
> select xx from tblA where uid = 1
> union

Husk at bruge UNION ALL, så man ikke ryger ind i begræsnsede datamængderr.

--
Med venlig hilsen
Stig Johansen

Christian Kragh (16-06-2009)
Kommentar
Fra : Christian Kragh


Dato : 16-06-09 14:14

> > Skal du have resultat fra flere tabeller, bruger du UNION imellem queries.
> >
> > select xx from tblA where uid = 1
> > union
>
> Husk at bruge UNION ALL, så man ikke ryger ind i begræsnsede datamængderr.

Det er super smart, men når man ikke kan finde ud af at skrive hvad man gør så
hjælper det jo ikke...

Jeg har brugt union, men tricket med union all var ny, den kendte jeg ikke og
det skulle jeg bruge.

Tak
Christian

--
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 : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste