Avatar billede gatez Nybegynder
19. november 2003 - 13:02 Der er 27 kommentarer og
1 løsning

Froum Tråd

Hejsa.

Jeg har lidt problemmer med mit forum...
Jeg skal have det indlæg som senest har fået et svar til at stå øverst...
De skal altså stå i rækkefølge efter de svar som er skrevet til indlæget.
Lige som her på eksperten og andre normale forumere :)

Jeg har Indlæg og Svar i samme tabel, den enste forskæl er at på et Indlæg er "indlagtype=true" og et Svar er "indlagtype=false"

Her er den kode jeg bruger til at hente indlæg ud med:
Set rs = Conn.Execute("SELECT * FROM forum2 WHERE forumid = '" & request.querystring("id") & "' AND indlagtype = 'True' ORDER BY id DESC LIMIT " & intStart & ", " & intPageSize & ";")

Men lige nu skriver den dem i den rækkefølge som indægene er indtastet i, det skal det ik være.

Håber i forstår mig :)
Avatar billede mm12010 Nybegynder
19. november 2003 - 13:15 #1
Set rs = Conn.Execute("SELECT * FROM forum2 WHERE forumid = '" & request.querystring("id") & "' ORDER BY indlagtype ASC, id DESC LIMIT " & intStart & ", " & intPageSize & ";")
Avatar billede gatez Nybegynder
19. november 2003 - 13:23 #2
Nej det er heller ik helt rigtigt :)
Du viser den ALT i databasen både indlæg og svar på en lang liste...

Den her skal jo være på: indlagtype = 'True'
Men hvis jeg sætter den på så viser den dem ikke i rigtig rækkefølge
Avatar billede mm12010 Nybegynder
19. november 2003 - 13:29 #3
så er jeg ikke helt med på hvad du mener...
Avatar billede eagleeye Praktikant
19. november 2003 - 16:41 #4
To af dine statements:
- Jeg skal have det indlæg som senest har fået et svar til at stå øverst...
- et Svar er "indlagtype=false"

Så skal du i SQL'en da ikke havde indlagtype='true' ?
Avatar billede gatez Nybegynder
19. november 2003 - 18:30 #5
--> eagleey
Det har du ret i... Men den skal kun vise dem som er "true".
Derfor har jeg fjernet "indlagtype=true" fra SQL´en og i stedet tilføjet denne kode under SQL´en:
if indlagtype="true"
then....

Det virker også fint nok, men den viser, dem stadig ikke i rigtig rækkefølge... Håber du forstår mig :)
Avatar billede eagleeye Praktikant
19. november 2003 - 18:34 #6
Ja ok.
Hvordan ved du hvlket svar høre til hvilke indlæg?
Avatar billede gatez Nybegynder
19. november 2003 - 18:36 #7
Når et indlæg oprettes for det jo et id... det id bliver skrevet ind i feldet "indlagid" under alle svar.
Avatar billede eagleeye Praktikant
19. november 2003 - 18:43 #8
ok, så prøv noget som denne, du bliver nød til at skrive alle de kolonne du vil havde med ud her som eks title:


strSQL = "SELECT Max(T2.id) As maxID, forum2.title FROM forum2 INNER JOIN forum2 T2 ON forum2.id = T2.indlagid WHERE forum2.forumid='" & request.querystring("id") & "' GROUP BY forum2.forumid, forum2.id, forum2.title ORDER BY maxID DESC"
Avatar billede gatez Nybegynder
19. november 2003 - 18:46 #9
Okay... Jeg finder lige siden frem og prøver din kode... Takker :)
Avatar billede gatez Nybegynder
19. november 2003 - 18:55 #10
Jeg forstår ikke lige helt hvordan SQL skal se ud når jeg skal hente så mange ting:
    strForumId = RS("id")
    strForumId2 = RS("ForumId")
    strForumindlagid = RS("indlagid")
    strHits = RS("Hits")
    strInlagTopic = RS("IndlagTopic")
    strBrugerId = RS("BrugerId")
    strDato = RS("Dato")
    strTid = RS("Tid")
    strIndlagIcon = RS("IndlagIcon")

Jeg er lidt i tvivl om hvor jeg skal sætte det ind...
Avatar billede eagleeye Praktikant
19. november 2003 - 18:59 #11
Prøv denne, jeg vel ikke engang om den virker ;)

strSQL = "SELECT Max(T2.id) As maxID, forum2.Id, forum2.ForumId, forum2,indlagid, forum2.Hits, forum2.IndlagTopic,forum2.BrugerId, forum2.Dato, forum2.Tid, forum2.IndlagIcon FROM forum2 INNER JOIN forum2 T2 ON forum2.id = T2.indlagid WHERE forum2.forumid='" & request.querystring("id") & "' GROUP BY forum2.forumid, forum2.id, forum2.Hits, forum2.IndlagTopic,forum2.BrugerId, forum2.Dato, forum2.Tid, forum2.IndlagIcon ORDER BY maxID DESC"
Avatar billede gatez Nybegynder
19. november 2003 - 19:06 #12
Det gør det... Jubii !!! 1000 Tak... Man kan altså meget mere end jeg trode i den SQL streng... eagleeye du er bare kongen af ASP ;)

100000 Mange tak!
Smid et svar...
Avatar billede gatez Nybegynder
19. november 2003 - 19:24 #13
Ups... Jeg har fundet en fejl... Mine side tal virker ik mere, altså:
LIMIT " & intStart & ", " & intPageSize & ";

