Filtrera en tvådimensionell Array?

ASP

4 svar · 224 visningar · startad av Bengan

Medlem sedan juni 2000690 inlägg
Trådstart#1

Ok, hur förklarar man detta nu då? :)

Jag har en funktion som skall visa en katalognavigering som nu funkar så här:

- Tar ut ett recordset med alla katalogens kategorier.
- Använder Filter på RSet för att plocka ut den aktuella kategorin och spara i en array.
- Läser ut om denna kategori har en kategori ovanför, om detta finns så ändras Filter på RSet till den kategorin och arrayen fylls på osv.

Misstänker att just Filter funktionen av ett RS tar en del prestanda dock...

Nu tänkte jag göra detta med GetRows och Array istället men vet inte hur man kör ett filter på den array man får av GetRows. Går det att lösa?

Naturligtvis så kan man loopa igenom hela arrayen och leta efter värdet men om man ligger typ 5 kategorier ner i trädet så måste då hela arrayen loopas igenom 5 gånger (katalogen har ca 400-500 kategorier)... Verkar inte så bra, då kanske tom. filtrering av ett RS är bättre.

Nån bra lösning på detta?

Medlem sedan mars 20002 836 inlägg
#2

Kataloger. Är det mappar på hd?
Vad menar du med kategorier i Kataloger?

behöver lite mer förklaring jag ...

cya,
PatrikB

Medlem sedan juni 2000690 inlägg
#3

Hehe, det är alltså en produktkatalog som ligger i en mysql databas.

Den funktion jag pratar om listar navigeringen till alla de underkategorier som finns i katalogen.

Den skriver ut typ:
Top: Data: Tillbehör: Grafikkort som länkar överst på varje sida. Funkar typ som navigeringen i Yahoos katalog.

Medlem sedan mars 20007 896 inlägg
#4

Kan du inte sköta filtreringen i SQL-frågan? :q

Medlem sedan juni 2000690 inlägg
#5

Nej, tyvärr inte.

Eftersom varje kategori har ett fält för vilken kategori det tillhör i trädet uppåt. Så då måste man ställa en ny SQL fråga för varje steg i trädet.

Som jag gör nu så kör jag ut alla kategorier i ett RS och sedan använder RS.Filter för att ta fram den kategori man är i, spara i en array och sedan ställa om RS.Filter till den kategori som ligger "ovanför" och loopa om.
Efter det loopar jag igenom arrayen baklänges så kan man skriva ut var man är i katalogträdet såhär:
Top: Data: Tillbehör: Grafikkort

255 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)