Avatar billede pfp Nybegynder
18. juni 2001 - 10:19 Der er 18 kommentarer og
1 løsning

Indkøbskurv

Hejsa kodere!

Jeg prøver på at lave en lille e-shop fra bunden. Det jeg har nået indtil videre kan ses på www.votus.dk/Site/

(Indtil videre er der kun produkter under kategorien \"Processor\")

Men delen, hvor produktet skal overføres til indkøbskurven, har jeg ingen anelse om hvordan jeg skal takle.

Jeg vil blive meget glad, hvis der er nogen der gider hjælpe mig med dette. Det skal såmænd ikke være så avanceret. Jeg skal bare have hjælp til den kode som gør, at produktet overføres når jeg klikker på indkøbsvognen. Resten af indkøbskurven skal jeg nok selv finde ud af :-)

Med venlig hilsen
Peter F. Poulsen
Avatar billede orca Nybegynder
18. juni 2001 - 10:35 #1
Hvert produkt bliver vel hivet ud af en database ikke? Så har hvert produkt formentligt også et id. Så kan du gøre så at linket til indkøbskurven indeholder dette id. Så ved indkøbskurven bruger du så dette id=x i adressen til at hente den rigtige vare ud af databasen igen.

Mvh Mark
Avatar billede jakobandersen Nybegynder
18. juni 2001 - 10:39 #2
Mange gør det at de bruger en skjult frame(eller iframe), hvor de lader den slags request gå igennem eller alternativt kan du vise elementerne i en dropdownboks i en anden frame..

Selve ASP koden er afhængig af hvordan du vil gemme dine data, de fleste vil benytte et array gemt i en session og så vil koden se sådan her ud:


