<!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 => $product) :
$cost = number_format($product['cost'], 2);
$name = $product['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>
<p>Session ID:<?php echo session_id(); ?>
</main>
</body>
</html>
<!DOCTYP">
<htm">
<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 (empty($_SESSION['cart12']) || count($_SESSION['cart12']) == 0) : ?>
<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( $_SESSION['cart12'] 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 get_subtotal(); ?></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. 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>
<p><a href=".?action=empty_Session">End Session and Delete Cookie</a></p>
<!-- insert session ID -->
<p>Session ID:<?php echo session_id(); ?>
</main>
</body>
</html>
<?php
// Add an item to the cart
function add_item($key, $quantity, $product) {
if ($quantity > 0) {
// If item already exists in cart, update quantity
if (isset($_SESSION['cart12'][$key])) {
$quantity += $_SESSION['cart12'][$key]['qty'];
update_item($key, $quantity);
} else {
// Add item
$item = [
'name' => $product['name'],
'cost' => $product['cost'],
'qty' => $quantity,
'total' => $product['cost'] * $quantity,
];
$_SESSION['cart12'][$key] = $item;
}
}
}
// Update an item in the cart
function update_item($key, $quantity) {
$quantity = (int) $quantity;
if (isset($_SESSION['cart12'][$key])) {
// if quantity is less than zero, remove item
if ($quantity <= 0) {
unset($_SESSION['cart12'][$key]);
} else {
// update item
$_SESSION['cart12'][$key]['qty'] = $quantity;
$total = $_SESSION['cart12'][$key]['cost'] *
$_SESSION['cart12'][$key]['qty'];
$_SESSION['cart12'][$key]['total'] = $total;
}
}
}
// Get cart subtotal
function get_subtotal() {
$subtotal = 0;
foreach ($_SESSION['cart12'] as $item) {
$subtotal += $item['total'];
}
$subtotal_f = number_format($subtotal, 2);
return $subtotal_f;
}
?>
<?php
require_once('cart.php');
// Start session cookie
$lifetime = 60 /*seconds*/ * 60/*mins */ * 24/*hours*/ * 365 /* days*/ * 3 /*years*/ ;
session_set_cookie_params($lifetime, '/');
session_start();
// Create a cart array if needed
if (empty($_SESSION['cart'])) { $_SESSION['cart'] = []; }
// 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':
$product_key = filter_input(INPUT_POST, 'productkey');
$item_qty = filter_input(INPUT_POST, 'itemqty');
$product = $products[$product_key];
add_item($product_key, $item_qty, $product);
header('Location: .?action=show_cart');
break;
case 'update':
$new_qty_list = filter_input(INPUT_POST, 'newqty', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
foreach($new_qty_list as $key => $qty) {
if ($_SESSION['cart12'][$key]['qty'] != $qty) {
update_item($key, $qty);
}
}
header('Location: .?action=show_cart');
break;
case 'show_cart':
include('cart_view.php');
break;
case 'show_add_item':
include('add_item_view.php');
break;
case 'empty_cart':
unset($_SESSION['cart12']);
include('cart_view.php');
break;
case 'empty_Session':
//reset the session variables
$_SESSION = array();
//destory
session_destroy();
$name = session_name();
//experation date
$expire = strtotime('-1 year');
$params = session_get_cookie_params();
//get cookie information
$path = $params['path'];
$domain = $params['domain'];
$secure = $params['secure'];
$httponly = $params['httponly'];
setcookie($name, '',$expire, $path, $domain, $secure, $httponly);
include('cart_view.php');
break;
}
?>