07. januar 2000 - 20:51Der er
14 kommentarer og 1 løsning
Inkøbskurv
Hvordan laver man en smart indkøbskurv.. jeg havde selv tænkt på noget med en cookie men det kan jeg ikke finde ud af hvis der skal være mere end en vare...
det skal skal gemmes i inkøbskruven er varens ID...
Jeg har lavet en hvor jeg brugger et session-array til at gemme dataene. At jeg har lavet det er måske kun 50% af sandheden, da jeg har fået utrolig meget hjælp af denne gruppe. Så find pointne frem, og gå igang.
Nej. For det første synes jeg at du ligeså godt selv kan lave det hvis du vil til at lære ASP. Det er en glimrende måde, da man kommer omkring alle de grundlæggende ting. DB'er, Sessions, redirect osv. For det andet er jeg ved at omforme scriptet til et andet firmas hjemmeside, og jeg tror ikke de bliver så glade hvis jeg bare giver det væk.
Det er fordi du ikke skal have en normal Session variabel. Du skal have defineret et array i en Session. Hvis du kigger lidt tilbage i de besvarede spørgsmål her på eksperten, vil du finde en HULENS mange spørgsmål fra mig, om bla. arrays. Der er ingen grund til at du skal til at stille de samme spørgsmål igen.
Her er hvad jeg har gjort (virker kun med cookies): 1) Opret en tabel i en database med felterne [SessionID], [Varenummer], [Antal] og [BasketID]. Sæt Basket ID som nøgle. 2) Når en bruger tilføjer noget til kurven, så tjekker du for om varenummeret allerede er i kurven (self kun for det SessionID som kunden bruger), hvis den er, så øger du antallet, ellers tilføjer du den som ny post.
Jeg gider ikke lige poste koden (dovenskaben længe leve), men det kan jo være at du hellere selv vil rode lidt med det ... hehe.
<-- start addtobasket.asp --> <!--#include file="almindelige-funktioner.asp"--> <% VareNummer = request("VareNummer") set VareListe = conntemp.Execute("SELECT * FROM Varer WHERE VareNummer = '" & VareNummer & "';") IF VareListe.EOF = TRUE THEN response.redirect("visbasket.asp") END IF Antal = request("Antal") IF IsNumeric(Antal) = False THEN response.redirect("visbasket.asp") END IF Antal = Int( Antal ) IF Antal > 0 THEN set BasketListe = conntemp.execute("SELECT * FROM ShoppingBasket WHERE VareNummer = '" & VareNummer & "' AND SessionID = '" & Session.SessionID & "';") IF BasketListe.EOF = TRUE THEN Set VareListe = Server.CreateObject("ADODB.Recordset") VareListe.Open "SELECT * FROM ShoppingBasket", conntemp, 3, 3 VareListe.AddNew VareListe("VareNummer") = VareNummer VareListe("Antal") = Antal VareListe("SessionID") = Session.SessionID VareListe.Update VareListe.Close ELSE GammeltAntal = BasketListe("Antal") Set VareListe = Server.CreateObject("ADODB.Recordset") VareListe.Open "SELECT * FROM ShoppingBasket WHERE BasketID = " & BasketListe("BasketID") & ";", conntemp, 3, 3 VareListe.Update VareListe("Antal") = Antal + GammeltAntal VareListe("SessionID") = Session.SessionID VareListe.Update VareListe.Close
END IF END IF response.redirect("index.asp") %> <-- slut addtobasket.asp -->
<-- start visbasket.asp --> <!--#include file="almindelige-funktioner.asp"--> <% set BasketListe = conntemp.execute( "SELECT * FROM ShoppingBasket WHERE SessionID = '" & Session.SessionID & "';" ) %> <table border="1"> <tr> <td width="100">Tilføj</td> <td width="170">Vare</td> <td width="100">Antal</td> <td width="140">På Lager</td> <td width="90">Pris/stk</td> <td width="90">Pris ialt</td> <td width="100">Slet</td> </tr> <% DO UNTIL BasketListe.EOF VareNummer = BasketListe("VareNummer") set VareListe = conntemp.Execute("SELECT * FROM Varer WHERE VareNummer = '"&VareNummer&"' ;") LagerAntal = VareListe("AntalPåLager") VareAntal = BasketListe("Antal") Pris = VareListe("PrisUdenMoms") * 1.25 TotalPris = TotalPris + ( Pris * VareAntal ) Weight = Weight + ( VareListe("Vægt") * VareAntal ) BasketID = BasketListe("BasketID") %> <tr> <form action="addtobasket.asp"> <td> <input type="text" name="antal" value="1" size="2" maxlength="2"> <input type="hidden" name="varenummer" value="<%= VareNummer %>"> <input type="submit" value="Tilføj"> </td> </form> <td> <% Response.Write( "<A HREF='skiftvare.asp?varenummer=" & VareNummer & "'>" & VareListe("VareNavn") & "</a>" ) %> </td> <td><%= VareAntal %></td> <td> <% if LagerAntal >= VareAntal THEN response.write( "Ja. Der er " & LagerAntal & " på lager." ) else response.write( "Nej. Der er " & LagerAntal & " på lager." ) end if %> </td> <td align="right"> <% response.write( formatcurrency( Pris ) ) %> </td> <td align="right"> <% response.write( formatcurrency( Pris * VareAntal ) ) %> </td> <form action="removefrombasket.asp"> <td> <input type="text" name="Antal" value="1" size="2" maxlength="2"> <input type="submit" value="Slet"> <input type="hidden" name="vare" value="<%= BasketID %>"> </td> </form> </tr> <% BasketListe.MoveNext set VareListe = Nothing LOOP set BasketListe = Nothing %> <tr> <td>Vægt: <%= Round( Weight,3 ) %> kg</td> <td align="right">Forventet porto: <% if Weight <= 0 then response.write( formatcurrency( 0 ) ) else Weight = replace( Weight, ",", "." ) set portoliste = conntemp.execute( "SELECT TOP 1 * FROM PORTO WHERE Vægt >= " & Weight & " ;" ) if PortoListe.EOF = false then response.write( formatcurrency( PortoListe("Porto") ) ) else response.write( "999.00 kroner <br> (over max i databasen)" ) end if end if %> </td> <td> <% if Weight <> 0 then response.write( "<a href='emptybasket.asp'>Fjern Alle Varer</a>") else response.write( "Fjern Alle Varer" ) end if %> </td> <td> </td> <td> </td> <td align="right"><%= formatcurrency( ( TotalPris ) ) %></td>
<td> <% if Weight <> 0 then response.write( "<a href='gokasse.asp'>Gå Til Kassen</a>") else response.write( "Gå Til Kassen" ) end if %> </td> </tr> </table> <-- slut visbasket.asp -->
<-- start removefrombasket.asp --> <!--#include file="almindelige-funktioner.asp"--> <% Antal = request("antal") BasketID = request("vare") if IsNumeric( Antal ) = false then response.redirect("visbasket.asp") end if if Antal <= 0 then response.redirect("visbasket.asp") end if set BasketListe = conntemp.execute("SELECT * FROM ShoppingBasket WHERE BasketID = " & BasketID & " AND SessionID = '" & Session.SessionID & "';") Set VareListe = Server.CreateObject("ADODB.Recordset") GammeltAntal = BasketListe("Antal") VareListe.Open "SELECT * FROM ShoppingBasket WHERE BasketID = " & BasketListe("BasketID") & ";", conntemp, 3, 3 VareListe.Update VareListe("Antal") = GammeltAntal - Antal VareListe("SessionID") = Session.SessionID VareListe.Update
set VareListe = conntemp.execute("SELECT * FROM ShoppingBasket WHERE BasketID = " & BasketID & " AND SessionID = '" & Session.SessionID & "';") if VareListe("Antal") <= 0 THEN conntemp.execute "DELETE * FROM ShoppingBasket WHERE SessionID = '" & Session.SessionID & "' AND BasketID = " & BasketID & ";" end if VareListe.Close response.redirect("index.asp") %> <-- slut removefrombasket.asp -->
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.