Avatar billede pfp Nybegynder
02. december 2003 - 20:54 Der er 9 kommentarer og
1 løsning

Udskriv gruppevis

Hej,

Jeg har følgende databaseopbygning i mySQL:

Tabel: pages
_____________________
pageid
Title
county

Tabel: county
_____________________
CountyID
Name

Tabellen "pages" indeholder så f.eks. 5 poster med County = 0, 3 med County = 18 og 4 med County = 9.

Nu vil jeg så gerne udskrive dem gruppevis. Jeg prøver lige at illusterere:

NAME(COUNTY=0)
-----------------------
- post
- post2
- post3
- post4
- post5

NAME(COUNTY=18)
-----------------------
- post
- post2
- post3

NAME(COUNTY=9)
-----------------------
- post
- post2
- post3
- post4

Jeg tror lidt det skal gøres med GROUP BY i SQL'en, men kan ikke rigtig få det til at spille?

Noget der kan hjælpe?

/pfp
Avatar billede Slettet bruger
02. december 2003 - 21:15 #1
sqlcounty = "select * from county order by CountyID desc"

set rscounty = conn.execute(sql)

do while not rscounty.eof

sqlpages = "select * from pages where county = "' & rscounty("CountyID") & "' order by pageid desc"

'udskriv gruppenavn

set rspages = conn.execute(sqlpages)

do while not rspages.eof

'udskriv gruppe

rspages.movenext

loop

rscounty.movenext

loop
Avatar billede Slettet bruger
02. december 2003 - 21:16 #2
sqlcounty = "select * from county order by CountyID desc"

set rscounty = conn.execute(sqlcounty)

do while not rscounty.eof

sqlpages = "select * from pages where county = "' & rscounty("CountyID") & "' order by pageid desc"

'udskriv gruppenavn

set rspages = conn.execute(sqlpages)

do while not rspages.eof

'udskriv gruppe

rspages.movenext

loop

rscounty.movenext

loop



glemte lige at udskifte sql med sqlcounty
Avatar billede Slettet bruger
02. december 2003 - 21:17 #3
og så kan du self vælge at udskrive det som asc i stedet for desc...
Avatar billede pfp Nybegynder
02. december 2003 - 21:28 #4
Hej kvadratrod!

Tak for dit indlæg.

Det ser faktisk godt ud, men jeg kommer lige i tanke om noget. Alle pages har main = 1 eller main = 2.

Alle sider skal så udskrives under deres respektive grupper. Alle med main = 1 skal udskrives med:
Response.Write "<a href='hoved.asp?pageid=" & rs("pageid") & "'>" & rs("Title") & "</a>"

Dem med main = 2 skal udskrives med:
Response.Write "<a href='sub.asp?pageid=" & rs("pageid") & "'>" & rs("Title") & "</a>"

Tror du det er noget du kan klare?
Avatar billede Slettet bruger
02. december 2003 - 21:31 #5
sqlcounty = "select * from county order by CountyID desc"

set rscounty = conn.execute(sqlcounty)

do while not rscounty.eof

sqlpages = "select * from pages where county = "' & rscounty("CountyID") & "' order by pageid desc"

'udskriv gruppenavn

set rspages = conn.execute(sqlpages)

do while not rspages.eof

if rspages("main")=1 then
  response.write ""<a href='hoved.asp?pageid=" & rs("pageid") & "'>" & rs("Title") & "</a>"
else
  response.write "<a href='sub.asp?pageid=" & rs("pageid") & "'>" & rs("Title") & "</a>"
end if

rspages.movenext

loop

rscounty.movenext

loop

Hvis det altså er en kolonne i din database... ellers må du forklare det lidt nærmere...
Avatar billede pfp Nybegynder
02. december 2003 - 21:34 #6
jeg tror dit sidste kode er helt perfekt...tester lige.
Avatar billede Slettet bruger
02. december 2003 - 21:41 #7
du skal lige huske at skifte rs ud med rspages:

sqlcounty = "select * from county order by CountyID desc"

set rscounty = conn.execute(sqlcounty)

do while not rscounty.eof

sqlpages = "select * from pages where county = "' & rscounty("CountyID") & "' order by pageid desc"

'udskriv gruppenavn

set rspages = conn.execute(sqlpages)

do while not rspages.eof

if rspages("main")=1 then
  response.write ""<a href='hoved.asp?pageid=" & rspages("pageid") & "'>" & rspages("Title") & "</a>"
else
  response.write "<a href='sub.asp?pageid=" & rspages("pageid") & "'>" & rspages("Title") & "</a>"
end if

rspages.movenext

loop

rscounty.movenext

loop
Avatar billede pfp Nybegynder
02. december 2003 - 22:00 #8
Jeg har testet det og rettet et par fejl med ' og ":

    <%
sqlcounty = "select * from county WHERE CountyID > 0"

set rscounty = conn.execute(sqlcounty)

do while not rscounty.eof

sqlpages = "select * from pages where county = " & rscounty("CountyID")

'udskriv gruppenavn


set rspages = conn.execute(sqlpages)
Response.Write "<b>" & ucase(rsCounty("Name")) & "</b><br>"
do while not rspages.eof


if rspages("main")=1 then
  response.write "<a href='../kommune.asp?pageid=" & rspages("pageid") & "&county=" & rspages("county") & "'><b>" & rspages("Title") & "</a></b><br>"
else
  response.write "<a href='../kommune_sub.asp?pageid=" & rspages("pageid") & "&parent=" & rspages("parent") & "&county=" & rspages("County") & "'>" & rspages("Title") & "</a><br>"
end if

rspages.movenext

loop

rscounty.movenext

loop
%>

Men den udskrivet det ikke helt korrekt. Nogle af undersiderne underskriver den ikke lige under sin hovedside, men smider dem istedet bare helt i bunden...hvordan kan det være?
Avatar billede Slettet bruger
03. december 2003 - 06:28 #9
det er her, det går galt:
sqlcounty = "select * from county WHERE CountyID > 0"
her tager den county's der er over 0, men i dit første indlæg skrive du et eksempel, er er 0.. dette vil ikke komme med.. derfor skal du ikke skrive WHERE CountyID > 0, men bare:

sqlcounty = "select * from county"
Avatar billede pfp Nybegynder
03. december 2003 - 20:52 #10
Hej.

Nej det er ikke det der gør forskellen, jeg har prøvet både med og uden. Jeg ønsker kunne at trække alt ud hvor County > 0 da alle hvor County = 0 skal trækkes ud for sig selv...
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