Add online store cart ( issue #8 )
This commit is contained in:
parent
d180061bf8
commit
275c32f2dd
60
public/action.php
Normal file
60
public/action.php
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once __DIR__ . "/../required.php";
|
||||||
|
require_once __DIR__ . "/lib/item.php";
|
||||||
|
|
||||||
|
switch ($VARS['action']) {
|
||||||
|
case "addtocart":
|
||||||
|
$item = $VARS['item'];
|
||||||
|
$qty = $VARS['qty'];
|
||||||
|
|
||||||
|
if (!$binstack->has('items', ['AND' => ['itemid' => $item, 'price[>]' => 0]])) {
|
||||||
|
header('Location: ./?page=cart&msg=invaliditem');
|
||||||
|
die("Invalid item");
|
||||||
|
}
|
||||||
|
$cart = [];
|
||||||
|
|
||||||
|
if (!empty($_SESSION['cart'])) {
|
||||||
|
$cart = $_SESSION['cart'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($cart[$item])) {
|
||||||
|
$cart[$item] = $qty;
|
||||||
|
} else {
|
||||||
|
$cart[$item] += $qty;
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SESSION['cart'] = $cart;
|
||||||
|
|
||||||
|
header('Location: ./?page=cart&msg=itemadded');
|
||||||
|
die();
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "updatecart":
|
||||||
|
$item = $VARS['item'];
|
||||||
|
$qty = $VARS['qty'];
|
||||||
|
|
||||||
|
$cart = [];
|
||||||
|
|
||||||
|
if (!empty($_SESSION['cart'])) {
|
||||||
|
$cart = $_SESSION['cart'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$cart[$item] = $qty;
|
||||||
|
|
||||||
|
if ($qty <= 0) {
|
||||||
|
unset($cart[$item]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SESSION['cart'] = $cart;
|
||||||
|
|
||||||
|
header('Location: ./?page=cart&msg=itemupdated');
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
@ -42,6 +42,9 @@ if (isset($_GET['page'])) {
|
|||||||
$page = "404";
|
$page = "404";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "cart":
|
||||||
|
$page = "cart";
|
||||||
|
break;
|
||||||
case "home":
|
case "home":
|
||||||
default:
|
default:
|
||||||
$page = "home";
|
$page = "home";
|
||||||
|
@ -100,11 +100,40 @@ END;
|
|||||||
<button type="submit" class="btn btn-primary"><i class="fas fa-cart-plus"></i> Add</button>
|
<button type="submit" class="btn btn-primary"><i class="fas fa-cart-plus"></i> Add</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" name="item" value="<?php echo $id; ?>" />
|
<input type="hidden" name="item" value="$id" />
|
||||||
<input type="hidden" name="action" value="addtocart" />
|
<input type="hidden" name="action" value="addtocart" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
END;
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
static function cart(Item $item, int $qty) {
|
||||||
|
$id = $item->getId();
|
||||||
|
$name = $item->getName();
|
||||||
|
$catid = $item->getCategoryId();
|
||||||
|
$catname = $item->getCategoryName();
|
||||||
|
$price = $item->getPrice();
|
||||||
|
$html = <<<END
|
||||||
|
<div class="list-group-item d-flex flex-wrap">
|
||||||
|
<div>
|
||||||
|
<h4><a href="./?page=item&id=$id">$name</a></h4>
|
||||||
|
<span>$$price</span>
|
||||||
|
</div>
|
||||||
|
<div class="ml-auto">
|
||||||
|
<form action="./action.php" method="POST">
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="number" name="qty" class="form-control mb-2" placeholder="Quantity" value="$qty" />
|
||||||
|
<div class="input-group-addon">
|
||||||
|
<button type="submit" class="btn btn-primary"><i class="fas fa-sync"></i> Update</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="item" value="$id" />
|
||||||
|
<input type="hidden" name="action" value="updatecart" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
END;
|
END;
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
@ -6,3 +6,32 @@
|
|||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (!defined('NICKELBOX')) {
|
||||||
|
die("Direct access denied.");
|
||||||
|
}
|
||||||
|
|
||||||
|
$cart = [];
|
||||||
|
|
||||||
|
if (!empty($_SESSION['cart'])) {
|
||||||
|
$cart = $_SESSION['cart'];
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="container mt-4">
|
||||||
|
<h1 class="display-4">Cart</h1>
|
||||||
|
|
||||||
|
<div class="list-group list-group-flush">
|
||||||
|
<?php
|
||||||
|
if (count($cart) > 0) {
|
||||||
|
foreach ($cart as $i => $qty) {
|
||||||
|
echo RenderItem::cart(new Item($i), $qty);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
?>
|
||||||
|
<p>The cart is empty.</p>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
</div>
|
Loading…
x
Reference in New Issue
Block a user