27. marts 2001 - 21:01Der er
35 kommentarer og 1 løsning
Top 5 debatindlæg af samtlige forums i dben
Hejsa,
Jeg er i øjeblikket igang med at lave et debatforum, men jeg mangler en side hvor der vises de nyeste 5 debatindlæg. Hver debatforum har et table i databasen. Dvs. den skal altså finde de 5 nyeste indlæg tilsammen i alle tables. Der er et et table der indholder alle usernames til forums. Disse kan jo trækkes p så den kan finde de tables, men hvordan man får 5 nyeste af alle forums, ved jeg ikke...
Jeg prøver lige, men hvordan kan man så tage alle usernames og indsætte dem fra det table med disse? Her kommer de ud: Set rsUsers = Conn.Execute (\"SELECT * FROM Users;\")
Jeg ved ikke lige hvordan. Set rsClients = Conn.Execute (\"SELECT TOP 5 * FROM \" & rsUsers(\"username\") & \" WHERE AND Trash=False ORDER BY Followed DESC\")
I samme database:-) Jeg har ét table der hedder Users. Det indeholder usernames til samtlige forums. Disse skal den bruge... Hvis det kan lade sig gøre.
Set rsClients = Conn.Execute (\"SELECT TOP 5 * FROM \" & rsUsers(\"username\") & \", \"& rsUsers(\"username\") & \", WHERE AND Trash=False ORDER BY Followed DESC
Det går jo ikke bare at sætte variablerne ind i en SQL-streng i et loop,for den skal jo helst være fleksibel, så den tager alle de usernames, uanset antal...?
træk dine katerogier ud på noget der ligner følgende:
set conn = server.createobject(\"ADODB.Connection\") conn.open \"dsn\", \"uid\", \"pwd\" sql = \"select top 5 id, titel from <tabel1>\" set res = conn.execute(sql) n = res.eof if n >= 0 then a = res.getrows() else \"skriv en fejlbesked!\" end if
sql1 = \"select top 5 * from <tabel2>\" set res = conn.execute(sql) n1 = res.eof if n1 >= 0 then b = res.getrows() else \"skriv en fejlbesked!\" end if
*****vise dine kategoier:**** for row = 0 to ubound(a,2) response.write a(0,row) response.write a(1,row) next for row = 0 to ubound(b,2) response.write b(0,row) response.write b(1,row) next
Nej jeg har ingen side. Men prøv lige at kigge på eksemplet her. Jeg har rsUsers(\"username\") fra det table med alle username. Jeg skal have den til at tage alle disse usernames og tage top 5 af samtlige. Altså jeg angiver ikke på forhånd navne på mine tables, da det jo er alt efter hvad mine debatforums hedder. Så derfor skal den før hente oplysningerne fra det table der hedder Users
Set rsClients = Conn.Execute (\"SELECT TOP 5 * FROM \" & rsUsers(\"username\") & \", \"& rsUsers(\"username\") & \", WHERE AND Trash=False ORDER BY Followed DESC
Du vil have vist top 5 fra en database med indlæg fra et forum!!! Så kan man klikke på fks. 1 og komme til den side hvor han så har lagt sit indlæg!!! Forstår jeg rigtig eller hvor går det galt!
Et eksempel kunne være denne streng, men der har jeg jo fastlagt på forhånd hvad mine tables hedder. Altså deres navn. Det er problemet, ellers udemærket
SELECT TOP 5 * FROM tabel1,tabel2,tabel3 ORDER BY Dato DESC
SELECT TOP 5 * FROM detbat1,debat2,debat3 ORDER BY Dato DESC Det er nok noget lignende denne, men den skal bare fortsætte indtil den har indsat alle oplysninger fra \"Users\"
Altså en dynamisk SQL-streng der vælger top5 af de forums, hvor den får navnene på tables fra det table der hedder Users. Meget generalt. På denne måde skal man ikke ændre i coden, hvergang man opretter nye tables
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.