Avatar billede steen_hansen Forsker
12. januar 2018 - 20:09 Der er 3 kommentarer

INSERT data, tag deneste ID fra det netop indsatte RS og overfør det ID til ny tabel

Jeg har en form, som poster data i tabellen "messages". Det virker fint nok:

        Conn.Execute("INSERT INTO messages (author, vTitle, message, duration, dato) VALUES (" & _
            "'" & SQLEncode(author) & "', " & _
            "'" & Trim(SQLEncode(Request.Form("title"))) & "', " & _
            "'" & SQLEncode(Request.Form("message")) & "', " & _
            "" & Request.Form("duration") & ", " & _
            "'" & Dato & "')")

Jeg vil gerne lave, så hver enkelt kan se, om der er ulæste beskeder. Er de ulæste, skal RS("read") være 0 (nul)

Går man ind på siden, skal der øverst på siden postes 1 RS("read"). Den bliver ikke svær.

Så jeg hiver seneste messageID fra tabellen "messages"

        Set RSmessageID = Conn.Execute("SELECT messageID FROM messages ORDER BY messageID DESC LIMIT 1;")

Det virker helt fint.

Jeg hiver samtlige brugernavne tabellen "users"

        Set RSMessageUserName = Conn.Execute("SELECT username FROM users")

Jeg har ikke lige testet den endnu, men den burde hive samtlige usernames

Dem vil jeg så smide ind i tabellen "messages_read"

        Conn.Execute("INSERT INTO messages_read (messID, username_read) VALUES (" & _
            "" & xID & ", " & _
            "'" & xUser & "')")

Men der sker intet. Der kommer ikke noget med over. Hvad laver jeg galt? Det burde være så simpelt.

Hele scriptet:

        Conn.Execute("INSERT INTO messages (author, vTitle, message, duration, dato) VALUES (" & _
            "'" & SQLEncode(author) & "', " & _
            "'" & Trim(SQLEncode(Request.Form("title"))) & "', " & _
            "'" & SQLEncode(Request.Form("message")) & "', " & _
            "" & Request.Form("duration") & ", " & _
            "'" & Dato & "')")

        Dim RSmessageID, RSMessageUserName, xID, xUser
        Set RSmessageID = Conn.Execute("SELECT messageID FROM messages ORDER BY messageID DESC LIMIT 1;")
        Set RSMessageUserName = Conn.Execute("SELECT username FROM users")

        xID = RSmessageID("messageID")
        xUser = RSMessageUserName("username")

        Conn.Execute("INSERT INTO messages_read (messID, username_read) VALUES (" & _
            "" & xID & ", " & _
            "'" & xUser & "')")
Avatar billede steen_hansen Forsker
12. januar 2018 - 20:15 #1
Jeg skal bare have de to værdier med over på samtlige brugere.

Her er standardværdien 0 (nul) i record settet "read"

Når den enkelte bruger går ind på siden, skal den værdi ændres til 1, hvilket indikerer, at brugeren og har 0 ulæste beskeder

Næste gang en bruger skriver en besked, kommer der et ID, hvor der som standard bliver angivet 0.

SQL tæller antallet af record sets med værdien 0, og så kan hver enkelt bruger se hvor mange ulæste beskeder der er. Det er hele idéen.
Avatar billede steen_hansen Forsker
12. januar 2018 - 21:50 #2
Set RSMessageUserName = Conn.Execute("SELECT username FROM users")

- virker alligevel ikke. Der skal vel køres en loop med det specifikke ID på hvert username ..............?
Avatar billede bsn Forsker
15. april 2020 - 17:04 #3
Kan du forklare overordnet hvad systemet skal bruges til...
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