Ik klik op een plaatje... deze stuurt m naar een javascript die de pagina reload en de juiste waarden van het product meegeeft. De waarden moeten in een session gezet worden. Er moeten dus meerdere producten in de sessie gezet kunnen worden.
Aan alleen het id heb je toch genoeg? De rest van de info kan je uit de database halen.
Thomas - 24/04/2006 16:47 (laatste wijziging 24/04/2006 16:49)
Moderator
Denk goed na bij wat je in een sessie stopt, en hoe je dit doet.
Het enige wat je in principe in je sessie hoeft te stoppen is een product-id en een aantal. De rest (productnaam, (stuk)prijs, omschrijving, etc.) is afleidbaar, dus dit hoef je niet in je sessie te zetten!
Ik zou een aparte (array-)variabele in je sessie introduceren, genaamd "producten" of "winkelmandje" of "basket" of wat dan ook.
Je zou dan bijvoorbeeld als volgt gegevens van producten op kunnen slaan in je sessie:
Als je elke keer als je een product wilt toevoegen $_SESSION['winkelwagen'] = array(); gebruikt, zal die elke keer het winkelwagen-array leeggooien, en dat lijkt mij niet de bedoeling?
Voor het uitvoeren van bewerkingen op je winkelwagen zou ik een aantal functies introduceren, bijvoorbeeld:
add_to_cart($id, $naam, $prijs, $aantal, $omschr)
remove_from_cart($id)
empty_cart()
(wat deze functies doen lijkt me redelijk voor de hand liggend)
Verder lijkt het me zeer onhandig dat je producten niet in een database staan...
Maar hij komt telkens opnieuw op de pagina. Er wordt op een plaatje geklikt, die geeft de waarden van het product mee dmv een javascript. Deze reload de pagina en haalt dus aan het begin de waarden op. Hoe kan ik ervoor zorgen dat het array maar 1 keer wordt aangemaakt?
Misschien een session maken met de waarde '1' nadat het array is aangemaakt. Je voert het aanmaken van het array alleen uit als de waarde in de sessie '0' is! zo iets???
@Fangorn... Ja is ook irritant dat ze niet in een db staan. Maar moet volgens mij moet dat geen problemen opleveren waar ik nu mee te maken heb. De klant hoeft het niet in een db... en de klant is koning
function cart_make()
{
if(!isset($_SESSION['winkelwagen']))
{
$_SESSION['winkelwagen'] = array();
}
// geeft aan of het aanmaken succesvol was
return isset($_SESSION['winkelwagen']);
}
ja zat ik ook al aan te denken... was t al aan t proberen maar wist niet met welke functie! isset dus... THNX!
EDIT:
Okey dat werkt. Ik kan nu ook geen dubbele waarden aan het array toevoegen! Dus dat is mooi! Nu moet ik alleen nog meerdere waarden aan het array toevoegen die bij het juiste productid horen...
TriX had al eerder aangegeven dat 'ie geen gebruik maakt van een database... Dat hoeft trouwens geen belemmering te vormen om het aan te pakken zoals marten / proximus / ik voorstelden .
STAP 1
Vraag jezelf af welke dingen je wilt (kunnen) doen met je shoppingcart.
Wil je meerdere keren een of meer producten toevoegen of verwijderen uit je winkelmandje, wil je deze helemaal kunnen leeggooien et cetera.
STAP 2
Vervolgens ga je dit in codevorm gieten. Je kunt dit doen door verschillende operaties in verschillende functies te stoppen, bijvoorbeeld een functie voor het toevoegen (of verwijderen) van een (of meer) producten, een functie voor het legen van je winkelmand et cetera.
STAP 3
TEST je oplossing. Doet de code ook wat hij behoort te doen?
Trek deze 3 stappen even uit elkaar, dat werkt een stuk makkelijker.