<!DOCTYPE html>
<html>
<head>
<title>My Guitar Shop</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<header>
<h1>My Guitar Shop</h1>
</header>
<main>
<h1>Add Item</h1>
<form action="." method="post">
<input type="hidden" name="action" value="add">
<label>Name:</label>
<select name="productkey">
<?php foreach($products as $key => $products) :
$cost = number_format($products['cost'], 2);
$name = $products['name'];
$item = $name . ' ($' . $cost . ')';
?>
<option value="<?php echo $key; ?>">
<?php echo $item; ?>
</option>
<?php endforeach; ?>
</select><br>
<label>Quantity:</label>
<select name="itemqty">
<?php for($i = 1; $i <= 10; $i++) : ?>
<option value="<?php echo $i; ?>">
<?php echo $i; ?>
</option>
<?php endfor; ?>
</select><br>
<label> </label>
<input type="submit" value="Add Item">
</form>
<p><a href=".?action=show_cart">View Cart</a></p>
</main>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>My Guitar Shop</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<header>
<h1>My Guitar Shop</h1>
</header>
<main>
<h1>Your Cart</h1>
<?php if (!count($cart)) : ?>
<p>There are no items in your cart.</p>
<?php else: ?>
<form action="." method="post">
<input type="hidden" name="action" value="update">
<table>
<tr id="cart_header">
<th class="left">Item</th>
<th class="right">Item Cost</th>
<th class="right">Quantity</th>
<th class="right">Item Total</th>
</tr>
<?php foreach( $cart as $key => $item ) :
$cost = number_format($item['cost'], 2);
$total = number_format($item['total'], 2);
?>
<tr>
<td>
<?php echo $item['name']; ?>
</td>
<td class="right">
$<?php echo $cost; ?>
</td>
<td class="right">
<input type="text" class="cart_qty"
name="newqty[<?php echo $key; ?>]"
value="<?php echo $item['qty']; ?>">
</td>
<td class="right">
$<?php echo $total; ?>
</td>
</tr>
<?php endforeach; ?>
<tr id="cart_footer">
<td colspan="3"><b>Subtotal</b></td>
<td>$<?php echo Dent\Cart\get_subtotal($cart); ?></td>
</tr>
<tr>
<td colspan="4" class="right">
<input type="submit" value="Update Cart">
</td>
</tr>
</table>
<p>Click "Update Cart" to update quantities in your
cart. <br>Enter a quantity of 0 to remove an item.
</p>
</form>
<?php endif; ?>
<p><a href=".?action=show_add_item">Add Item</a></p>
<p><a href=".?action=empty_cart">Empty Cart</a></p>
</main>
</body>
</html>
<?php
namespace Dent\Cart;
// Add an item to the cart
function add_item(&$cart, $key, $quantity) {
global $products;
if ($quantity < 1) return;
// If item already exists in cart, update quantity
if (isset($cart[$key])) {
$quantity += $cart[$key]['qty'];
update_item($cart, $key, $quantity);
return;
}
// Add item
$cost =$products[$key]['cost'];
$total = $cost * $quantity;
$item = [
'name' => $products[$key]['name'],
'cost' => $cost,
'qty' => $quantity,
'total' => $total,
];
$cart[$key] = $item;
}
// Update an item in the cart
function update_item(&$cart, $key, $quantity) {
$quantity = (int) $quantity;
if (isset($cart[$key])) {
if ($quantity <= 0) {
unset($cart[$key]);
} else {
$cart[$key]['qty'] = $quantity;
$total =$cart[$key]['cost'] *
$cart[$key]['qty'];
$cart[$key]['total'] = $total;
}
}
}
// Get cart subtotal
function get_subtotal($cart, $decimals = 2) {
$subtotal = 0;
foreach ($cart as $item) {
$subtotal += $item['total'];
}
$subtotal_f = number_format($subtotal, $decimals);
return $subtotal_f;
}
?>
<?php
require_once('cart.php');
// Start session management with a persistent cookie
$lifetime = 60 * 60 * 24 * 14; // 2 weeks in seconds
session_set_cookie_params($lifetime, '/');
session_start();
// Create a cart array if needed
if (empty($_SESSION['cart13'])) {
$cart = [];
} else {
$cart = $_SESSION['cart13'];
};
// Create a table of products
$products = [
'MMS-1754' => ['name' => 'Flute', 'cost' => '149.50'],
'MMS-6289' => ['name' => 'Trumpet', 'cost' => '199.50'],
'MMS-3408' => ['name' => 'Clarinet', 'cost' => '299.50'],
];
// Get the action to perform
$action = filter_input(INPUT_POST, 'action');
if ($action === NULL) {
$action = filter_input(INPUT_GET, 'action');
if ($action === NULL) {
$action = 'show_add_item';
}
}
// Add or update cart as needed
switch($action) {
case 'add':
$key = filter_input(INPUT_POST, 'productkey');
$quantity = filter_input(INPUT_POST, 'itemqty');
Dent\Cart\add_item($cart, $key, $quantity);
$_SESSION['cart13'] = $cart;
include('cart_view.php');
break;
case 'update':
$new_qty_list = filter_input(INPUT_POST, 'newqty',
FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
foreach($new_qty_list as $key => $qty) {
if ($cart[$key]['qty'] != $qty) {
Dent\Cart\update_item($cart, $key, $qty);
}
}
$_SESSION['cart13'] = $cart;
include('cart_view.php');
break;
case 'show_cart':
include('cart_view.php');
break;
case 'show_add_item':
include('add_item_view.php');
break;
case 'empty_cart':
$cart = [];
$_SESSION['cart13'] = $cart;
include('cart_view.php');
break;
}
?>