Ik ben nieuw hier. Maar ook nieuw met PHP. Ik moet het voor mijn opleiding leren, maar ik vind het echt zo moeilijk. Aangezien ik morgen een assessment heb en ik er niet uitkom, vraag ik jullie om hulp.
Ik moet een webwinkel maken en voor morgen moet ik de webwinkel + winkelwagen (werkend dus ;)) laten zien. De webwinkel zelf heb ik, maar de winkelwagen, daarin loop ik vast.
Ik weet dat er een tutorial staat op phphulp.nl, maar ik wil het graag volgens het boek doen en nu kan ik het waarschijnlijk allemaal nog wel halen met kopieren en zo, maar in de loop der tijd kan ik dat niet meer. Daarom wil ik het nu graag snappen.
Ik weet dat ik d.m.v. een session de bestelde artikelen in mijn winkelwagen moet krijgen, maar ik weet niet echt goed hoe. Ik weet dat deze code fout is, maar kan iemand me uitleggen hoe of wat?
Voorbeeldje, geintrepeteerd op wat je aan code gepost hebt, je moet nog wel zelf zaken (html) toevoegen. En tevens gaan we er maar van uit dat er niet geknoeid wordt met de $_POST variabelen, dus onbekende artikelnummers ed worden niet afgevangen.
Mijn voorkeur zal uitgaan naar een winkelmandje in de database, dat maakt het doen van controles veel eenvoudiger.
<?php
session_start();
// als de winkelwagen nog niet bestaat
if (!isset($_SESSION['winkelwagen']) {
$_SESSION['winkelwagen'] = array();
}
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['artikelnummer']) && trim($_POST['artikelnummer']) != ''
&& isset($_POST['hoeveelheid']) && ctype_digit($_POST['hoeveelheid']) && (int) $_POST['hoeveelheid'] >= 0) {
if (isset($_SESSION['winkelwagen'][$_POST['artikelnummer']] && (int) $_POST['hoeveelheid'] > 0) {
// wijzigen
$_SESSION['winkelwagen'][$_POST['artikelnummer']] = (int) $_POST['hoevelheid'];
}
elseif (!isset($_SESSION['winkelwagen'][$_POST['artikelnummer']] && (int) $_POST['hoeveelheid'] > 0) {
// toevoegen
$_SESSION['winkelwagen'][$_POST['artikelnummer']] = (int) $_POST['hoeveelheid'];
elseif (!isset($_SESSION['winkelwagen'][$_POST['artikelnummer']] && (int) $_POST['hoeveelheid'] == 0) {
// verwijderen
unset($_SESSION['winkelwagen'][$_POST['artikelnummer']]);
}
else {
// onbekend foutafhandeling
}
}
else {
// foutafhadeling toevoegen / wijzigen / verwijderen niet mogelijk
}
// tonen inhoud winkel wagen
if (isset($_SESSION['winkelwagen']) && is_array($_SESSION['winkelwagen']) && count($_SESSION['winkelwagen'])>0) {
foreach($_SESSION['winkelwagen'] as $artikelnummer => $hoeveelheid) {
echo '<tr><td>'.$artikelnummer.'</td><td>'.$hoeveelheid.'</td></tr>';
}
}
else {
echo 'Uw winkel wagen is leeg';
}
?>
Heel erg bedankt, maar in het werkboek staat juist dat het nog niet de bedoeling is dat je het in de database zet zeg maar, omdat mensen die iets hebben geplaatst in het winkelmandje, het ook nog moet kunnen verwijderen.
Hij bedoelt denk ik dat als de winkelwagen niet werkt en je moet het voor morgen af hebben en je begint vandaag pas te vragen... Je het niet haalt ;-)
Maarjaa :)
Ik weet niet of je er al uit bent, maar wat zegt het boek dat je moet doen?
Daar kun je dan vragen over stellen, want ik heb niet hetzelfde boek als jij voor me liggen.
Het is ook laat, maar ik heb eerst zelf aangeprobeerd en via klasgenoten e.d. en zo geprobeerd...
En het probleem heb ik gewoon dat ik de codes vaak wel snap, maar zelf erop komen dat lukt me niet echt.
En ik heb hierboven al gezegd wat het boek zegt wat ik moet doen. Ik moet dus die winkelwagen maken... Niet in de database zetten, maar door middel van die 3 "dingen" dan, volgens mijn boek functies: $_SERVER[PHP_SELF], $_SESSION en session_start... Zoals ik al zei moet ik een tabelletje krijgen... met welke wijn er besteld is, hoeveel ervan en wat het toaalbedrag wordt. Wel krijg ik de 3 (dmv post) die je bij bestellen invult in de winkelwagen, maar helaas onthoudt hij niks en van wat er staat en krijg ik dus ook niet die gegevens die hij moet tonen...