Avatar billede ares Nybegynder
17. marts 2002 - 18:34 Der er 10 kommentarer og
1 løsning

comma in query + læg i databasen

Hi all eksperts...

Jeg har lavet en komplet indkøbskurv. Men jeg har lidt problemer med et enkelt område.

Kurven er en tabel i databasen som består af:
ID - auto indeks
User_Id - Brugerens IP-adresse
Vare_nummer - den vare der er lagt i kurven
Vare_antal - det antal, kunden ønsker

Jeg mangler lidt vejledning iforhold til hvordan jeg opdatere databasen når kunden ønsker at ændre Vare_antal på et vare_nummer.

Jeg har prøvet alt muligt lavet et unik "id" til antal felterne i formen - med y = y + 1

Men jeg kan ikke hitte ud af hvordan jeg skal lægge dem i databasen.

Kan man bruge For each Item eller hvordan. Jeg ved jo ikke hvormange vare kunden ligger i kurven.

Håber der er nogen der kan hjælpe...
Avatar billede bjarke-b Nybegynder
17. marts 2002 - 18:39 #1
Istedet for at identificere brugeren med hans ip adr. ville jeg foreslå du bruger hans session id ( Session.SessionID ).

Det er vel bare at lave et query

UPDATE kurv_tabel SET Vare_antal = " & nyt_vare_antal & " WHERE vare_nummer = " & varenummer & " AND User_id = '" & Session.SessionID & "';


?
Avatar billede ares Nybegynder
17. marts 2002 - 18:43 #2
Jamen hvad hvis der er to vare_antal fra kurven..

Vare_nummer=1 + nyt_antal=4
Vare_nummer=2 + nyt_antal=2

Det er her hele problemet ligger.. jeg har lavet en udgave der kan opdatere et varenummer... men lige så snart der er mere end et varenummer i kurven får jeg fejlen

Syntax error (comma) in query expression 'ID = 72, 79'.

what to do.. ???
Avatar billede ares Nybegynder
18. marts 2002 - 02:44 #3
Er der nogen der kan hjælpe ???

Jeg har prøvet noget i retning af...

Dim arr_antal, i, arr_id
arr_antal = spilt(request("vare_antal"), ",")
arr_Id = Spilt(Request("ID"), ",")

For i = 0 to uBound(Arr_antal)

    SQL="Select * from kurv Where ID = " & arr_Id & ""
    Set Rs=Conn.Execute(SQL)
    Set Recordset1 = Server.CreateObject("ADODB.Recordset")

        Recordset1.Open SQL, Conn, 2, 3
    Recordset1.update
    Recordset1("Vare_antal") = arr_antal
  Recordset1.Update
Recordset1.Close

Nextdim arr_antal, i, arr_id

Men jeg kan ikke få det til at virke...

Ares
Avatar billede coltau Juniormester
18. marts 2002 - 12:04 #4
Jeg mener at du skal gennemløbe VARE-ID i stedet for antal og så opdatere med antal i stedet for. Sådan:

Dim arr_antal, i, arr_id
arr_antal = spilt(request("vare_antal"), ",")
arr_Id = Spilt(Request("ID"), ",")

For i = 0 to uBound(Arr_ID) ' RETTET

    SQL="Select * from kurv Where ID = " & i ' RETTET
    Set Rs=Conn.Execute(SQL)
    Set Recordset1 = Server.CreateObject("ADODB.Recordset")

    Recordset1.Open SQL, Conn, 2, 3
    Recordset1.update
    Recordset1("Vare_antal") = Recordset1("Vare_antal") + arr_antal(i) ' RETTET
    Recordset1.Update
    Recordset1.Close

Next
Avatar billede coltau Juniormester
18. marts 2002 - 12:05 #5
Sorry Sådan:

Dim arr_antal, i, arr_id
arr_antal = spilt(request("vare_antal"), ",")
arr_Id = Spilt(Request("ID"), ",")

For i = 0 to uBound(Arr_ID) ' RETTET

    SQL="Select * from kurv Where ID = " & arr_id(i) ' RETTET
    Set Rs=Conn.Execute(SQL)
    Set Recordset1 = Server.CreateObject("ADODB.Recordset")

    Recordset1.Open SQL, Conn, 2, 3
    Recordset1.update
    Recordset1("Vare_antal") = Recordset1("Vare_antal") + arr_antal(i) ' RETTET
    Recordset1.Update
    Recordset1.Close

Next
Avatar billede ares Nybegynder
18. marts 2002 - 12:43 #6
Jeg får stadigvækk fejlen...

Type mismatch: 'spilt'

i linjen
arr_antal = spilt(request("vare_antal"), ",")

Hvorfor laver du den her...

Recordset1("Vare_antal") + arr_antal(i) ' RETTET

den trækker vel det nuværende antal ud af databasen og lægger det nye indtastet ind... ikke sandt... ????

Du kan evt. tjekke det på

http://62.242.254.9/string/

Prøv at lægge en vare i kurven... og derefter vælge vis kurv. fejlen opstår når man prøver at opdatere vare antallet...
Avatar billede coltau Juniormester
18. marts 2002 - 14:15 #7
Jeg ved hvad fejlen er: Din Dim-sætning mangler et tal:
Dim arr_antal(20), i, arr_id(20)
Det havde jeg ikke set.

Min sætning ser også således ud:
Recordset1("Vare_antal") = Recordset1("Vare_antal") + arr_antal(i)
Denne sætning opdatere antallet i databasen. Skal den ikke det. ?
Avatar billede ares Nybegynder
18. marts 2002 - 14:36 #8
Lige nu ser det således ud...

Dim arr_antal(20), i, arr_id(20)
arr_antal = spilt(request("vare_antal"), ",") 'dette er linje 8
arr_Id = Spilt(Request("Vare_ID"), ",")

For i = 0 to uBound(Arr_ID)

    SQL="Select * from kurv Where ID = " & arr_id(i)
    Set Rs=Conn.Execute(SQL)
    Set Recordset1 = Server.CreateObject("ADODB.Recordset")

    Recordset1.Open SQL, Conn, 2, 3
    Recordset1.update
    Recordset1("Vare_antal") = Recordset1("Vare_antal") + arr_antal(i)
    Recordset1.Update
    Recordset1.Close

Next

Men det giver stadigvæk fejlen

Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'spilt'
/string/vare_update.asp, line 8

HvoooorFoooooorrrrrrrrrrrr.    : )

Jeg bliver snart sindsyg... nu har jeg bøvlet med det her side lørdag aften...

Hvilken effekt har (20) efter arr_antal og arr_id ???

Håber virkelig du kan hjælpe...
Avatar billede coltau Juniormester
18. marts 2002 - 21:12 #9
Rolig - rolig
Det ser bare ud til at ordet 'spilt' er stavet forkert.
Det hedder SPLIT
Avatar billede ares Nybegynder
18. marts 2002 - 21:17 #10
Ja.. det har jeg set... men det er heller ikke det..
Avatar billede ares Nybegynder
18. marts 2002 - 21:18 #11
tjek evt. http://exp.dk/spm/186705

så har du mulighed for at score 100 point mere... : ))
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