Avatar billede dingkee Nybegynder
28. maj 2001 - 09:06 Der er 44 kommentarer og
1 løsning

Indkøbskurv hvordan

Jeg er ved at lave en indkøbskurv hvordan gør man det??

Det skal være sådan at man kan tilføje flere vare og den så gemmer det, så man kan se alt det man har købt.

Er der nogle der kan forklare mig hvordan det skal laves??
Avatar billede sansalvador Nybegynder
28. maj 2001 - 09:10 #1
Jeg lytter også spændt ...
Avatar billede milo Nybegynder
28. maj 2001 - 09:11 #2
Læg alle varer ind i en varetabel, så hver vare har et ID.

Når folk så skal tilføje noget til kurven, bliver det noget i stil med
tilfoej?ID=xxx

Det er det grundlæggende i hvert fald

Avatar billede dingkee Nybegynder
28. maj 2001 - 09:15 #3
Kan du ikke vise lidt mere om hvordan man skal gøre, noget kode og sådan??
Avatar billede milo Nybegynder
28. maj 2001 - 09:17 #4
øh...hvis du er ny i asp, skal du ik starte med en indkøbskurv ! Start med en tagwall eller sådan noget...

Og hvordan skal jeg kunne vise kode, når jeg ikke engang ved hvilken db type du bruger...? :)
Avatar billede milo Nybegynder
28. maj 2001 - 09:18 #5
Du er ved at lave en indkøbskurv skrev du...hvad har du lavet ind til nu?
Avatar billede dingkee Nybegynder
28. maj 2001 - 09:28 #6
Altså det er en slags indkøbsvogn, har lavet sådan der hvor man  tilføjer varene, så jeg skal bare have den til at list dem der tidligere er valgt
Avatar billede milo Nybegynder
28. maj 2001 - 09:28 #7
hvilken database bruger du
Avatar billede dingkee Nybegynder
28. maj 2001 - 09:30 #8
en access database
Avatar billede milo Nybegynder
28. maj 2001 - 09:34 #9
hvad har du lavet i asp før
Avatar billede sansalvador Nybegynder
28. maj 2001 - 09:38 #10
Hør ... kan du ikke bare komme med et eksempel der bruger cookies eller sessions ... e.lign .. det kan da ikke være så svært at lave noget der bare \"gemmer\" nogle oplysninger i en kurv ... er det ?
Avatar billede dingkee Nybegynder
28. maj 2001 - 09:39 #11
jeps, en del, skal bare lige have fundet ud af hvordan man gemmer det, uden at skrive til databasen
Avatar billede milo Nybegynder
28. maj 2001 - 09:46 #12
gemmer det uden database? Variabler?
Avatar billede dingkee Nybegynder
28. maj 2001 - 09:54 #13
Jeg skal bare have den til at gemme det bare ikke i databasen før der trykkes på gem, også den gemme alt det er tidligere er indtastet.

Er fuldstændig ligeglad med hvordan det bliver gemt.
Avatar billede nuno Nybegynder
28. maj 2001 - 11:36 #14
du kan gemme det i session variable hvis du ikke vil gemme det i databasen, før det trykkes på gem.

fx. når der lægges en vare i kurven:

