Avatar billede martens Guru
08. juni 2001 - 15:40 Der er 12 kommentarer og
1 løsning

Gruppere efter kategori

Er det muligt at gruppere efter en kategori, således at man får listet alle Kategorierne løbende med de tilhørende underkategorier fortløbende listet...
Altså
Kategori 1 Software
Kategori 2 Hardware
Kategori 3 Utilities
Kategori 4 New Books

Resultatet skulle gerne lige dette :

Software
  Windows
  Linux

Hardware
  Harddisk
  Grafikkort
  RAM
  CD-ROM drev
  DVD-drev

Utilities
  CD-Medier
  Printerkabler
  bla bla

New Books
  Windows XP In A Nutshell
  Why Pinguins Have No Windows In Their House
  etc.

- Det kunne være SKØNT hvis det er mulig at lave en slags tabel med 3 eller 5 kolonner med en automatisk ombrydning.

------
Altså Kategorier er tilknyttet et ID og til disse ID´s er der tilkknyttet X antal \"underkategorier\"

mvh martens
Avatar billede dudal Nybegynder
08. juni 2001 - 15:45 #1
Lav en tabel med kategorier:

Id | Kategorinavn

Så en tabel med Underkategorier.

Id | Underkategorinavn | KategoriId

Lav en sql:

SELECT * FROM Kategorier AS Kat INNER JOIN Underkategorier AS UKat ON Kat.Id = UKat.KategoriId

Så en while

While NOT Rs.EOF
If rs(\"Kategori\") <> oldKat Then
Response.Write \"<br><br><b>\" & rs(\"Kategorinavn\") & \"</b><br>\"
End If
rs(\"Underkategorinavn\")

oldKat = Rs(\"Kategorinavn\")
Rs.MoveNext
WEND

Så skulle den mere eller mindre være der.

/Jesper
Avatar billede dudal Nybegynder
08. juni 2001 - 15:47 #2
Du skal i øvrigt nok lige pille lidt ved sql\'en....

SELECT Kat.Kategorinavn,UKat.Underkategorinavn, UKat.Id FROM Kategorier AS Kat INNER JOIN Underkategorier AS UKat ON Kat.Id = UKat.KategoriId

Og så skal
If rs(\"Kategori\") <> oldKat Then
lige være
If rs(\"Kategorinavn\") <> oldKat Then

/Jesper
Avatar billede dudal Nybegynder
08. juni 2001 - 16:16 #3
Alternativt kan du klare det med en enkelt tabel:

Id | IsTop | Parent | Catname
1    1        1      Biler
2    0        1      Ford
3    0        1      Opel
7    0        1      Porche
4    1        4      Cykler
5    0        4      Kildemoes
6    0        4      Centurion

Og så bruge følgende asp kode:

Set Rs = Conn.Execute(\"SELECT Parent, Catname, IsTop FROM mytest Order by Parent, Istop Desc, Catname\")

While Not Rs.EOF

If Rs(\"IsTop\") Then
    Response.Write \"<br><br><b>\" & Rs(\"CatName\") & \"</b><br>\"
Else
    Response.Write \"<li>\" & rs(\"Catname\")
End If

Rs.MoveNext
WEND


/Jesper:-)
Avatar billede martens Guru
08. juni 2001 - 16:57 #4
den kommer med følgende fejl

Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03FD)
\'Case\' var ventet
/TEST/default.asp, line 9, column 7
SELECT * FROM Kategorier
------^
Avatar billede martens Guru
08. juni 2001 - 16:57 #5
<!--#include file=\"functions.inc\"-->
<%
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN

strSQL = \"SELECT * FROM itbase\"
Set rs = myConn.Execute(strSQL)

SELECT * FROM Kategorier AS Kat INNER JOIN Underkategorier AS UKat ON Kat.Id =
UKat.KategoriId
While NOT Rs.EOF
If rs(\"Kategorinavn\") <> oldKat Then
Response.Write \"<br><br><b>\" & rs(\"Kategorinavn\") & \"</b><br>\"
End If
rs(\"Underkategorinavn\")

oldKat = Rs(\"Kategorinavn\")
Rs.MoveNext
WEND
    Loop
End If
myConn.Close
Set myConn = Nothing

%>
Avatar billede dudal Nybegynder
08. juni 2001 - 19:30 #6
<!--#include file=\"functions.inc\"-->
<%
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN

strSQL = \"SELECT * FROM Kategorier AS Kat INNER JOIN Underkategorier AS UKat ON Kat.Id = UKat.KategoriId\"
Set rs = myConn.Execute(strSQL)

While NOT Rs.EOF
If rs(\"Kategorinavn\") <> oldKat Then
Response.Write \"<br><br><b>\" & rs(\"Kategorinavn\") & \"</b><br>\"
End If
rs(\"Underkategorinavn\")

oldKat = Rs(\"Kategorinavn\")
Rs.MoveNext
WEND
    Loop
End If
myConn.Close
Set myConn = Nothing

%>

Husk at tilpasse det til dit miljø.. Altså de rigtige feltnavne og tabelnavne...

/Jesper
Avatar billede martens Guru
08. juni 2001 - 21:15 #7
Så kommer denne fejl :

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A040E)
\'Loop\' uden \'Do\'
/TEST/default.asp, line 18
Loop

----------
mvh martens
Avatar billede dudal Nybegynder
08. juni 2001 - 21:43 #8
<!--#include file=\"functions.inc\"-->
<%
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN

strSQL = \"SELECT * FROM Kategorier AS Kat INNER JOIN Underkategorier AS UKat ON Kat.Id = UKat.KategoriId\"
Set rs = myConn.Execute(strSQL)

While NOT Rs.EOF
If rs(\"Kategorinavn\") <> oldKat Then
Response.Write \"<br><br><b>\" & rs(\"Kategorinavn\") & \"</b><br>\"
End If
rs(\"Underkategorinavn\")

oldKat = Rs(\"Kategorinavn\")
Rs.MoveNext
WEND
myConn.Close
Set myConn = Nothing

%>


Avatar billede martens Guru
08. juni 2001 - 21:56 #9
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01C2)
Antallet af argumenter er forkert eller egenskabstildelingen er ugyldig: \'rs\'
/TEST/default.asp, line 13
Avatar billede martens Guru
08. juni 2001 - 21:58 #10
Jeg har fået din ganske udemærkede idé til at virke den med én tabel .... GENIALT.....

men det med den anden version - Det er sgu underligt....

Dine 300 point er snart på vej - Velfortjente 300 point..

mvh martens
Avatar billede dudal Nybegynder
08. juni 2001 - 22:01 #11
Den version med 2 tabeller er \"den mest rigtige\", men den med 1 er i dette tilfælde 100% lige så god. Metoden med at dele informationerne op i flere tabeller er mest til større database løsninger.

/Jesper
Avatar billede martens Guru
08. juni 2001 - 22:26 #12
Jeg har også lavet et lille fikst interface i Access, der linker to forespørgsler sammen i én formular baseret på \"parent\"...
Så idéen er slet ikke så tosset endda.

mvh martens

- Jeg opretter lige et nyt spørgsmål vedr. fonte i asp.....

Og så er pointene vel dine nu....

Tak for hjælpen - Du har løst en idé jeg har haft længe til en links-database baseret på kategorier.
Avatar billede martens Guru
08. juni 2001 - 22:31 #13
dudal >> Se dette : http://www.eksperten.dk/spm/79960

mvh martens
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester