Hab mal versucht einen Warenkorb zu programmieren. Ich habe es aber bis jetzt nicht geschafft, dass die Anzahl eines Produkts im Warenkorb erhöht wird wenn im Shop erneut auf "Bestellen" geklickt wird.
Mir fehlt da noch der richtige Index ($j). Hoffe es kann mir jemand irgendwie helfen. Danke!
PHP
<?php
session_start();
$products = array(
'1' => array(
'nummer' => 100001,
'titel' => 'Buch',
'preis' => 29.90,
'anzahl' => 1,
'text' => 'Beschreibung'
),
'2' => array(
'nummer' => 100002,
'titel' => 'Schokolade',
'preis' => 9.90,
'anzahl' => 1,
'text' => 'Beschreibung'
),
'3' => array(
'nummer' => 100003,
'titel' => 'Laptop',
'preis' => 999.90,
'anzahl' => 1,
'text' => 'Beschreibung'
)
);
if($_GET['action'] == add){
if(!isset($_SESSION['cart'])){
$_SESSION['cart'] = array();
}
$id = $_GET['id'];
if(in_array($products[$id], $_SESSION['cart'])){
// Produkt ist bereits im Warenkorb
// Anzahl erhöhen
$_SESSION['cart'][$j]['anzahl']++;
}else{
array_push($_SESSION['cart'], $products[$id]);
}
}
echo'<h2>products</h2>';
foreach ($products as $id => $produkt) {
printf('<p>
<b>%s</b><br />
Preis: <b> %01.2f CHF</b><br />
Beschreibung: <b>%s</b><br />
<a href="index.php?id=%d&action=add">Bestellen</a>
</p>',
$produkt['titel'],
$produkt['preis'],
htmlentities($produkt['text']),
$id
);
}
if($_GET['action'] == clear){
$_SESSION['cart'] = NULL;
}
echo '<hr />';
echo '<h2>shopping cart</h2>';
if($_SESSION['cart'] == NULL){
echo "Warenkorb ist leer";
}else{
echo'<a href="index.php?action=clear>Warenkorb leeren</a><br />';
$cart = $_SESSION['cart'];
echo'<table>';
foreach ($cart as $added) {
printf('<tr>
<td>%s </td><td><b>Preis:</b> %01.2f</td><td><b>Anzahl:</b> %s</td>
</tr>',
$added['titel'],
$added['preis'],
$added['anzahl']
);
}
echo'</table>';
echo'<pre>';
print_r($cart);
echo'</pre>';
}
?>
Alles anzeigen