Og hvis jeg opretter et nyt indlæg som ikke indeholder nogle svar så blir det ikke vist...
Er det nemt at ændre ??

Set rs = Conn.Execute("SELECT Max(T2.id) As maxID, forum2.id, forum2.forumid, forum2.brugerid, forum2.indlagid, forum2.hits, forum2.indlagtopic, forum2.dato, forum2.tid, forum2.indlagicon, forum2.indlag, forum2.indlagtype FROM forum2 INNER JOIN forum2 T2 ON forum2.id = T2.indlagid WHERE forum2.forumid='" & request.querystring("id") & "' GROUP BY forum2.forumid, forum2.id, forum2.indlag ORDER BY maxID DESC LIMIT " & intStart & ", " & intPageSize & ";")
Avatar billede gatez Nybegynder
19. november 2003 - 19:33 #14
Rettelse... :)
Mine side tal virker fint... Sorry....
Men hvis jeg opretter et nyt indlæg som ikke indholder nogle svar så blir de ikke vist... Det er det enste problem...
Avatar billede eagleeye Praktikant
19. november 2003 - 19:38 #15
Hmm ja det et godt spørgsmål, da det så ikke er "svaret" som kan styre hvilke der skal vælges. Prøv med LEFT join så:

Set rs = Conn.Execute("SELECT Max(T2.id) As maxID, forum2.id, forum2.forumid, forum2.brugerid, forum2.indlagid, forum2.hits, forum2.indlagtopic, forum2.dato, forum2.tid, forum2.indlagicon, forum2.indlag, forum2.indlagtype FROM forum2 LEFT JOIN forum2 T2 ON forum2.id = T2.indlagid WHERE forum2.forumid='" & request.querystring("id") & "' GROUP BY forum2.forumid, forum2.id, forum2.indlag ORDER BY maxID DESC LIMIT " & intStart & ", " & intPageSize & ";")
Avatar billede gatez Nybegynder
19. november 2003 - 19:42 #16
Jeg ved godt hvorfor... Det er fordi at feldet "indlagid" er tomt på et indlæg... Hvis jeg bare skriver noget i det feldt så bliver indlæget vist.
Men det skal være et unikt tal... Der må ikke stå det samme tal i 2 indlæg så viser den kun det ene...
Avatar billede eagleeye Praktikant
19. november 2003 - 19:44 #17
hvad hvis du skriver 0 så? Det er ikke et brugt id.
Avatar billede gatez Nybegynder
19. november 2003 - 19:48 #18
Den viser det helle ikke hvis jeg bruger "0"...
Man jeg tænkte på om jeg ikke bare kunne få den til at skrive sit eget id nummer i indlagid under oprettelsen ?? Så virker det jo... Spørgsmålet er bare hvordan jeg skal finde det id nummer før det blir oprettet...
Avatar billede eagleeye Praktikant
19. november 2003 - 19:51 #19
man kan få sidste ID ud efter man har indsat via SQL med last_insert_id funktionen så man må lave en ekstra UPDATE efter den er indsat.:


'Først indsæt data
SQL = "INSERT INTO forum2 (kol1, kol2) VALUES('abc', 'xyz')"
Conn.Execute (SQL)

'Find sidste tilføjet ID
SQL = "SELECT last_insert_id FROM forum2"
Set rs = Conn.Execute(SQL)
nytID = rs(0)

'Opdater med nytID
SQL = "UPDATE forum2 SET indlagid = '" & nytID & "' WHERE id = '" & nutID & "'"
Conn.Execute(SQL)
Avatar billede gatez Nybegynder
19. november 2003 - 19:54 #20
Yep det tænkte jeg også på... Men vil det ikke give en konflikt hvis 2 bruger opretter et indlæg på samme tid ??
Så vil den jo finde samme id til begge 2 og dermed vil den kun vise den ene indlæg....?
Avatar billede eagleeye Praktikant
19. november 2003 - 19:56 #21
Det skulle ikke kunne lade sig gøre hvis man bruger samme connetion til både at indsætte og hendte det sidste ID.
Avatar billede gatez Nybegynder
19. november 2003 - 19:58 #22
Okay takker!!!
1000 Tak :-)
Smid et svar...
Avatar billede gatez Nybegynder
19. november 2003 - 19:58 #23
Så du kan få point..
Avatar billede eagleeye Praktikant
19. november 2003 - 19:59 #24
Ok ;)
Avatar billede gatez Nybegynder
19. november 2003 - 20:00 #25
Mange takker....
Avatar billede gatez Nybegynder
19. november 2003 - 20:17 #26
Har du tid til et hurtigt tip ??

Jeg for fejl når jeg bruger denne kode:
SQL2 = "SELECT last_insert_id FROM forum2"
Set rs2 = Conn.Execute(SQL2)
nytID = rs2(0)

Fejlen er:  last_insert_id

[TCX][MyODBC]You have an error in your SQL syntax near 'FROM forum2' at line 1
Avatar billede eagleeye Praktikant
19. november 2003 - 20:20 #27
det kan godt være der lige skal () efter, prøv lige med det:

SQL2 = "SELECT last_insert_id() FROM forum2"
Avatar billede gatez Nybegynder
19. november 2003 - 20:22 #28
Yeps... det hjalp... Tak igen igen ;-)
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