Moderator |
|
De methode van Rensjuh werkt niet als het item nog niet in je winkelmandje zit denk ik. Hoeveel is <onbekend> + 1?
Het is ook fout, omdat de index $_SESSION['winkel'][?]['aantal'] vergeten wordt...
Ik denk dat je onderscheid moet maken tussen het wel of niet aanwezig zijn van het product "titel" in je winkelmand. Je huidige opzet van de gegevensstructuur is niet echt handig, want je moet in $_SESSION['winkel'] gaan zoeken naar het product getiteld "titel"...
<?php
session_start() ;
if(isset($_GET['winkel'])) {
$titel = $_GET['titel'];
$prijs = $_GET['prijs'] ;
// zat het product al in je mandje? Zoeken :(
$found = false;
$i = 0;
while(!$found && $i < sizeof($_SESSION['winkel']))
{
if($_SESSION['winkel'][$i]['titel'] == $titel) $found = true;
$i++;
}
// gevonden?
if($found)
{
// verhoog aantal met 1
$_SESSION['winkel'][$i]['aantal']++;
}
else
{
// product bestond nog niet - aanmaken
$_SESSION['winkel'][] = array(
"titel" => $titel,
"aantal" => 1,
"prijs" => $prijs
);
}
}
?>
<?php if(isset($_GET['winkel'])) { $titel = $_GET['titel']; $prijs = $_GET['prijs'] ; // zat het product al in je mandje? Zoeken :( $found = false; $i = 0; while(!$found && $i < sizeof($_SESSION['winkel'])) { if($_SESSION['winkel'][$i]['titel'] == $titel) $found = true; $i++; } // gevonden? if($found) { // verhoog aantal met 1 $_SESSION['winkel'][$i]['aantal']++; } else { // product bestond nog niet - aanmaken $_SESSION['winkel'][] = array( "titel" => $titel, "aantal" => 1, "prijs" => $prijs ); } } ?>
(code niet getest)
Ook zou ik niet met $_GET werken, of ten minste controleren of "titel" numeriek is (ik neem aan dat dit unieke product-id's zijn)?
Een handigere opzet van $_SESSION['winkel'] zou kunnen zijn:
"winkel" => array(
"product_id" => array(
"prijs" => <prijs_hier>,
"aantal" => <aantal_hier>
)
)
"prijs" => <prijs_hier>, "aantal" => <aantal_hier> ) )
Dan kun je direct zien of een product al in je winkelmand voorkomt of niet... |