Toon posts:

[ASP] Categories met items

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe maak ik zeg maar een pagina, met categorieen, met daarin alle items van die bepaalde categorieen? Dus net zoiets als dit forum.

-- Categorie --
- item -
- item -
- item -

-- Categorie --
- item -
- item -
- item -

etc


Ik heb al wat geprobeerd met For enzo... maar daar is niks van terrecht gekomen :(

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Uh een database maken en dan alle items een categorienr geven waarna je ze met een loop in een tabel kunt zetten?? Verder lijkt dit op een scriptrequest en die mogen hier niet..

Misschien kan je er beter een tutorial of boek bijpakken..

Verwijderd

Topicstarter
Ik request ook geen script. :)

Maar elk item een categorie geven, tja... maar dan krijg ik alles wel leuk gesorteerd, maar zonder headers, en niks is netjes opgesplitst enzo..

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Kun je alle items ophalen, met de categorienaam erbij? Dan is het niet zo heel moeilijk om in een scriptje te onthouden wat de laatste categorie is, en zodra deze verandert, het kopje tonen...

Exact expert nodig?


  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Je kan toch eerst de categorieën loopen met daaronder alle bijbehorende items? Gewoon 2 aparte tabellen maken.. Geef je alle categorieën als sleutel een categorienr, en alle items als sleutel een itemnr en laat je die het categorienr van de andere tabel erven.. Dan loop je alle categorieën met nog een loop daarin die ervoor zorgt dat bij elke categorie de juiste items komen..

Verwijderd

Topicstarter
Ok, ik heb nog ff wat zitten kloten, heb nu dit, het werkt, maar het is erg langzaam:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<%
Dim action
Dim ID

action = Request.QueryString("action")
ID = Request.QueryString("ID")

Set cnDB = Server.CreateObject("ADODB.Connection")
cnDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Accounts\DSAccounts\creepsworld\creepsworld.com\db\db.mdb"
cnDB.Open

Set rsCategory = Server.CreateObject("ADODB.RecordSet")
rsCategory.Open "SELECT * FROM tbl_Downloads_categories", cnDB

Do While Not rsCategory.EOF
%>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" id="AutoNumber2" bgcolor="#002C40" bordercolor="#000000">
  <tr>
    <td width="100%"><%=rsCategory("CatName")%>&nbsp;</td>
  </tr>
</table>
<%
Set rsDownloads = Server.Createobject("ADODB.Recordset")
rsDownloads.Open "SELECT * FROM tbl_Downloads WHERE Category = '" & rsCategory("CatName") & "'", cnDB

If rsDownloads.EOF Then
Response.Write "<center>No items in this category.</center>"
End If

Do While Not rsDownloads.EOF

Response.Write "<li>" & rsDownloads("FileName") & "</li><br>"
rsDownloads.Movenext
Loop

rsDownloads.Close


rsCategory.Movenext
Loop
rsCategory.Close
cnDB.Close
%>

Hoe kan ik dit wat sneller maken?? Zo niet, jammer dan....

ps, dit is de website waar het op gebruikt wordt: www.creepsworld.com/666/downloads.asp

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Veel langzamer zul je het denk niet krijgen, zal ook geen merkbaar verschil zijn in zo'n kleine code..

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Zucht, lees mijn reactie dan nog een keer, dat zal een stukje sneller zijn omdat je maar 1 query uitvoert ipv 1 om de categorieen op te halen, en per categorie een query om alle items op te halen.

Exact expert nodig?


Verwijderd

Wat sneller maken kan door:

rsCategory("CatName") te vervangen door rsCategory(indexNummer)
en geen select *

Verder kun je alles in response.write's zetten en de response buffer gebruiken.

Iedere keer dat je een %> (asp code afsuiten) gebruikt, moet de hele ASP engine stoppen om alles naar de client te sturen.
Als je dan ook nog aan DB acties begint kan het iid traag worden.

Verwijderd

tis toch allemaal niet zo moelijk. Doe een query op de dbase en doe als eerste order by een order by category. Daarna loop je door de records heen. Laat je code bij elke loop checken of de categorienaam verschilt van die van het vorige record. zo ja, verander je opgeslagen categorienaam en bouw een stukje code dat je nieuwe categorie afhandelt.

Verwijderd

Topicstarter
k... je hoeft niet helemaal geirriteerd te raken hoor.... ben maar een klein jongetje van 17 ...
Anyway,

tis me gelukt, heb dingen in response.write gezet enzo, hij's wel wat sneller nu :) bedankt allemaal.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Verwijderd schreef op 26 september 2002 @ 17:11:
rsCategory("CatName") te vervangen door rsCategory(indexNummer)
en geen select *
Dat zou ik niet doen, mocht dan om welke reden dan ook er een veld ingevoegt worden, klopt je index niet meer. (select * is idd niet aan te raden).
Overigens is het iets sneller door rs.Collect("veld") te doen (.Collect is een hidden feature maar is sneller dan rs("") of rs.Fields("")).

Exact expert nodig?


Verwijderd

Verwijderd schreef op 26 september 2002 @ 21:26:
k... je hoeft niet helemaal geirriteerd te raken hoor.... ben maar een klein jongetje.
Geïrriteerd??? :?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Dat zou weleens op mijn "zucht" kunnen slaan ;)

Exact expert nodig?

Pagina: 1