[ASP] Categorie systeem

Pagina: 1
Acties:

  • Jorick
  • Registratie: November 2001
  • Laatst online: 20:26
Even een voorbeeld van wat ik wil bereiken:
Afbeeldingslocatie: http://members.home.nl/joricksaaltink/GoT/voorbeeld.gif
(Dit is overigens geen script-request!)

Ik vroeg me nou af hoe ik dit precies moet aanpakken. Ik heb allemaal links in een database staan, met daarbij de categorie-id aangegeven (gewoon met nummers).

Nou wil ik elke categorie in een aparte tabel en in die tabel komen de bijbehorende links. Ik zit me nou al een dag lang af te vragen hoe ik dit precies moet doen. Ik vraag met behulp van 1 query (select * from tblLinks) alle records op.
Nou zat ik te denken aan nested-loops of gewoon alle records in een array rammen.
Maar ik kom niet veel verder. Ik weet niet precies hoe ik dit moet doen.
Misschien kan het wel op een veel makkelijkere methode maar ik kan momenteel niet echt iets bedenken.

Mijn vraag is dus hoe ik dit nou moet aanpakken :? (misschien een soort van pseudo code).
Bedankt iig.

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
voor deze keer dan:

code:
1
2
3
4
5
6
7
for each category
  response.write header
  haal recordset op
  for each link
    response.write link
  next
next

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Aanvulling tot boven: Laat een 'tellertje' meelopen, of doe een mod, om te kijken of je al naar een nieuwe tablerow moet.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

je kunt er alleen beter geen gewoonte van maken om een query uit te voeren in een loop. Als het aantal records toeneemt neemt de performance van je script exponentieel af. Netter vind ik het om alles in een keer op te halen:

SQL:
1
2
SELECT * FROM categorie, links WHERE categorie.id=links.categorieid
    order by categorie.id


nu kun je met 1 loop alle gegevens netjes neerzetten.

code:
1
2
3
4
5
foreach record
   als mod(aantal-categorie)=3 dan nieuwe regel
   als nieuw categorie dan response.write header
   response.write link   
next

kaart != map && bottel != fles
Wacht op antwoord


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wat dacht je hier van?
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
lPrevID = -1
Set rsRes = oConn.Execute("Select * from tbl_Links order by cat_id")
While not rsRes.eof
    if lPrevID <> rsRes("cat_id") then
      if lPrevID<>-1 then PrintTabelEind
      PrintTabelKop
      lPrevID = rsRes("cat_id")
    end if
    PrintLink
    rsRes.movenext
Wend
PrintTabelEind


Iets in deze richting werkt met willekeurig aantal links in willekeurig aantal categorieën, en je laat maar 1 query los op je DB. En behalve 1 temp variable (lPrevID) geen extra crap nodig aan arrays en andere dingen.

[ Voor 35% gewijzigd door RobIII op 05-07-2003 17:36 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Code van RobIII gaat goed werken alleen moet je dan nog een tellertjes bijhouden met het aantal categorien wat je gehad hebt, en als dat deelbaar is door 3 dan moet je op een nieuwe regel beginnen. Zoiets als j_du_pee heeft gedaan.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
robjanssen schreef op 06 juli 2003 @ 13:25:
Code van RobIII gaat goed werken alleen moet je dan nog een tellertjes bijhouden met het aantal categorien wat je gehad hebt, en als dat deelbaar is door 3 dan moet je op een nieuwe regel beginnen. Zoiets als j_du_pee heeft gedaan.
Je hoeft geen teller bij te houden als je in je db van elke categorie 3 linkjes hebt zitten. En als het er meer zijn laat 'ie het gewoon ook mooi zien. Dus de (pseudo)code zoals 'ie er staat is goed en hoeft niet aangepast te worden.

[edit]
Oh, nu snap ik wat je bedoelt... Je hebt idd gelijk ;)

