Avatar billede jensdreier Nybegynder
10. maj 2005 - 21:02 Der er 21 kommentarer og
1 løsning

Sidste post, i forum

Hej tag et kig her www.badenudist.dk/stakroge/forum.asp

"Sidstepost"

Jeg er ved at lave et forum.
Og på forsiden til forummet vil jeg gerne have lavet således,
at man kan se hvem der har skrevet den sidste post/indlæg i mine subforums.


Problemet ligger i at jeg har 2 tabeller. den ene er "Topic" den anden er "Reply"
http://www.badenudist.dk/exp/tabel.jpg

Jeg har relationsships mellem de 2,og en anden bruger tabel. Det kan i se her
http://www.badenudist.dk/exp/relation.jpg


Hvordan kan jeg lave det sådan at på www.badenudist.dk/stakroge/forum.asp, at man kan se hvilken bruger der sidst har posted, enten ved at ligge et reply i mit sub forum. eller ved at de har oprettet et nyt topic.


hvis i stadig ikke ved hvad jeg mener så vil jeg have det således, at uanset om men poster replys, eller laver topics. Så skal det nyester reply eller topic stå på forsiden.
Avatar billede busschou Praktikant
10. maj 2005 - 21:17 #1
Hvis du vil vise brugernavn for seneste topic så noget ala
Select bruger.brugernavn From bruger Inner Join topic On bruger.id = topic.brugerid Order By dato,klokken Limit 1
Tilsvarende for reply
Select bruger.brugernavn From bruger Inner Join reply On bruger.id = reply.brugerid Order By dato,klokken Limit 1
Avatar billede jensdreier Nybegynder
10. maj 2005 - 21:50 #2
Ja, det er jo også det jeg tænkte. Men det skal være så det virker på begge måder på en gang.
Sådan at uanset om man poster nyt reply eller ny topic, så er det det nyeste der står på forsiden.

Jeg skal nærmest have slået de 2 tabeller sammen.

Fx hvis jeg laver et topic der heder " hej alle sammen, har i haft en god weekend?" så kommer mit navn, og klokkeslettet jeg skrev det, til at stå på forsiden ud for det subforum jeg har skrevet  det i.

Men hvis en anden så pludselig svare på mit topic, så skal hans brugernavn stå forrest ude på forsiden.

osv osv
Avatar billede busschou Praktikant
11. maj 2005 - 06:56 #3
Utestet, men mon ikke noget ala følgende ville gøre det.
Altså først slå tabellerne topic og reply sammen med Union og dernæst Joine med bruger
Select bruger.brugernavn From bruger Inner Join (Select brugerid,klokken,dato From topic Union Select brugerid, klokken,dato From reply) As total On bruger.id = total.brugerid Order By total.dato,total.klokken Limit 1
Avatar billede jensdreier Nybegynder
11. maj 2005 - 16:30 #4
Nu har jeg aldrig brugt Union før og hele den sql streng du laver der ser meet forvirrende ud. men.

strSQL = "Select bruger.brugernavn From bruger Inner Join (Select brugerid,klokken,dato From topic Union Select brugerid, klokken,dato From reply) As total On bruger.id = total.brugerid Order By total.dato,total.klokken Limit 1"
Set rrs = Conn.Execute(strSQL)
= rrs("total")
rrs.close


Giver mig en fejl der ser således ud

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'total.klokken Limit 1'.

/stakroge/forum.asp, line 167
Avatar billede jensdreier Nybegynder
12. maj 2005 - 12:08 #5
Har rodet en del med den sql streng nu. Og har stadig ikke fået den til at fungerer. andre der vil hjælpe ?
Avatar billede busschou Praktikant
12. maj 2005 - 12:13 #6
Jeg har ikke testet den. men vil mene den burde være rimelig ok. Kan ikke se hvilken operator den mangler som den siger.
HAr du prøvet blot fjerne LIMIT 1 og se hvad den så siger?
Avatar billede jensdreier Nybegynder
12. maj 2005 - 12:26 #7
<%
        strSQL = "Select bruger.brugernavn From bruger Inner Join (Select brugerid,klokken,dato From topic Union Select brugerid, klokken,dato From reply) As total On bruger.id = total.brugerid Order By total.dato,total.klokken"
        Set rrs = Conn.Execute(strSQL)
        = rrs("total")
        rrs.close
        %>

Giver denne fejl

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/stakroge/forum.asp, line 169
Avatar billede busschou Praktikant
13. maj 2005 - 09:04 #8
hvad betyder det her?
---
Set rrs = Conn.Execute(strSQL)
        = rrs("total")
        rrs.close
--
Du sætter ingenting = rrs("total") ?
Linje 169 er det
= rrs("total")
For det eneste du får ud af queryen er brugernavnet :o)
Avatar billede jensdreier Nybegynder
16. maj 2005 - 12:59 #9
Set rrs = Conn.Execute(strSQL)
        = rrs("total")
        rrs.close

