webForumDet fria alternativet

For?

11 svar · 179 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

Jag har en tabell för kategorier med följande kolumner:

CatID (räknare)
CatName (namn)
CatBel (ID till den kategori den tillhör, är det en huvudkategori så står det "none")

Om jag vill ha ut alla huvudkategorierna i en dropdown meny så skriver jag:

<%
SQL="Select * From Categ Where CatBel='none'"
Set ca=Conn.Execute(SQL)
Do Until ca.EOF
%>
                <option value="<%=ca("CatID")%>"><%=ca("CatName")%></option>
<%
ca.MoveNext
Loop
ca.Close
Set ca=Nothing
%>

inga problem, men nu vill jag ha ut alla subkategorier i varje kategori:

<%
SQL="Select * From Categ Where CatBel='none'"
Set ca=Conn.Execute(SQL)
Do Until ca.EOF
%>
                <option value="<%=ca("CatID")%>"><%=ca("CatName")%></option>
<%
SQL2="Select * From Categ Where CatBel='"& ca("Catbel") &"'"
Set tac=Conn.Execute(SQL2)
Do Until tac.EOF
%>
                <option value="<%=tac("CatID")%>"><%=ca("CatName")%>/<%=tac("CatName")%></option>
<%
tac.MoveNext
Loop
tac.Close
Set tac=Nothing
Next
ca.MoveNext
Loop
ca.Close
Set ca=Nothing
%>

skulle man kunna göra, men då kommer man bara ett led djupt, varje sub i sig kan ha ytterligare subbar.
Hur löser jag det?
Lite kass på "For"-satser än, vilket jag misstänker att man måste använda!!!

------------------
Data-Doktorn

slurkenMedlem sedan juni 200152 inlägg
#2

orkar inte tänka ut hur det ska funka men principen är enkel. Du gör en funktion som tar in ett värde, nåt som talar om vilken sub kategori eller liknande, och hämtar en post och skriver ut denna sen anropar du funktionen igen, alltså du gör så att funktionen anropar sig själv....här får man passa sig så att det inte blir en oändlig loop...

hoppas det hjälpte ;)

------------------
jag är inte där du är

aleborgMedlem sedan jan. 20013 341 inlägg
#3

