Avatar billede Slettet bruger
01. april 2004 - 12:45 Der er 8 kommentarer og
1 løsning

indsætte poster i db fra multiple textarea

Hvordan skal insert sætningen se når input felterne er som følger:

http://www.inovision.dk/muh.asp

Jeg vil meget gerne sætte en post ind i databasen pr. valgte kategori a la:

Dim elem,itemselected,abonnement
For Each elem In Request.Form("GrpID")
abonnement = Request.form("email")
itemselected = Request.form("NewsID" & elem)
IF itemselected <> "" Then
Conn.execute("Insert into Directmail_abonnentgrupper (AbonnentID,NyhedsgruppeID,DomainID,VersionID) VALUES ('"&abonnement&"','"&elem&"')")
end if
Next

men hvordan ville koden se ud???
Avatar billede Slettet bruger
01. april 2004 - 12:45 #1
husk man kan vha ctrl vælge flere kategorier...
Avatar billede nute Nybegynder
01. april 2004 - 13:00 #2
umiddelbart så lyder det som om du har valgt en dårlig løsningsmodel. hvis du, for hver kategori, skal sætte de samme oplysninger ind i din tabel, så vil du ende op med de samme oplysninger et hav af gange ... not good.

jeg vil foreslå at du har alle dine kategorier i én tabel (noget du sikkert allerede har), derefter har du alle dine brugere/kunder/abonnenter i én tabel, og en tredje tabel der knytter de to tabeller sammen. Denne tabel indeholder så relationer fra abonnenter til kategorier. Fx:

abonnenter:
ID: 1, Navn: nute
ID: 2, Navn: jean

kategorier:
ID: 1, Kategori: Lidt af hvert
ID: 2, Kategori: Pop
ID: 3, Kategori: Disco
ID: 4, Kategori: Blues
ID: 5, Kategori: Soul

relationstabel:
ID: 1, abID: 1, katID: 1
ID: 2, abID: 1, katID: 3
ID: 3, abID: 1, katID: 4
ID: 4, abID: 2, katID: 3
ID: 5, abID: 2, katID: 5

Denne relationstabel kan læses på følgende måde:

abonnenten med ID 1 (abID), abonnerer på kategoriene 1,3 og 4. abonnenten med ID 2 abonnerer på kategoriene 3 og 5.

på denne måde så slipper du for at have Navn og Email oplysningene for *hver* kategori en person abonnerer på. dette er også den almindelige måde at designe databaser, i lignende situationer

/nute
Avatar billede Slettet bruger
01. april 2004 - 13:25 #3
-> Nute

Fair nok...det må jeg få gjort...men du svarede ikke på mit spørgsmål som er det samme hvad enten jeg bruger min eller din måde.

Hvordan skal jeg fra multiple textarea indsætte en post for hver gruppe der vælges.?

det er det der piner mig lidt :-)
Avatar billede nute Nybegynder
01. april 2004 - 13:47 #4
grov skidse:

- tjek om brugeren allerede er oprettet (select id from abonnent where navn='' and mail='')
- hvis brugeren ikke er oprettet, insert denne i abonnent tabellen
- hvis brugeren ikke er oprettet, hent så id'et fra den nyoprettede bruger ellers brug id'et fra første punkt
- slet alle kategorier registreret for denne bruger (delete from relationstabel where abid = [bruger id])
- for hver kategori, set ind i relationstabel.

arrKat = SPLIT( Request("kategori"), "," )
for i = 0 to UBound( arrKat )
    insert into relationstabel (abid, katid) values (abid, arrKat(i))
next

/nute

PS! det er ikke et multiple textarea ... det er en multiple selectbox ;o]
Avatar billede Slettet bruger
01. april 2004 - 14:16 #5
det er jo perfekt...men en lille ting

den første kategori smider den rigtig ind men de næste kommer der et mellemrum ind før kategori ID.?????
Avatar billede nute Nybegynder
01. april 2004 - 14:24 #6
oki ... så kan du gøre én af to ting (eller begge ... det skader ikke )

1) denne linie:

arrKat = SPLIT( Request("kategori"), "," )

kan være:

arrKat = SPLIT( Request("kategori"), ", " )

2) brug "TRIM" på dit kategoriid når du sætter det ind i basen:

insert into relationstabel (abid, katid) values (abid, TRIM( arrKat(i) ) )

det er også lidt underlig at du får mellemrum ... har du ikke kategoriid som et numerisk felt i din database ?

/nute
Avatar billede Slettet bruger
01. april 2004 - 14:34 #7
-> Nute

Tak for hjælpen

Smid et svar
Avatar billede nute Nybegynder
01. april 2004 - 14:37 #8
anytime :-)

svar
Avatar billede nute Nybegynder
01. april 2004 - 15:05 #9
- takker -
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