iAntalElementerIKurv = Session(\"Antal\")
arrKurv = Session(\"Kurv\")
arrKurv(iAntalElementerIKurv) = Request.Querystring.Item(\"Varenr\")
iAntalElementerIKurv = iAntalElementerIKurv + 1
Session(\"Antal\") = iAntalElementerIKurv
Session(\"Kurv\") = arrKurv

Og et kald kunne evt. se sådan her ud:
<a href=\"opdaterkurv.asp?Varenr=XXXXXXXXXXX\" target=\"hemligframe\">
Tilføj til kurv.<
/a>
Avatar billede dope Nybegynder
18. juni 2001 - 10:41 #3
Man kan gemme de data mange steder, hvad forestiller du dig din indkøbskurv skal være baseret på? Du kan bland andet gemme data i session.objectet, cookies, databaser, .txt filer, variabler du tager med dig gennem siderne..., osv.?
Avatar billede prof2 Nybegynder
18. juni 2001 - 12:03 #4
I vareliste.asp:
<SCRIPT>
function ikurv(id){
antal = document.vareliste.antal[id-1].value;
produkt = document.vareliste.produkt[id-1].value;
side = document.vareliste.kategori.value;

document.location.href = \'ikurv.asp?produkt=\' + produkt + \'&antal=\' + antal + \'&side=\' + side;
}
</SCRIPT>
<!-- Formen -->
<form name=\"vareliste\">
<input type=\"hidden\" name=\"kategori\" value=\"<%=tabel%>\">
<table border=\"0\" cellspacing=\"0\" bordercolor=\"#111111\" width=\"760\" >
  <tr>
    <td width=\"377\"><font face=\"Verdana\">Produkt:</font></td>
    <td width=\"100\"><font face=\"Verdana\">Pris:</font></td>
    <td width=\"50\"><font face=\"Verdana\">Antal:</font></td>
    <td width=\"264\">&nbsp;</td>
  </tr>
 
<%
rs.open \"Select * from [processor] order by navn\",dataconn
antal = 1

do while not rs.eof
%>
  <tr>
    <td width=\"377\"><a href=\"vare.asp?vare=<%=server.URLEncode(rs(\"produktnummer\"))%>\"><font face=\"Verdana\" size=\"1\"><%=RS(\"navn\") & \", \" & RS(\"stats\")%></a></font></td>
    <td width=\"100\"><font face=\"Verdana\" size=\"1\"><b><%=RS(\"pris\")%></b><br>(<%=RS(\"pris\")*0.75%>)</font></td>
    <td width=\"50\">
      <input type=\"text\" name=\"antal\" size=\"2\" maxlength=\"2\" value=1>
      <input type=\"hidden\" name=\"produkt\" value=\"<%=RS(\"produktnummer\")%>\"></td>
    <td width=\"264\">
      <font size=\"1\" face=\"Verdana\"><a href=\"java script:ikurv(<%=antal%>)\">Læg i kurv</a></font></td>
  </tr>
<%
antal = antal + 1
rs.MoveNext
loop

rs.Close
%> 
</table>
</form>


Dette i ikurv.asp:

<%
if session(\"varer\") = \"\" then
  session(\"varer\") = antal
  session(\"pris\") = (pris*antal)
else
  session(\"varer\") = cint(session(\"varer\")) + antal
  session(\"pris\") = cint(session(\"pris\")) + (pris*antal)
end if

for i = 1 to antal
  session(\"pro\"&produkt) = session(\"pro\"&produkt) &  \"1\"
next
%>

Samt andet til at undgå fejl.


Dvs. Produkterne gemmes i sessions.

Session(produktnummer) = 11111

Er 5 stk. af det produkt med produktnummer (udtaget fra databasen).

Mail hvis der er problemer, da det er svært at overskue kode i denne lille tekstbox!
Avatar billede prof2 Nybegynder
18. juni 2001 - 12:04 #5
Dette skal være i toppen af ikurv.asp!

produkt = Request.QueryString(\"produkt\")
antal = Request.QueryString(\"antal\")
side = Request.QueryString(\"side\")
Avatar billede prof2 Nybegynder
18. juni 2001 - 12:05 #6
assembel@duke.dk - Bare mail hvis du skal have mere hjælp (bare jeg får points:)!
Avatar billede pfp Nybegynder
18. juni 2001 - 14:55 #7
prof2 >>

You\'ve got mail!
Avatar billede Slettet bruger
17. juli 2001 - 02:24 #8
Jeg gemmer kurven i en tabel i databasen...

JEg sørger for at knytte sessionens ID til hver post, og i global.asa sletter jeg alle poster efter sessionen når den ender.

Det var så mit forslag.... det handler vel lidt om, om du vil tære på de rescourcer databaseadgang kræver, eller om du vil tære direkte på webserverens RAM via en session, der bliver større og større (ig findes i flere instanser)

Men det drejer sig vel om ens holdning og omstændighederne.
Avatar billede pfp Nybegynder
05. december 2001 - 18:06 #9
Ups det må i sku\' undskylde...havde fuldstændig glemt at det spm. var åbent endnu.

smajli >> Jeg kan egentlig godt lide dit forslag om at gemme indholdet af kurven i databasen, men hvordan foregår der rent praktist? Skal jeg så på en eller anden måde have lavet en tabel til hver forskellig kunde?
Avatar billede Slettet bruger
05. december 2001 - 18:20 #10
nej... dine varer har et unikt ID i databasen og hver kunde har en unik session med tilhørende ID...

du kan få adgang til sessionens ID ved Session.SessionID altså:

Response.Write(\"Denne session har session ID: \" & Session.sessionID)

Derfor skal din tabel grunlæggende have følgende kolonner:

Kurv_ID - Et unikt ID hver hver ting i kurven.. sæt datatypen i Access til \"Autonumerering\", og brug denne kolonne som primær nøgle.
Vare_ID - Får du fra varens unikke ID i Varetabellen i din database (såddan en formoder jeg du har)
Session_ID - Her insætter du sessiondens id (Session.sessionID)
Vare_Antal - Hvor mange lagde kunden i kurven?

Håber det til hjælp. Ellers spørg endelig.
, Vare_ID, Session_ID
Avatar billede Slettet bruger
05. december 2001 - 18:22 #11
Altså.. kollonnerne igen (ovenover er det måske lidt overskueligt)

Kurv_ID
Vare_ID
Session_ID
Vare_Antal
Avatar billede pfp Nybegynder
06. december 2001 - 08:56 #12
Ok, hvis jeg har forstået det ret skal jeg lave en tabel i min database ved navn Kurv, og deri skal jeg så oprette felterne:

KurvID = Autonumerering
VareID = ?
SessionID = ?
VareAntal = ?

De andre felter skal så indsættes i tabellen når man vil tilføjes når man klikker \"Tilføj til kurv\" ?

Hvilke datatyper skal der være i de tre andre felter.

På forhånd tak,

/pfp
Avatar billede Slettet bruger
06. december 2001 - 18:09 #13
KurvID = Autonumerering
VareID = Tal
SessionID = Tal
VareAntal = Tal
Avatar billede Slettet bruger
06. december 2001 - 18:11 #14
.. du skal så oprette relationer til tabellen med Varer...

Hvis du ikke ved hvad relationer er, bør du hutigt muligt læsre det... det er beskrevet kort på denne side: http://activeserverpages.dk/locator.asp?guid=001000000071
Avatar billede pfp Nybegynder
06. december 2001 - 18:59 #15
Ja jeg har lidt kendskab til relationer i Access, men hvad skal jeg bruge dem til her?

Jeg har nu fået lavet sådan at når jeg klikker \"Køb\" tilføjes produktets unikke ID til feltet VareID og så har jeg sat det sådan, at tallet 1 tilføjes til feltet VareAntal. Men hvad kan jeg bruge til at identificere kunden (altå hvad skal der tilføjes til feltet SessionID)? Det skulle jo gerne være sådan at alle de varer kunden har tilføjet bliver vist samtidig når han vi se indholdet af indkøbskurven?

Håber du forstår hvad jeg mener. Du skulle vel ikke tilfældigvis have et ICQ UIN?

/pfp
Avatar billede Slettet bruger
06. december 2001 - 19:16 #16
Altså... du insætter \"Session.SessionID\" i feltet \"SessionID\"... med SQL på flg måde:

strSQL = \"UPDATE Kurv SET SessionID = \" & Session.sessionID

objConn.Execute(strSQL)


.. når du skal vise brugeren hans kurv, så får du alle hans varer (on ingen andre) frem ved at udføre noget ala flg:

strSQL = \"SELECT * FROM Kurv WHERE SessionID = \" & Sesssion.SessionID
Set objRS = objConn.Execute(strSQL)

... vil du have flere detajler om varene med skal du bruge et SQL join, eller oprette et wiev med tabellerne \"Varer\" og \"Kurv\" i Acees og hente den med SELECT den i stedet for \"Kurv\".
Avatar billede pfp Nybegynder
06. december 2001 - 19:33 #17
Det er jo simpelthen bare fantastisk - det virker perfekt. Tusind tak for din store hjælp!

Og så er det vist på tide vi får lukket det spm. :-)

/pfp
Avatar billede Slettet bruger
06. december 2001 - 21:10 #18
Takker for point... havde nu osse hjulpet for mindre end 250 vil jeg lige bemærke til sidst.

Held og lykke med dit projekt :o)
Avatar billede Slettet bruger
08. december 2001 - 13:11 #19
Du skal self. ikke \"UPDATE Kurv SET SessionID = \" & Session.sessionID


du skal:

\"INSERT INTO Kurv (SessionID) VALUES(\" & Session.SessionID & \")\"
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