Session(\"Varer\") = Session(\"Varer\") & \"|\" & NyVare
Session(\"Antal\") = Session(\"Antal\") & \"|\" & Antal

så har du 2 strenge i 2 session variable. Dem kan du så lave 2 arrays af når du skal til at gemme:

arrVarerIKurven = Split(Session(\"Varer\"),\"|\")
arrAntalAfVaren = Split(Session(\"Antal\"),\"|\")

Du har så 2 arrays hvor arrVarerIKurven(0) er den første vare - og hvor arrAntalAfVaren(0) er antallet af varer i kurven af denne vare.

/nuno
Avatar billede nuno Nybegynder
28. maj 2001 - 11:38 #15
bare husk at lave en session.abandon, når du så trykker på gem, og tingene gemmes i databasen - for at \"tømme\" kurven i session variablene.

/nuno
Avatar billede sansalvador Nybegynder
28. maj 2001 - 11:56 #16
øhm ... *host**host* ..

Kan du ikke lige lige lave et hurtigt eksempel ... pleeeease .. :)
Avatar billede nuno Nybegynder
28. maj 2001 - 12:04 #17
det har jeg jo lige gjort :)

...et fuldt udbygget og virkende indkøbskurv eksempel har jeg ikke tid til at lave nu - jeg er på arbejde.

Men prøv at lave en session variabel som oven for - og så lav en response.write session(\"Varer\") & \"<br>\" & session(\"antal\"). Så kan du se hvad den indeholder. Hvis du har 2 forskellige varer i din kurv så vil den fx udskrive

|Golfkøller|Golfkugler
|2|80

hvis der er lagt 2 golfkøller og 80 golfkugler i indkøbskurven. Når så varerne skal gemmes i db - så skal der bare loopes igennem de 2 arrays

for i = 0 to Ubound(arrVarerIKurven)
  sSql = \"INSERT INTO kurv (vare,antal) VALUES (\'\"&arrVarerIkurven(i)&\"\',\"&arrAntalAfVaren(i)&\")\"
Conn.execute sSql
next



/nuno
Avatar billede sansalvador Nybegynder
28. maj 2001 - 12:14 #18
wow ... slow down sherlock ...:).
Avatar billede sansalvador Nybegynder
28. maj 2001 - 15:57 #19
Hør nuno ... hvis du får 500 points :) vil du så ikke lige lave et eksempel på sådan en kurv ?
Avatar billede nuno Nybegynder
29. maj 2001 - 10:10 #20
du kan se et eksempel på http://www.lydsporet-online.dk

den er lavet vha. session variable som holder varerne i kurven.

er det sådan noget du søger?

/nuno
Avatar billede dingkee Nybegynder
29. maj 2001 - 14:09 #21
Nuno>> ja det er netop det jeg søger, har du noget kode liggende jeg kan låne??
Avatar billede dingkee Nybegynder
03. juni 2001 - 12:42 #22
Nuno >>  Det virker fint indtil at jeg skal gemme det, så giver den en fejl lige meget hvad jeg gør.
Kan du ikke lige skrive om det skal være i en fil eller om det skal være i flere filer????
Og hvordan det så skal laves.
Avatar billede nuno Nybegynder
03. juni 2001 - 12:44 #23
forsøger du at gemme det i tekstfiler?

Jeg ville have foretrukket en database.

Men uanset hvad du forsøger - så kan jeg ikke hjælpe, hvis du ikke har nogle fejlmeldinger eller noget kode du kan poste....

/nuno
Avatar billede dingkee Nybegynder
03. juni 2001 - 12:47 #24
Jeg gemmer det i databasen.

Jeg har lavet det sådan at man trykker på gem, ved indkøbskurven, så går den til den næste side.

Her er koden fra gem siden:

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db1.mdb\")

Session(\"Varer\") = Session(\"Varer\") & \"<br>\"
Session(\"Antal\") = Session(\"Antal\") & \"<br>\"
Session(\"Farve\") = Session(\"Farve\") & \"<br>\"
Session(\"Varenr\") = Session(\"Varenr\") & \"<br>\"
Session(\"Pris\") = Session(\"Pris\") & \"<br>\"
Session(\"Total\") = Session(\"Total\") & \"<br>\"
Session(\"Lev\") = Session(\"Lev\") & \"<br>\"

arrVarerIKurven = Split(Session(\"Varer\"),\"<br>\")
arrAntalAfVaren = Split(Session(\"Antal\"),\"<br>\")
arrFarveAfVaren = Split(Session(\"Farve\"),\"<br>\")
arrVarenrAfVaren = Split(Session(\"Varenr\"),\"<br>\")
arrLevAfVaren = Split(Session(\"Lev\"),\"<br>\")

for i = 0 to Ubound(arrVarerIKurven)
SQL = \"INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) values (\'\"&arrVarerIkurven(i)&\"\',\'\"&arrAntalAfVaren(i)&\"\',\'\"&arrFarveAfVaren(i)&\"\',\'\"&arrVarenrAfVaren(i)&\"\');\"
Conn.execute( SQL )
next
%>


Her er den fejl jeg får:
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
Avatar billede nuno Nybegynder
03. juni 2001 - 15:51 #25
SQL = \"INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) values (\'\"&arrVarerIkurven(i)&\"\',\"&arrAntalAfVaren(i)&\",\'\"&arrFarveAfVaren(i)&\"\',\"&arrVarenrAfVaren(i)&\");\"

hvis dine datatyper i db er tekst for varenavn og farve - og numerisk (langt heltal sandssynligvis) for antal og varenummer - så skal sql-sætningen være som ovenfor

Avatar billede dingkee Nybegynder
03. juni 2001 - 16:07 #26
Det er kun varenavn der er tekst

Så får jeg denne fejl:
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
Avatar billede nuno Nybegynder
03. juni 2001 - 16:39 #27
SQL = \"INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) values (\'\"&arrVarerIkurven(i)&\"\',\"&arrAntalAfVaren(i)&\",\"&arrFarveAfVaren(i)&\",\"&arrVarenrAfVaren(i)&\");\"

hvad er de 3 andre felter defineret som?

- prøv evt. at lave en

response.write SQL
response.end

lige FØR Conn.execute


- og så skriv SQL strengen her, så jeg kan se...

/nuno
Avatar billede dingkee Nybegynder
03. juni 2001 - 16:40 #28
Ja der er nået galt:

INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) values (\'\',,,);
Avatar billede nuno Nybegynder
03. juni 2001 - 16:46 #29
ja - er du sikker på, at der ER varer i kurven?

prøv at skrive session variablene ud efter du har lagt varer i.

response.write session(\"varer\")
response.end

(husk lige at fjerne alle
response.write ETELLERANDET
response.end
- når du har brugt dem som test/debug)

Avatar billede dingkee Nybegynder
03. juni 2001 - 16:49 #30
Så virker det fint nok, så det må vel være her:
arrVarerIKurven = Split(Session(\"Varer\"),\"<br>\")
arrAntalAfVaren = Split(Session(\"Antal\"),\"<br>\")
arrFarveAfVaren = Split(Session(\"Farve\"),\"<br>\")
arrVarenrAfVaren = Split(Session(\"Varenr\"),\"<br>\")
arrLevAfVaren = Split(Session(\"Lev\"),\"<br>\")

Det går galt
Avatar billede nuno Nybegynder
03. juni 2001 - 18:29 #31
hmm det er vist noget med at man har begrænsede muligheder for at manipulere med session variable

prøv at lave dem om til strenge hvergang du skal \"arbejde med dem\"

dvs. når du tilføjer varer til kurven
<%
sVarerIKurven = Session(\"Varer\")
%>
[kode her hvor du manipulerer - dvs. tilføjer til kurven osv. fx: <% sVarerIKurven = sVarerIKurven & \"|\" & request.form(\"vare\") %>]

og efter du har manipuleret - så skal de ny data tilbage i session variablen:
<%
Session(\"Varer\") = sVarerIKurven
%>

Derefter når du skal \"smide\" dine data i databasen - så igen først lave session variablene om til strenge før du konverterer til arrays

<%
sVarer = Session(\"Varer\")

arrVarerIKurven = Split(sVarer,\"|\")
%>

og samme princip med de 4 andre session variable.

(jeg har brugt | som delimiter til at splitte på - men du kan sagtens bruge <br> du skal bare være sikker på at det er et tegn/tegnkombination, som ikke kan forekomme i fx varenavn el. lign.)




Avatar billede dingkee Nybegynder
03. juni 2001 - 18:36 #32
Jeg kan bare ikke få det til at virke kan jeg sende det til dig??
Avatar billede dingkee Nybegynder
03. juni 2001 - 23:59 #33
Jeg har prøvet lidt frem og tilbage med nogle andres hjælp men kan altså ikke få det til at virke:

Det er her det går galt:

arrVarerIKurven = Split(sVarer,\"<br>\")
arrAntalAfVaren = Split(sAntal,\"<br>\")
arrFarveAfVaren = Split(sFarve,\"<br>\")
arrVarenrAfVaren = Split(sVarenr,\"<br>\")
arrLevAfVaren = Split(sLev,\"<br>\")

for i = Lbound(arrVarerIKurven) to Ubound(arrVarerIKurven)
SQL = \"INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) values (\'\"&arrVarerIkurven(i)&\"\',\"&arrAntalAfVaren(i)&\",\"&arrFarveAfVaren(i)&\",\"&arrVarenrAfVaren(i)&\");\"

Hvis jeg udskriver min sql kommer der dette:
INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) values (\'\',,,);

Er der nogen der kan se hvad fejlen er????
Avatar billede dingkee Nybegynder
04. juni 2001 - 11:39 #34
Nuno>>> Da vi fik lavet det i et andet spg. har jeg lige 2 spg her:

1:
Hvordan sletter man 1 linie i sin indkøbskurv hvis man nu fortryder sit køb

2:
Når man sætter:
session.abandon
tilsidst sletter man jo også den logintilladelse man har, hvordan får man den til kun at slette det andet??
Avatar billede nuno Nybegynder
04. juni 2001 - 12:00 #35
til spørgsmål 1:

så skal du lave noget strengemanipulering. Således at der hvor du skriver listen ud - og giver muligheden for at slette skal der være fx et hidden form felt eller en værdi hæftet på en querystring i et link. Denne værdi skal være det index i arrayet som skal slettes fx hvis sVarer ser således ud:

\"vare1<br>vare2<br>vare3<br>\"

så vil vare1 være i index 0 (eller 1 jf. http://www.eksperten.dk/spm/78505) og vare2 i index 1 osv. i strengen. Der hvor du giver mulighed for at slette skal altså tilføjes en værdi, som fortæller netop HVILKET af disse index i strengen der skal fjernes.

Derefter, hvis det bliver index 2 der skal væk (jeg antager det er vare2) - skal du lave et tjek på hvornår den første <br> optræder i strengen - fjerne fra positionen LIGE efter - og frem til og med det næste <br>

(det er NU det bl.a. er nemmere at bruge | som delimiter i din streng)

Hvis det er index 1 der skal væk (vare1) - så skal du fjerne fra pos 1 til og med det første tilfælde af <br> i din streng og så fremdeles.




til spørgsmål 2:

så skal du bare nulstille dine variable istedet

Session(\"Varer\") = \"\"
sVarer = \"\"
Session(\"Antal\") = \"\" osv.
sAntal = \"\"



/nuno
Avatar billede dingkee Nybegynder
04. juni 2001 - 12:04 #36
okay, kan du ikke prøve at lave en linie til det første så jeg kan se hvordan det sådan nogenlunde skal være??
Avatar billede nuno Nybegynder
04. juni 2001 - 12:51 #37
<%

sVarer = \"vare1|vare2|vare3|\"

function RemoveFromBasket(inVarer,inIndex)
  arrTempVarer = Split(inVarer,\"|\")

  for i = 0 to Ubound(arrTempVarer)
    arrTempVarer(i) = arrTempVarer(i) & \"|\"
    if i <> inIndex then
      sVarerNew = sVarerNew & arrTempVarer(i)
    end if
   
  next

  RemoveFromBasket = Mid(sVarerNew,1,Len(sVarerNew)-1)
end function

sRes0 = RemoveFromBasket(sVarer,0)
sRes1 = RemoveFromBasket(sVarer,1)
sRes2 = RemoveFromBasket(sVarer,2)
response.write \"fjern vare 1 giver følgende indhold i kurven: \" & sRes0 & \"<br>\"
response.write \"fjern vare 2 giver følgende indhold i kurven: \" & sRes1 & \"<br>\"
response.write \"fjern vare 3 giver følgende indhold i kurven: \" & sRes2 & \"<br>\"

%>

se dette eksempel på

http://www3.ewebcity.com/nunobow/test.asp


denne funktion kalder du bare hver gang du vil have fjernet en vare - med de 2 indparametre sVarer og det nummer (index) i kurven du vil have fjernet


/nuno

Avatar billede nuno Nybegynder
04. juni 2001 - 12:52 #38
tag evt. selv lige højde for at dit 1. index i kurven (tilsyneladende) hedder 1 istedet for 0 - som du selv bemærkede tidligere.

Avatar billede dingkee Nybegynder
04. juni 2001 - 12:57 #39
kan man ikke lave noget så den selv lave det der
sRes0 = RemoveFromBasket(sVarer,0)

så jeg ikke skal lave 20 af dem, hvor den så bare selv generere nogle`??
Avatar billede nuno Nybegynder
04. juni 2001 - 13:05 #40
det forstår jeg ikke helt?

du skal selvfølgelig kalde den funktion på de 5 strenge sVarer, sAntal osv. som udgør det for din indkøbskurv. Så fjerner den også de index i strengene /arrays\'ne som passer sammen.
Avatar billede dingkee Nybegynder
04. juni 2001 - 13:10 #41
Jeg er slet ikke med nu.

Det jeg spurgte om var.

Når der nu er 50 vare i kurven, så skal der vel også være 50:
sRes0 = RemoveFromBasket(sVarer,0)

Kan det ikke blive lavet automatisk??
Avatar billede nuno Nybegynder
04. juni 2001 - 13:22 #42
ok - det den funktion jeg har lavet - den fjerner EEN vare ad gangen - og kun een.

hvis du vil fjerne 10 varer - så skal du kalde den 10 gange med de indexes som de pågældende varer har.

Hvis du vil tømme hele kurven - så sætter du bare

sVarer = \"\"
Session(\"Varer\") = \"\"

Hvis der er 10 stk. af den ene vare i kurven - vil disse 10 også blive fjernet - da du jo skal kalde RemoveFromBasket på alle dine \"indkøbskurv-variable\" sAntal, sFarve, sVarenr osv.
Avatar billede dingkee Nybegynder
04. juni 2001 - 13:24 #43
Det var ikke det jeg mente.
Har du icq??
Avatar billede nuno Nybegynder
04. juni 2001 - 13:31 #44
#48814556
Avatar billede dingkee Nybegynder
25. juni 2001 - 18:51 #45
Jeg havde et eksempel liggende på min computer som jeg brugte
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