rrs er det recordset jeg vil udskrive
Avatar billede busschou Praktikant
16. maj 2005 - 13:02 #10
Din sql siger : Select bruger.brugernavn
Ergo har du kun selected "brugernavn"
Du kan derfor ikke sige: rrs("total")
Da du ikke har udvalgt en total som jeg skrev sidst :o)
Avatar billede jensdreier Nybegynder
16. maj 2005 - 13:04 #11
hmm jeg troede at total var noget du havede defineret til at udskrive brugernavnet med .. som sagt er jeg meget uklar på sql.

som fx her
strSQL = "SELECT COUNT(id) AS Antal FROM reply WHERE forumid = " & rs("f_id") & ""
        Set rrs = Conn.Execute(strSQL)
        = rrs("Antal")
        rrs.close

der udskriver jeg et count med rrs antal
Avatar billede jensdreier Nybegynder
16. maj 2005 - 13:06 #12
Men     strSQL = "Select bruger.brugernavn From bruger Inner Join (Select brugerid,klokken,dato From topic Union Select brugerid, klokken,dato From reply) As total On bruger.id = total.brugerid Order By total.dato,total.klokken"
        Set rrs = Conn.Execute(strSQL)
        = rrs("brugernavn")
        rrs.close
Fungere heller ikke .. du kan se hvad der sker på badenudist.dk/stakroge/forum.asp
Avatar billede busschou Praktikant
16. maj 2005 - 13:07 #13
kigger lige
Men dit start spørgsmål var
---
Hvordan kan jeg lave det sådan at på www.badenudist.dk/stakroge/forum.asp, at man kan se hvilken bruger der sidst har posted, enten ved at ligge et reply i mit sub forum. eller ved at de har oprettet et nyt topic.
---
Som intet siger om total...så derfor har jeg ikke lavet en total.. kan jo ikke læse tanker ;o) ..hmm desværre kunne være sjovt ellers :o)
Avatar billede jensdreier Nybegynder
16. maj 2005 - 13:09 #14
Hmm jeg snakker ikke rigtig om total.

Grundet til jeg prøvet at skrive total er fordi jeg troede at dette "brugerid, klokken,dato From reply) As ----->total<------ On bruger.id " dette var noget der definerede værdien af det der skulle skrives ud .

troede at total var en slags variabel
Avatar billede busschou Praktikant
16. maj 2005 - 13:10 #15
Men der er jo nok en fejl i den sql så. Jeg kan ikke lige gennemskue hvordan man ellers skulle joine tabellerne desværre
Prøv evt stille spørgsmålet i database kategorien
Der sidder en masse database hajer som vil kunne give dig den helt rigtige sql sætning på notime garanteret :o)
Avatar billede busschou Praktikant
16. maj 2005 - 13:11 #16
ahh ok :o)
Det er fordi den er sammensat sql sætningen
Alt du får ud i sidste ende er det allerførste efter den første SELECT
Avatar billede busschou Praktikant
16. maj 2005 - 13:13 #17
men prøv post det i database kategorien.
Sql er rimeligt universalt, rimeligt, så dem som kender mysql eller andre vil nok kunne hjælpe selv om det er access database du har
Avatar billede jensdreier Nybegynder
16. maj 2005 - 13:13 #18
Cult. Men det sql du skrev her hvad ville det nødagtig udskrive ?

fordi det ligner, og er = rrs("brugernavn") ikke den rigtige måde at udskrive det på ?

Tror nemlig at jeg har beskrevet det meget dårligt, selv om jeg har gjor det så godt som jeg kunne, er det en svær fonktion at forklare (selv om den er meget simpel)
Avatar billede jensdreier Nybegynder
16. maj 2005 - 13:15 #19
du milde staveplade til mig
Avatar billede jensdreier Nybegynder
16. maj 2005 - 13:15 #20
men  busschou smid et svar så kan du få nogle point for at prøve =)
Avatar billede busschou Praktikant
16. maj 2005 - 13:22 #21
Jeg smider et svar
Håber du får det til at virke...men jeg er sikker på de kan hjælpe dig i databaser :o)
Avatar billede jensdreier Nybegynder
07. juni 2005 - 20:02 #22
Set rrs = Conn.Execute("SELECT topic.time, bruger.brugernavn FROM topic INNER JOIN bruger ON bruger.id = topic.brugerID WHERE topic.forumID="& rs("f_id")&" UNION ALL SELECT reply.time, bruger.brugernavn FROM reply INNER JOIN bruger ON bruger.id = reply.brugerID WHERE reply.forumID="& rs("f_id")&" ORDER BY time desc") 
       

sådan skulle det gøres :p det tog mig så flere dage at komme frem til det :D og specielt pga en ven der er SQL guru fungere det nu
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