18. juni 2001 - 10:19Der 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 :-)
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
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.
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:
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.?
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;
<% 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!
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.
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?
Synes godt om
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
Synes godt om
Slettet bruger
05. december 2001 - 18:22#11
Altså.. kollonnerne igen (ovenover er det måske lidt overskueligt)
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
Synes godt om
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\".
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
Synes godt om
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)
Synes godt om
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 & \")\"
Synes godt om
Ny brugerNybegynder
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.