Avatar billede plasmon Nybegynder
05. maj 2003 - 10:51 Der er 12 kommentarer og
1 løsning

sorter så undersider kommer under den rigtige hovedside.

Hej jeg skal sortere en række sider.

I databasen ser det sådan her ud:
ID  u_id  titel
1    0    Dansk
2    0    Mat
3    1    Dansk i 9.
4    1    Dansk i 4.
5    1    Mat i 2.

De skal så sorteres sådan at hvis en side har u_id = 0 er den hovedside, og så skal siderne med u_id = hovedsiden vises under hovedsiden i listen.
f.eks
Dansk
  Dansk i 9.
  Dansk i 4.
Mat
  Mat i 2.

Hvordan gør jeg dette.
Avatar billede erikjacobsen Ekspert
05. maj 2003 - 11:01 #1
Din sqlsætning kan være (vi siger din tabel hedder "fag"):

select t1.titel as hovedtitel,t2.titel as undertitel
from fag t1, fag t2
where t1.u_id=0 and t2.u_id=t1.ID
order by hovedtitel,undertitel
Avatar billede plasmon Nybegynder
05. maj 2003 - 11:18 #2
ok, jeg får en fejl.

Error Type:
Microsoft JET Database Engine (0x80040E10)
No value given for one or more required parameters.
/portal2/Script.asp, line 497

og hvad betyder t1 og t2?
min tabel hedder "sider"
Jeg skal også bruge værdierne fra rækken id, og u_id så jeg har ændret sqlsætningen til:

sql="Select sider.id, sider.u_id, t1.titel as hovedtitel, t2.titel as undertitel from sider t1, sider t2 where t1.u_id=0 and t2.u_id=t1.ID order by hovedtitel,undertitel"
Avatar billede erikjacobsen Ekspert
05. maj 2003 - 11:26 #3
sql="Select t2.id as underid, t2.u_id as underu_id, t1.titel as hovedtitel, t2.titel as undertitel from sider t1, sider t2 where t1.u_id=0 and t2.u_id=t1.ID order by hovedtitel,undertitel"

når du skal join en tabel med sig selv, er du nødt til at omdøbe den,
og det gør konstruktionen "sider t1"
(man kunne nøjes med én gang...)
Avatar billede plasmon Nybegynder
05. maj 2003 - 11:28 #4
Jeg ligger lige hele min kode her op, så kan det være at det er nemmere at løse fejlen.

Function DeletePage() ' denne funktion viser en liste over sider, som så kan fjernes fra databasen.
'-------------------------------------------------------------------------------------
sql="Select sider.id, sider.u_id, t1.titel as hovedtitel, t2.titel as undertitel from sider t1, sider t2 where t1.u_id=0 and t2.u_id=t1.ID order by hovedtitel,undertitel"

Set DeletePageItems = cn.execute(sql)
    DeletePage = DeletePage & "<b>Som lærer kan du kun slette de sider du selc har oprettet.</b><br><br>"
    While Not DeletePageItems.Eof
            DeletePage = DeletePage & "<b><a href='default.asp?page=" & DeletePageItems("id") & "&u_id=" & DeletePageItems("u_id") & "'>" & DeletePageItems("titel") & "</a></b>&nbsp;&nbsp;|&nbsp;&nbsp;<a href='default.asp?action=delpage&page_id=" & DeletePageItems("id") & "'>Slet siden</a> | <a href='default.asp?action=editpage&id=" & DeletePageItems("id") & "'>Opdater/Ændre siden</a><br>"
    DeletePageItems.movenext
    wend
set DeletePageItems = nothing
'-------------------------------------------------------------------------------------
End Function


Dette er linie 497:

Set DeletePageItems = cn.execute(sql)
Avatar billede plasmon Nybegynder
05. maj 2003 - 14:03 #5
Der er stadig fejl i linie 497:

Set DeletePageItems = cn.execute(sql)
Avatar billede erikjacobsen Ekspert
05. maj 2003 - 14:15 #6
Hvis du skriver det der står i din kode, så er der fejl. Jeg er kommet med
en forslag til ændring.
Avatar billede plasmon Nybegynder
05. maj 2003 - 15:06 #7
Der er stadig samme fejl:
No value given for one or more required parameters.
/portal2/Script.asp, line 512

linie 511 =
sql="Select t2.id as underid, t2.u_id as underu_id, t1.titel as hovedtitel, t2.titel as undertitel from sider t1, sider t2 where t1.u_id=0 and t2.u_id=t1.ID order by hovedtitel,undertitel"


linie 512 =
Set DeletePageItems = cn.execute(sql)
Avatar billede erikjacobsen Ekspert
05. maj 2003 - 15:20 #8
Jeg har lige testet i MySql med

Select t2.id as underid, t2.u_id as underu_id, t1.titel as hovedtitel, t2.titel as undertitel
from sider t1, sider t2
where t1.u_id=0 and t2.u_id=t1.ID order by hovedtitel,undertitel

og den giver:

4,1,Dansk,Dansk i 4.
3,1,Dansk,Dansk i 9.
5,2,Mat,Mat i 2.

som jeg forventer. Jeg synes ikke at vide at der er spor forskel på
MsSql og MySql i det jeg har skrevet i SQL-sætningen ?
Avatar billede plasmon Nybegynder
05. maj 2003 - 15:33 #9
Ok, men der er noget med access, det er ikke alle "rigtige" sql sætninger som virker der. Og jeg bruger access.
Avatar billede erikjacobsen Ekspert
05. maj 2003 - 15:39 #10
Bruger du "Microsoft Access Driver" ? Mon du kan skifte til JET-driveren?
Avatar billede plasmon Nybegynder
05. maj 2003 - 16:11 #11
set cn = server.createobject("ADODB.Connection")
cn.open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath("db/database.mdb")

er det ikke jet driveren? for det er den jeg bruger
Avatar billede erikjacobsen Ekspert
05. maj 2003 - 18:37 #12
Jow, skal vi opgi' ? ;)
Avatar billede plasmon Nybegynder
05. maj 2003 - 18:45 #13
Ja lad os det. Ellers tak for hjælpen.

LUKKET
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