jag vet hur du menar men jag vet inte hur jag ska få ihop det :(

------------------
Data-Doktorn
Min egen musik!

slurkenMedlem sedan juni 200152 inlägg
#4

det kan ju inte vara så svårt:

<%
Function showmess(uid)
  strSQL="SELECT * FROM table1 WHERE subkat="&uid
  Set rs=Connect.Execute(strSQL)
  Do Until rs.EOF
    response.write(rs("fält"))
    response.Write(showmess(rs("ID"))
  rs.moveNext
  Loop
End Function
%>
'anropa funktionen
<%=ShowMessages(0)%>

det där borde funka.... :q

------------------
jag är inte där du är

aleborgMedlem sedan jan. 20013 341 inlägg
#5

tyvärr så hjälper det mig inte så mycket, eftersom du har använt en helt annan kod, lite svårt att se hur jag ska få in det i min kod :(

Men tack ändå!

------------------
Data-Doktorn
Min egen musik!

aleborgMedlem sedan jan. 20013 341 inlägg
#6

någon som kan hjälpa? *panik*

------------------
Data-Doktorn
Min egen musik!

aleborgMedlem sedan jan. 20013 341 inlägg
#7

*bump*

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

slurkenMedlem sedan juni 200152 inlägg
#8

hmm....är det inte bara o skriva om den funktion jag gjorde tidigare?....fattar inte riktigt hur du tänkt att det ska visas men jag kan göra ett försök

jag fattar inte varför du har CatBel='none'

Varje post du har i databasen bör ha en kolumn som heter subkat(kanske är samma som du redan har). Alla inläggen har också ett unikt id nummer. De poster som ligger först har subkat=0 och de poster som ligger under dessa har
föregåendes id-nummer i subkat.

<%
Function showmess(uid)
strSQL="SELECT * FROM Categ WHERE subkat="&uid
Set rs=Connect.Execute(strSQL)
Do Until rs.EOF
<OPTION>
response.write(rs("fält")&"\")
response.Write(showmess(rs("ID"))
</OPTION>
rs.moveNext
Loop
End Function
%>
'anropa funktionen
<%=Showmess(0)%>

prova detta, vet inte om det var det du var ute efter men som sagt fattar jag inte riktigt hur du tänkt att det ska se ut till slut

------------------
jag är inte där du är

aleborgMedlem sedan jan. 20013 341 inlägg
#9

CatBel är vilken kategori den valda kategorin tillhör, är det en huvudkategori så står det none, annars så står det kategorins ID som den tillhör!

Varje produkt har en post där det står vilken kategori som den tillhör.

Så först måste jag plocka ut alla huvudkategorier, sen måste jag plocka fram alla subkategorier i varje huvukategori, sen alla subkategorier i varje subkategori osv...

i en dropdown:
Kat1
Kat1/sub1
Kat1/sub1/sub1-1
Kat1/sub1/sub1-1/sub1-2
osv...

Dvs en sorts loop, den behöver kolla varje ny subs CatBel och plocka fram CatBel, CatID och CatName för den nya subben och sen kolla i databasen om det finns nått CatBel som har den nya subbens CatID och då göra samma procedur med den subben och upprepa allt tills den inte hittar nån mer sub.

Vad jag menar med att jag inte kan använda din kod är att vi använder helt olika fält, det är svårt att sätta in din kod i mitt sammanhang. Var får du uid ifrån t ex?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

[Redigerat av aleborg den 18 jun 2001]

slurkenMedlem sedan juni 200152 inlägg
#10

det är svårt när man inte har databasen och inte kan testa...

Men till att börja med kan du byta ut 'none' mot noll....det finns ju iaf ingen post som har id=0.

<%
Function showCat(uid)
SQL="SELECT * FROM Categ WHERE CatBel="&uid
Set ca=Conn.Execute(SQL)
Do Until ca.EOF
<OPTION VALUE="ca("CatID")">
response.write(ca("CatName")&"\")
response.Write(showCat(ca("CatID"))
</OPTION>
ca.moveNext
Loop
ca.Close
Set ca=Nothing
End Function

%>

'anropa funktionen
<SELECT>
<%=ShowCat(0)%>
</SELECT>

Nu stämmer det väl med dina variabler?

I det här fallet kan variabeln uid heta vad som helst; smurf,cykelratt,korvkiosk....det är bara en variabel.
Men jag antar att du kan ASP så du borde ju kunna gå in o ändra i koden efter dina behov.

Eftersom jag inte kan testa så blir det svårt o tänka sig hur detta kommer att se ut....annars får du skicka db'n eller nåt.

------------------
jag är inte där du är

[Redigerat av slurken den 18 jun 2001]

aleborgMedlem sedan jan. 20013 341 inlägg
#11

Problemet med din function är att uid MÅSTE ha ett värde:

Function showCat(uid)
SQL="SELECT * FROM Categ WHERE CatBel="&uid

annars så letar den efter inget!!!???
Lite svårt att se hur den skulle funka!
*ger snart upp hoppet*

Så här skulle man kunna göra, men det värkar lite onödigt plus att man bara kommer 5 nivåer i djup, inte för att jag tror att nån använder mer, men än då!

<%
SQL="Select * From Categ Where CatBel='none'"
Set ca=Conn.Execute(SQL)
Do Until ca.EOF
%>
<option value="<%=ca("CatID")%>"><%=ca("CatName")%></option>
<%
SQL2="Select * From Categ Where CatBel='"& ca("CatID") &"'"
Set tac=Conn.Execute(SQL2)
Do Until tac.EOF
%>
<option value="<%=tac("CatID")%>"><%=tac("CatName")%>/<%=tac("CatName")%></option>
<%
SQL3="Select * From Categ Where CatBel='"& tac("CatID") &"'"
Set tac2=Conn.Execute(SQL3)
Do Until tac2.EOF
%>
<option value="<%=tac2("CatID")%>"><%=ca("CatName")%>/<%=tac("CatName")%>/<%=tac2("CatName")%></option>
<%
SQL4="Select * From Categ Where CatBel='"& tac2("CatID") &"'"
Set tac3=Conn.Execute(SQL4)
Do Until tac3.EOF
%>
<option value="<%=tac3("CatID")%>"><%=ca("CatName")%>/<%=tac("CatName")%>/<%=tac2("CatName")%>/<%=tac3("CatName")%></option>
<%
SQL5="Select * From Categ Where CatBel='"& tac3("CatID") &"'"
Set tac4=Conn.Execute(SQL5)
Do Until tac4.EOF
%>
<option value="<%=tac4("CatID")%>"><%=ca("CatName")%>/<%=tac("CatName")%>/<%=tac2("CatName")%>/<%=tac3("CatName")%>/<%=tac4("CatName")%></option>
<%
tac4.MoveNext
Loop
tac4.Close
Set tac4=Nothing
tac3.MoveNext
Loop
tac3.Close
Set tac3=Nothing
tac2.MoveNext
Loop
tac2.Close
Set tac2=Nothing
tac.MoveNext
Loop
tac.Close
Set tac=Nothing
ca.MoveNext
Loop
ca.Close
Set ca=Nothing
%>

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

[Redigerat av aleborg den 22 jun 2001]

[Redigerat av aleborg den 22 jun 2001]

HarbackMedlem sedan juni 2001206 inlägg
#12

Gör en SUB som du anropar innan du loopar fram nästa huvudkat. Denna SUB loopar sedan fram alla dina underkat, ifall du vill hierarktiskt.
Har själv gjort en sådan när jag gjorde hierarkin till ett forum med svar till svaren osv.

Detta kanske inte var till särskilt mycket hjälp men jag pallar inte att skriva ner all kod nu...men om du vill kan du adda mig på ICQ så kan du fråga lite...nr: 14912424

------------------
MVH
Harback

[Redigerat av Harback den 22 jun 2001]

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)