[ Voor 15% gewijzigd door RobIII op 06-07-2003 15:05 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Dukey
  • Registratie: November 2000
  • Laatst online: 11-08 18:49

Dukey

Ik heb dit getypt hier -->

RobIII; Tis misschien een stomme vraag maar ik probeer net jouw stukje code uit en kom der niet helemaal uit. Wat gebeurt eigenlijk op regel 5 tot en met 7. Je start daar een if maar die wordt niet geeindigd!?! Vervolgens wordt die dezelfde if bij z'n then voorzien van PrintTabelEind en PrintTabelkop!?!? Wat doet hij dan precies?

Ook wel de allergrootste _ _ _ _ _ (vul in met blokletters)


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

ASP:
1
if lPrevID<>-1 then PrintTabelEind

=
ASP:
1
2
3
if lPrevID<>-1 then 
    PrintTabelEind
End if

Zelfde principe, andere schrijfwijze.

[ Voor 24% gewijzigd door gorgi_19 op 06-07-2003 14:51 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dukey
  • Registratie: November 2000
  • Laatst online: 11-08 18:49

Dukey

Ik heb dit getypt hier -->

gorgi_19 schreef op 06 July 2003 @ 14:51:
ASP:
1
if lPrevID<>-1 then PrintTabelEind

=
ASP:
1
2
3
if lPrevID<>-1 then 
    PrintTabelEind
End if

Zelfde principe, andere schrijfwijze.
Ik heb het scriptje net aan de gang, wist helemaal niet dat dat kon zo zonder end if. Weer wat bij geleerd vandaag :*)

Ook wel de allergrootste _ _ _ _ _ (vul in met blokletters)


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als er maar 1 statement na de if komt gebruik ik nooit een end-if. Vind ik persoonlijk duidelijker dan 3 regels verspillen i.p.v. 1 zoals in bovenstaand (gorgi_19's) voorbeeld. Maar da's persoonlijk.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

RobIII schreef op 06 July 2003 @ 14:58:
Als er maar 1 statement na de if komt gebruik ik nooit een end-if. Vind ik persoonlijk duidelijker dan 3 regels verspillen i.p.v. 1 zoals in bovenstaand (gorgi_19's) voorbeeld. Maar da's persoonlijk.
Persoonlijk heb ik meer een voorkeur voor de drie-regelige methodiek; zeker als je met geneste if's gaat werken, vind ik al snel lastig om de overzichten te zien.

MAar da's een persoonlijke voorkeur.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
gorgi_19 schreef op 06 juli 2003 @ 15:01:
[...]

Persoonlijk heb ik meer een voorkeur voor de drie-regelige methodiek; zeker als je met geneste if's gaat werken, vind ik al snel lastig om de overzichten te zien.

MAar da's een persoonlijke voorkeur.
Als je genest werkt wel, maar dan vind ik dit altijd het mooist:
ASP:
1
2
3
4
5
6
7
8
9
if bla.....
  bla
  bla
  if blabla....
    blabla
    blabla
    if blabla then blablabla
  end if
end if

Dus WEL ingesprongen per block, alleen voor de enkele statement na de if niet. Overigens gooi ik in mijn main include altijd een IIF statement:

ASP:
1
2
3
Public Function IIF(expr, exprTrue, exprFalse)
  If Expr then exprTrue else exprFalse
End function


Dan kun je nog kortere statements gebruiken in je asp:

ASP:
1
response.write IIF(Len(strNaam)=0,"Geen naam ingevoerd","Welkom, " & strNaam)


Of:

ASP:
1
MijnVar = IIF(a>b, "A is groter", "A is niet groter")


Su-per-handig! (De IIF statement zit ook in VB dus vandaar dat ik hem vaak gebruik en miste in ASP. En hij's zo makkelijk dat ik 'm zelf altijd maar in mijn main include gooi).

[ Voor 50% gewijzigd door RobIII op 06-07-2003 15:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Jorick
  • Registratie: November 2001
  • Laatst online: 20:26
Ik heb het werkend , alleen ik moet het nog even zien te fixen dat hij om de 3 tabellen(of td's) naar een nieuwe regel gaat en dat de categorie er boven komt te staan (zoals het plaatje).

Igg thanks :)
Pagina: 1