SlideShare a Scribd company logo
BUS 225 Air Transporstation SupEMPLOYEE IDDATE OF
HIREDEPARTMENTPERFORMANCE SCORE (1-
4)MANAGER
COMMENTARYSALARYBONUSOVERTIME4856078/6/87Acc
ount Planning1$48,200.00$2,000.00$0.003937868/7/87Account
Planning3$48,200.00$2,000.00$0.003552328/8/87Account
Planning3$48,200.00$2,000.00$0.004204448/9/87Account
Planning3$48,200.00$2,000.00$0.003805538/10/87Account
Planning3Essential
Employee$48,200.00$2,000.00$0.004271518/11/87Account
Planning3$48,200.00$2,000.00$0.005479268/12/87Account
Planning3$48,200.00$2,000.00$0.004171938/13/87Account
Planning3$48,200.00$2,000.00$0.005090638/14/87Account
Service1Needs motivation. Issues with
manager.$42,000.00$2,000.00$0.004353598/15/87Account
Service2$42,000.00$2,000.00$0.005121848/16/87Account
Service2$45,000.00$2,000.00$0.004383898/17/87Account
Service3$42,000.00$2,000.00$0.004431228/15/97Account
Service3$42,000.00$2,000.00$0.003975618/16/97Account
Service3$42,000.00$2,000.00$0.005550488/17/97Account
Service3$42,000.00$2,000.00$0.004532718/18/97Account
Service3$42,000.00$2,000.00$0.004646308/19/97Account
Service3$45,000.00$2,000.00$0.005197608/20/97Account
Service3$45,000.00$2,000.00$0.004429698/21/97Account
Service3$45,000.00$2,000.00$0.005802058/22/97Finance &
Accounts1$57,000.00$2,000.00$0.004324668/23/97Finance &
Accounts3$57,000.00$2,000.00$0.004623168/24/97Finance &
Accounts3$57,000.00$2,000.00$0.004168598/25/97Finance &
Accounts3$57,000.00$2,000.00$0.003285308/26/97HR &
Facilities1$61,000.00$2,000.00$0.005802308/27/97HR &
Facilities3$61,000.00$2,000.00$0.005579128/28/97HR &
Facilities3$61,000.00$2,000.00$0.004703458/29/97HR &
Facilities4$61,000.00$2,000.00$0.005060738/30/97IT3Essential
Employee$75,000.00$2,000.00$5,000.004402658/31/97IT3$75,
000.00$2,000.00$5,000.004680699/1/97IT3$75,000.00$2,000.0
0$5,000.003749579/2/97IT4$75,000.00$2,000.00$5,000.005135
369/3/97Logistics3$62,000.00$2,000.00$0.004601439/7/87Logi
stics3$62,000.00$2,000.00$0.005898329/8/87Logistics3Essentia
l
Employee$62,000.00$2,000.00$0.004238179/9/87Logistics4Abo
ve
performance.$62,000.00$2,000.00$0.00513 0769/10/87Managem
ent2$370,834.00$0.00$0.003903629/11/87Management3$247,32
4.00$0.00$0.003787239/12/87Management3$237,385.00$0.00$0
.004444079/13/87Management4$245,048.00$0.00$0.003286989/
14/87Manufacturing1Essential
Employee$46,000.00$2,000.00$0.003648119/15/87Manufacturi
ng2$42,000.00$2,000.00$0.004465769/16/87Manufacturing3$48
,000.00$2,000.00$0.003746899/17/87Manufacturing3$48,000.0
0$2,000.00$0.005758669/18/87Manufacturing3$48,000.00$2,00
0.00$0.003364269/19/87Manufacturing3$48,000.00$2,000.00$0
.006048929/20/87Manufacturing3$48,000.00$2,000.00$0.00397
7259/21/87Manufacturing3Great
job.$42,000.00$2,000.00$2,700.005644639/22/87Manufacturing
3$42,000.00$2,000.00$2,700.004241629/23/87Manufacturing3$
42,000.00$2,000.00$2,700.003851389/24/87Manufacturing3$42
,000.00$2,000.00$2,700.005027949/25/87Manufacturing3$42,0
00.00$2,000.00$0.005681309/26/87Manufacturing3Essential
Employee$42,000.00$2,000.00$0.006055669/27/87Manufacturi
ng3$46,000.00$2,000.00$0.003286679/28/87Manufacturing3$46
,000.00$2,000.00$0.004675139/29/87Manufacturing3$46,000.0
0$2,000.00$0.004360009/30/87Manufacturing3$46,000.00$2,00
0.00$0.004548199/29/92Manufacturing3$46,000.00$2,000.00$0
.005459259/30/92Manufacturing4Never late. Hardworking
employee.$48,000.00$2,000.00$0.0034015810/1/92Manufacturi
ng4$42,000.00$2,000.00$2,700.0061298310/2/92Research3Tryi
ng
hard.$55,000.00$2,000.00$0.0045622110/3/92Research3$55,00
0.00$2,000.00$0.0045794910/4/92Research3$55,000.00$2,000.
00$0.0059286210/5/92Research3Essential
Employee$55,000.00$2,000.00$0.0049208710/6/92Sales2$55,00
0.00$2,000.00$0.0035048810/7/92Sales2$77,000.00$2,000.00$0
.0049019610/8/92Sales3$55,000.00$2,000.00$1,100.005614131
0/9/92Sales3Team
leader.$55,000.00$2,000.00$1,100.0038333210/10/92Sales3$55,
000.00$2,000.00$1,100.0032102710/11/92Sales3$55,000.00$2,0
00.00$0.0059875510/14/87Sales3$55,000.00$2,000.00$0.00326
81510/15/87Sales3$77,000.00$2,000.00$0.0048390810/16/87Sa
les4Essential
Employee$55,000.00$2,000.00$1,100.0037433110/17/87Web
Development3$75,000.00$2,000.00$0.0057619010/18/87Web
Development3$75,000.00$2,000.00$0.0053504810/19/87Web
Development3$75,000.00$2,000.00$0.0047873310/20/87Web
Development3$75,000.00$2,000.00$0.0051039510/21/87Web
Development3$75,000.00$2,000.00$0.00
Project/OnlineStore/cart.php
<?php
// If the user clicked the add to cart button on the product page
we can check for the form data
if (isset($_POST['product_id'], $_POST['quantity']) &&
is_numeric($_POST['product_id']) &&
is_numeric($_POST['quantity'])) {
// Set the post variables so we easily identify them, also make
sure they are integer
$product_id = (int)$_POST['product_id'];
$quantity = (int)$_POST['quantity'];
// Prepare the SQL statement, we basically are checking if the
product exists in our databaser
$stmt = $pdo->prepare('SELECT * FROM products WHERE
id = ?');
$stmt->execute([$_POST['product_id']]);
// Fetch the product from the database and return the result as
an Array
$product = $stmt->fetch(PDO::FETCH_ASSOC);
// Check if the product exists (array is not empty)
if ($product && $quantity > 0) {
// Product exists in database, now we can create/update the
session variable for the cart
if (isset($_SESSION['cart']) &&
is_array($_SESSION['cart'])) {
if (array_key_exists($product_id, $_SESSION['cart'])) {
// Product exists in cart so just update the quanity
$_SESSION['cart'][$product_id] += $quantity;
} else {
// Product is not in cart so add it
$_SESSION['cart'][$product_id] = $quantity;
}
} else {
// There are no products in cart, this will add the first
product to cart
$_SESSION['cart'] = array($product_id => $quantity);
}
}
// Prevent form resubmission...
header('location: index.php?page=cart');
exit;
}
// Remove product from cart, check for the URL param
"remove", this is the product id, make sure it's a number and
check if it's in the cart
if (isset($_GET['remove']) && is_numeric($_GET['remove'])
&& isset($_SESSION['cart']) &&
isset($_SESSION['cart'][$_GET['remove']])) {
// Remove the product from the shopping cart
unset($_SESSION['cart'][$_GET['remove']]);
}
// Update product quantities in cart if the user clicks the
"Update" button on the shopping cart page
if (isset($_POST['update']) && isset($_SESSION['cart'])) {
// Loop through the post data so we can update the quantities
for every product in cart
foreach ($_POST as $k => $v) {
if (strpos($k, 'quantity') !== false && is_numeric($v)) {
$id = str_replace('quantity-', '', $k);
$quantity = (int)$v;
// Always do checks and validation
if (is_numeric($id) && isset($_SESSION['cart'][$id])
&& $quantity > 0) {
// Update new quantity
$_SESSION['cart'][$id] = $quantity;
}
}
}
// Prevent form resubmission...
header('location: index.php?page=cart');
exit;
}
// Send the user to the place order page if they click the Place
Order button, also the cart should not be empty
if (isset($_POST['placeorder']) && isset($_SESSION['cart'])
&& !empty($_SESSION['cart'])) {
header('Location: index.php?page=placeorder');
exit;
}
// Check the session variable for products in cart
$products_in_cart = isset($_SESSION['cart']) ?
$_SESSION['cart'] : array();
$products = array();
$subtotal = 0.00;
// If there are products in cart
if ($products_in_cart) {
// There are products in the cart so we need to select those
products from the database
// Products in cart array to question mark string array, we
need the SQL statement to include IN (?,?,?,...etc)
$array_to_question_marks = implode(',', array_fill(0,
count($products_in_cart), '?'));
$stmt = $pdo->prepare('SELECT * FROM products WHERE
id IN (' . $array_to_question_marks . ')');
// We only need the array keys, not the values, the keys are
the id's of the products
$stmt->execute(array_keys($products_in_cart));
// Fetch the products from the database and return the result
as an Array
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Calculate the subtotal
foreach ($products as $product) {
$subtotal += (float)$product['price'] *
(int)$products_in_cart[$product['id']];
}
}
?>
<?=template_header('Cart')?>
<div class="cart content-wrapper">
<h1>Shopping Cart</h1>
<form action="index.php?page=cart" method="post">
<table>
<thead>
<tr>
<td colspan="2">Product</td>
<td>Price</td>
<td>Quantity</td>
<td>Total</td>
</tr>
</thead>
<tbody>
<?php if (empty($products)): ?>
<tr>
<td colspan="5" style="text-align:center;">You
have no products added in your Shopping Cart</td>
</tr>
<?php else: ?>
<?php foreach ($products as $product): ?>
<tr>
<td class="img">
<a
href="index.php?page=product&id=<?=$product['id']?>">
<img src="imgs/<?=$product['img']?>"
width="50" height="50" alt="<?=$product['name']?>">
</a>
</td>
<td>
<a
href="index.php?page=product&id=<?=$product['id']?>"><?=$p
roduct['name']?></a>
<br>
<a
href="index.php?page=cart&remove=<?=$product['id']?>"
class="remove">Remove</a>
</td>
<td
class="price">&dollar;<?=$product['price']?></td>
<td class="quantity">
<input type="number" name="quantity-
<?=$product['id']?>"
value="<?=$products_in_cart[$product['id']]?>" min="1"
max="<?=$product['quantity']?>" placeholder="Quantity"
required>
</td>
<td class="price">&dollar;<?=$product['price'] *
$products_in_cart[$product['id']]?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
<div class="subtotal">
<span class="text">Subtotal</span>
<span class="price">&dollar;<?=$subtotal?></span>
</div>
<div class="buttons">
<input type="submit" value="Update" name="update">
<input type="submit" value="Place Order"
name="placeorder">
</div>
</form>
</div>
<?=template_footer()?>
Project/OnlineStore/currency_sample_code.php
<?php
//in php.ini, uncomment extension=intl (remove ';' from its
start)
//stop then start apache
$fmt = new NumberFormatter('en_US',
NumberFormatter::CURRENCY);
//to remove decimal points:
//$fmt->setAttribute(NumberFormatter::FRACTION_DIGITS,
0);
echo $fmt->formatCurrency(100, 'GBP');
?>
Project/OnlineStore/functions.php
<?php
function pdo_connect_mysql() {
// Update the details below with your MySQL details
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '';
$DATABASE_NAME = 'storedb';
try {
return new PDO('mysql:host=' . $DATABASE_HOST .
';dbname=' . $DATABASE_NAME . ';charset=utf8',
$DATABASE_USER, $DATABASE_PASS);
} catch (PDOException $exception) {
// If there is an error with the connection, stop the script
and display the error.
exit('Failed to connect to database!');
}
}
// Template header, feel free to customize this
function template_header($title) {
// Get the amount of items in the shopping cart, this will be
displayed in the header.
$num_items_in_cart = isset($_SESSION['cart']) ?
count($_SESSION['cart']) : 0;
$countries = ['BHD'=>'Bahrain',
'BRL'=>'Brazil',
'CAD'=>'Canada',
'CNY'=>'China',
'EUR'=>'Euro',
'INR'=>'India',
'JPY'=>'Japan',
'GBP'=>'United Kingdom',
'USD'=>'United States'];
$options = '';
foreach($countries as $currency=>$country)
{
//Check the Cookie here to make the default
country, keep US as default if no cookie
if($currency=='USD')
$options = $options.'<option
value='.$currency.' selected>'.$country.'</option>';
else
$options = $options.'<option
value='.$currency.'>'.$country.'</option>';
}
echo <<<EOT
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>$title</title>
<link href="style.css" rel="stylesheet"
type="text/css">
<link rel="stylesheet"
href="https://use.fontawesome.com/releases/v5.7.1/css/all.css">
</head>
<body>
<header>
<div class="content-wrapper">
<h1>Online Shopping Store</h1>
<nav>
<a href="index.php">Home</a>
<a href="index.php?page=products">Products</a>
<select name="countries" id="countries">
$options
</select>
</nav>
<div class="link-icons">
<a href="index.php?page=cart">
<i class="fas fa-shopping-
cart"></i>
<span>$num_items_in_cart</span>
</a>
</div>
</div>
</header>
<main>
EOT;
}
// Template footer
function template_footer() {
$year = date('Y');
echo <<<EOT
</main>
<footer>
<div class="content-wrapper">
<p>&copy; $year, Online Shopping Store</p>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>
EOT;
}
?>
Project/OnlineStore/home.php
<?php
// Get the 4 most recently added products
$stmt = $pdo->prepare('SELECT * FROM products ORDER BY
date_added DESC LIMIT 4');
$stmt->execute();
$recently_added_products = $stmt-
>fetchAll(PDO::FETCH_ASSOC);
?>
<?=template_header('Home')?>
<div class="featured">
<h2>Gadgets</h2>
<p>Essential gadgets for everyday use</p>
</div>
<div class="recentlyadded content-wrapper">
<h2>Recently Added Products</h2>
<div class="products">
<?php foreach ($recently_added_products as $product): ?>
<a
href="index.php?page=product&id=<?=$product['id']?>"
class="product">
<img src="imgs/<?=$product['img']?>" width="200"
height="200" alt="<?=$product['name']?>">
<span class="name"><?=$product['name']?></span>
<span class="price">
&dollar;<?=$product['price']?>
<?php if ($product['rrp'] > 0): ?>
<span
class="rrp">&dollar;<?=$product['rrp']?></span>
<?php endif; ?>
</span>
</a>
<?php endforeach; ?>
</div>
</div>
<?=template_footer()?>
Project/OnlineStore/imgs/camera.jpg
Project/OnlineStore/imgs/featured-image.jpg
Project/OnlineStore/imgs/headphones.jpg
Project/OnlineStore/imgs/wallet.jpg
Project/OnlineStore/imgs/watch.jpg
Project/OnlineStore/index.php
<?php
session_start();
// Include functions and connect to the database using PDO
MySQL
include 'functions.php';
$pdo = pdo_connect_mysql();
// Page is set to home (home.php) by default, so when the
visitor visits that will be the page they see.
$page = isset($_GET['page']) && file_exists($_GET['page'] .
'.php') ? $_GET['page'] : 'home';
// Include and show the requested page
include $page . '.php';
?>
Project/OnlineStore/placeorder.php
<?=template_header('Place Order')?>
<div class="placeorder content-wrapper">
<h1>Your Order Has Been Placed</h1>
<p>Thank you for ordering with us, we'll contact you by
email with your order details.</p>
</div>
<?=template_footer()?>
Project/OnlineStore/product.php
<?php
// Check to make sure the id parameter is specified in the URL
if (isset($_GET['id'])) {
// Prepare statement and execute, prevents SQL injection
$stmt = $pdo->prepare('SELECT * FROM products WHERE
id = ?');
$stmt->execute([$_GET['id']]);
// Fetch the product from the database and return the result as
an Array
$product = $stmt->fetch(PDO::FETCH_ASSOC);
// Check if the product exists (array is not empty)
if (!$product) {
// Simple error to display if the id for the product doesn't
exists (array is empty)
exit('Product does not exist!');
}
} else {
// Simple error to display if the id wasn't specified
exit('Product does not exist!');
}
?>
<?=template_header('Product')?>
<div class="product content-wrapper">
<img src="imgs/<?=$product['img']?>" width="500"
height="500" alt="<?=$product['name']?>">
<div>
<h1 class="name"><?=$product['name']?></h1>
<span class="price">
&dollar;<?=$product['price']?>
<?php if ($product['rrp'] > 0): ?>
<span class="rrp">&dollar;<?=$product['rrp']?></span>
<?php endif; ?>
</span>
<form action="index.php?page=cart" method="post">
<input type="number" name="quantity" value="1"
min="1" max="<?=$product['quantity']?>"
placeholder="Quantity" required>
<input type="hidden" name="product_id"
value="<?=$product['id']?>">
<input type="submit" value="Add To Cart">
</form>
<div class="description">
<?=$product['desc']?>
</div>
</div>
</div>
<?=template_footer()?>
Project/OnlineStore/products.php
<?php
// The amounts of products to show on each page
$num_products_on_each_page = 4;
// The current page, in the URL this will appear as
index.php?page=products&p=1, index.php?page=products&p=2,
etc...
$current_page = isset($_GET['p']) && is_numeric($_GET['p'])
? (int)$_GET['p'] : 1;
// Select products ordered by the date added
$stmt = $pdo->prepare('SELECT * FROM products ORDER BY
date_added DESC LIMIT ?,?');
// bindValue will allow us to use integer in the SQL statement,
we need to use for LIMIT
$stmt->bindValue(1, ($current_page - 1) *
$num_products_on_each_page, PDO::PARAM_INT);
$stmt->bindValue(2, $num_products_on_each_page,
PDO::PARAM_INT);
$stmt->execute();
// Fetch the products from the database and return the result as
an Array
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Get the total number of products
$total_products = $pdo->query('SELECT * FROM products')-
>rowCount();
?>
<?=template_header('Products')?>
<div class="products content-wrapper">
<h1>Products</h1>
<p><?=$total_products?> Products</p>
<div class="products-wrapper">
<?php foreach ($products as $product): ?>
<a
href="index.php?page=product&id=<?=$product['id']?>"
class="product">
<img src="imgs/<?=$product['img']?>" width="200"
height="200" alt="<?=$product['name']?>">
<span class="name"><?=$product['name']?></span>
<span class="price">
&dollar;<?=$product['price']?>
<?php if ($product['rrp'] > 0): ?>
<span
class="rrp">&dollar;<?=$product['rrp']?></span>
<?php endif; ?>
</span>
</a>
<?php endforeach; ?>
</div>
<div class="buttons">
<?php if ($current_page > 1): ?>
<a href="index.php?page=products&p=<?=$current_page-
1?>">Prev</a>
<?php endif; ?>
<?php if ($total_products > ($current_page *
$num_products_on_each_page) - $num_products_on_each_page
+ count($products)): ?>
<a
href="index.php?page=products&p=<?=$current_page+1?>">Ne
xt</a>
<?php endif; ?>
</div>
</div>
<?=template_footer()?>
Project/OnlineStore/style.css
* {
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, "segoe
ui", roboto, oxygen, ubuntu, cantarell, "fira sans", "droid sans",
"helvetica neue", Arial, sans-serif;
font-size: 16px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
html {
height: 100%;
}
body {
position: relative;
min-height: 100%;
color: #555555;
background-color: #FFFFFF;
margin: 0;
padding-bottom: 100px; /* Same height as footer */
}
h1, h2, h3, h4, h5 {
color: #394352;
}
.content-wrapper {
width: 1050px;
margin: 0 auto;
}
header {
border-bottom: 1px solid #EEEEEE;
}
header .content-wrapper {
display: flex;
}
header h1 {
display: flex;
flex-grow: 1;
flex-basis: 0;
font-size: 20px;
margin: 0;
padding: 24px 0;
}
header nav {
display: flex;
flex-grow: 1;
flex-basis: 0;
justify-content: center;
align-items: center;
}
header nav a {
text-decoration: none;
color: #555555;
padding: 10px 10px;
margin: 0 10px;
}
header nav a:hover {
border-bottom: 1px solid #aaa;
}
header .link-icons {
display: flex;
flex-grow: 1;
flex-basis: 0;
justify-content: flex-end;
align-items: center;
position: relative;
}
header .link-icons a {
text-decoration: none;
color: #394352;
padding: 0 10px;
}
header .link-icons a:hover {
color: #4e5c70;
}
header .link-icons a i {
font-size: 18px;
}
header .link-icons a span {
display: inline-block;
text-align: center;
background-color: #63748e;
border-radius: 50%;
color: #FFFFFF;
font-size: 12px;
line-height: 16px;
width: 16px;
height: 16px;
font-weight: bold;
position: absolute;
top: 22px;
right: 0;
}
main .featured {
display: flex;
flex-direction: column;
background-image: url(imgs/featured-image.jpg);
background-repeat: no-repeat;
background-size: cover;
height: 500px;
align-items: center;
justify-content: center;
text-align: center;
}
main .featured h2 {
display: inline-block;
margin: 0;
width: 1050px;
font-family: Rockwell, Courier Bold, Courier, Georgia,
Times, Times New Roman, serif;
font-size: 68px;
color: #FFFFFF;
padding-bottom: 10px;
}
main .featured p {
display: inline-block;
margin: 0;
width: 1050px;
font-size: 24px;
color: #FFFFFF;
}
main .recentlyadded h2 {
display: block;
font-weight: normal;
margin: 0;
padding: 40px 0;
font-size: 24px;
text-align: center;
width: 100%;
border-bottom: 1px solid #EEEEEE;
}
main .recentlyadded .products, main .products .products-
wrapper {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
padding: 40px 0 0 0;
}
main .recentlyadded .products .product, main .products
.products-wrapper .product {
display: block;
overflow: hidden;
text-decoration: none;
width: 25%;
padding-bottom: 60px;
}
main .recentlyadded .products .product img, main .products
.products-wrapper .product img {
transform: scale(1);
transition: transform 1s;
}
main .recentlyadded .products .product .name, main .products
.products-wrapper .product .name {
display: block;
color: #555555;
padding: 20px 0 2px 0;
}
main .recentlyadded .products .product .price, main .products
.products-wrapper .product .price {
display: block;
color: #999999;
}
main .recentlyadded .products .product .rrp, main .products
.products-wrapper .product .rrp {
color: #BBBBBB;
text-decoration: line-through;
}
main .recentlyadded .products .product:hover img, main
.products .products-wrapper .product:hover img {
transform: scale(1.05);
transition: transform 1s;
}
main .recentlyadded .products .product:hover .name, main
.products .products-wrapper .product:hover .name {
text-decoration: underline;
}
main > .product {
display: flex;
padding: 40px 0;
}
main > .product > div {
padding-left: 15px;
}
main > .product h1 {
font-size: 34px;
font-weight: normal;
margin: 0;
padding: 20px 0 10px 0;
}
main > .product .price {
display: block;
font-size: 22px;
color: #999999;
}
main > .product .rrp {
color: #BBBBBB;
text-decoration: line-through;
font-size: 22px;
padding-left: 5px;
}
main > .product form {
display: flex;
flex-flow: column;
margin: 40px 0;
}
main > .product form input[type="number"] {
width: 400px;
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ccc;
color: #555555;
border-radius: 5px;
}
main > .product form input[type="submit"] {
background: #4e5c70;
border: 0;
color: #FFFFFF;
width: 400px;
padding: 12px 0;
text-transform: uppercase;
font-size: 14px;
font-weight: bold;
border-radius: 5px;
cursor: pointer;
}
main > .product form input[type="submit"]:hover {
background: #434f61;
}
main > .products h1 {
display: block;
font-weight: normal;
margin: 0;
padding: 40px 0;
font-size: 24px;
text-align: center;
width: 100%;
}
main > .products .buttons {
text-align: right;
padding-bottom: 40px;
}
main > .products .buttons a {
display: inline-block;
text-decoration: none;
margin-left: 5px;
padding: 12px 20px;
border: 0;
background: #4e5c70;
color: #FFFFFF;
font-size: 14px;
font-weight: bold;
border-radius: 5px;
}
main > .products .buttons a:hover {
background: #434f61;
}
main .cart h1 {
display: block;
font-weight: normal;
margin: 0;
padding: 40px 0;
font-size: 24px;
text-align: center;
width: 100%;
}
main .cart table {
width: 100%;
}
main .cart table thead td {
padding: 30px 0;
border-bottom: 1px solid #EEEEEE;
}
main .cart table thead td:last-child {
text-align: right;
}
main .cart table tbody td {
padding: 20px 0;
border-bottom: 1px solid #EEEEEE;
}
main .cart table tbody td:last-child {
text-align: right;
}
main .cart table .img {
width: 80px;
}
main .cart table .remove {
color: #777777;
font-size: 12px;
padding-top: 3px;
}
main .cart table .remove:hover {
text-decoration: underline;
}
main .cart table .price {
color: #999999;
}
main .cart table a {
text-decoration: none;
color: #555555;
}
main .cart table input[type="number"] {
width: 68px;
padding: 10px;
border: 1px solid #ccc;
color: #555555;
border-radius: 5px;
}
main .cart .subtotal {
text-align: right;
padding: 40px 0;
}
main .cart .subtotal .text {
padding-right: 40px;
font-size: 18px;
}
main .cart .subtotal .price {
font-size: 18px;
color: #999999;
}
main .cart .buttons {
text-align: right;
padding-bottom: 40px;
}
main .cart .buttons input[type="submit"] {
margin-left: 5px;
padding: 12px 20px;
border: 0;
background: #4e5c70;
color: #FFFFFF;
font-size: 14px;
font-weight: bold;
cursor: pointer;
border-radius: 5px;
}
main .cart .buttons input[type="submit"]:hover {
background: #434f61;
}
main .placeorder h1 {
display: block;
font-weight: normal;
margin: 0;
padding: 40px 0;
font-size: 24px;
text-align: center;
width: 100%;
}
main .placeorder p {
text-align: center;
}
footer {
position: absolute;
bottom: 0;
border-top: 1px solid #EEEEEE;
padding: 20px 0;
width: 100%;
}
Project/SQL/storedb.sql
-- phpMyAdmin SQL Dump
-- version 5.1.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Mar 18, 2022 at 09:02 AM
-- Server version: 10.4.21-MariaDB
-- PHP Version: 8.0.12
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET
@[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET
@[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET
@[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `storedb`
--
-- --------------------------------------------------------
--
-- Table structure for table `products`
--
CREATE TABLE `products` (
`id` int(11) NOT NULL,
`name` varchar(200) NOT NULL,
`desc` text NOT NULL,
`price` decimal(7,2) NOT NULL,
`rrp` decimal(7,2) NOT NULL DEFAULT 0.00,
`quantity` int(11) NOT NULL,
`img` text NOT NULL,
`date_added` datetime NOT NULL DEFAULT
current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `products`
--
INSERT INTO `products` (`id`, `name`, `desc`, `price`, `rrp`,
`quantity`, `img`, `date_added`) VALUES
(1, 'Smart Watch', '<p>Unique watch made with stainless steel,
ideal for those that prefer interative
watches.</p>rn<h3>Features</h3>rn<ul>rn<li>Powered by
Android with built-in apps.</li>rn<li>Adjustable to fit
most.</li>rn<li>Long battery life, continuous wear for up to 2
days.</li>rn<li>Lightweight design, comfort on your
wrist.</li>rn</ul>', '29.99', '0.00', 10, 'watch.jpg', '2022-02-01
17:55:22'),
(2, 'Wallet', '', '14.99', '19.99', 34, 'wallet.jpg', '2022-02-13
18:52:49'),
(3, 'Headphones', '', '19.99', '0.00', 23, 'headphones.jpg', '2022-
03-01 18:47:56'),
(4, 'Digital Camera', '', '69.99', '0.00', 7, 'camera.jpg', '2022-03-
01 17:42:04');
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`uname` tinytext NOT NULL,
`email` tinytext NOT NULL,
`password` longtext NOT NULL,
`salt` varchar(64) NOT NULL,
`reg_date` timestamp NOT NULL DEFAULT
current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `uname`, `email`, `password`,
`salt`, `reg_date`) VALUES
(1, 'user1', '[email protected]', '123456', '', '2022-03-02
04:42:46');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `products`
--
ALTER TABLE `products`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `products`
--
ALTER TABLE `products`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,
AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,
AUTO_INCREMENT=36;
COMMIT;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT
*/;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS
*/;
/*!40101 SET [email protected]_COLLATION_CONNECTION
*/;
ITIS345/ITIS477 Group Project Second Semester 2021-2022
University of Bahrain
College of Information Technology
Department of Information Systems
ITIS345/ITIS477 Web Design and Development II
Course Project
Developing a Complete PHP Web Application
Online Shopping Store
Project Deadline: 12 May 2022
Group number Student ID Student Name
Mark Distribution :
Assessment Maximum Mark scored mark
Report
Total: 12 %
Report structure, layout,
language, and format.
2 %
Web site users and user Session 2 %
Security (MD5 and SQL Injection
Protection)
2 %
Country Currency and Exchange
Rates (Web Service)
2 %
Country Preference in the
Cookies
2 %
Appendix: source code 2 %
Presentation 6 %
Peer Review 2 %
Total 20 %
Description
The decision of the web development path has become a
challenge and requires adopting the best
practices and studying available roadmaps to achieve the
expected outcomes. “PHP (recursive
acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting
language that is especially suited for web development and can
be embedded into HTML…PHP is
mainly focused on server-side scripting” (PHP Introduction,
n.d.)
It is widely used, flexible, and provides multiple integration
opportunities with different platforms and
technologies. Developing a complete web application including
front-end and back-end technologies
ITIS345/ITIS477 Group Project Second Semester 2021-2022
as one team is one of this course learning outcomes.
Accordingly, solving specific business
requirements - like having an online shopping gateway for a
store - through building a php-based web
application would put you on the right track towards becoming a
professional developer and achieving
this course outcomes.
Task
Group members are required to configure the provided project
base files and the MySQL database.
You can refer to the Readme file for some guidelines.
“Online Shopping Store” is a php web-based application that
will allow website visitors to browse for
products, add products to cart, and place orders.
Your objective is to enhance the system to provide the
necessary features to enable the users to use it
seamlessly and intuitively.
Business Requirements
A store needs to provide a web-based application for public so
they can purchase goods and products
online without having to go to the store in-person. Users should
be able to browse goods and products
and add them to their cart without having to register, but they
should register before they can
proceed with placing orders. Web site users should be able to
select the required country, so all prices
get displayed in the selected country currency with proper
exchange rate conversion, assuming having
all prices stored in the database in US dollar. Exchange rates
should be pulled from accurate sources in
the web and should reflect current rates. Users can have the
ability to store their country preference.
The system should be secure, and users’ information should be
securely stored in the database.
Online Shopping Store Application
- Web site users and user session:
Web site users should be able to browse products and add them
to their cart, even
without signing-in. But once satisfied with their items, they
should be asked to sign-in
or register before they can proceed with placing the order.
The home page should have a “Sign-in” or “Sign-out” links so
users can sign-in/sign-
out if they want to. Sign-in page should allow users to sign-in,
and new users should
be able to Register if they are not, so they are added to the store
database.
Use Session State to manage individual user sessions, and make
sure to kill the
session upon user sign-out.
- Security:
“The MD5 Message-Digest Algorithm: "The MD5 message-
digest algorithm takes as
input a message of arbitrary length and produces as output a
128-bit "fingerprint" or
"message digest" of the input.” (PHP md5() Function, n.d.)
Use md5 function - with salting - to store users’ passwords
securely in the database.
Moreover, the system should be protected from SQL Injection.
Make sure to
implement these techniques to all applicable database
operations.
ITIS345/ITIS477 Group Project Second Semester 2021-2022
Country Currency and Exchange Rates:
Users should be able to select the preferred country from a
drop-down list of
countries. Then based on the selected country currency, the
exchange rate with
respect to US dollar should be taken from the result of the
following web service:
https://open.er-api.com/v6/latest/USD
The above web service is an open API and can be used without
an API key.
Once you get the rate, replace all prices on the page with the
new values calculated
based on the exchange rate.
Use PHP NumberFormatter class to format the prices with the
selected currency using
formatCurrency method.
You can refer to the documentation on:
https://www.php.net/manual/en/numberformatter.formatcurrency
.php
Configuration and Sample code is also available in the Readme
file.
- Country Preference in the Cookies:
Use cookies to store user preference of the country for currency
calculations. Then the
system should retrieve this information to change the prices in
the web site whenever
the user visits the site again.
Groupwork Progress and Distribution
• Each group should have 4 members that work together.
Members should exchange communication
details.
• Group members should work together and set a semi-weekly
(twice a week) meeting to discuss their
work and assignments. More time will be required to assemble
and finalize the report.
• A shared folder between the members should be created for
project-related work.
• While the work will be distributed amongst the group
members, all should contribute to every
aspect of the project. “Slacking” is not tolerable.
Report
The report should be original, well written, and neatly
formatted. It should cite various resources in
addition to the official. The report should use paraphrasing with
proper referencing using a common
referencing standard such as ACM, IEEE, or APA. The report
expected length is 2500 words excluding
references and source code.
The report content may vary. For a general guide have a look at
the University of Leicester Writing
Report Study Guide1.
1 https://libguides.reading.ac.uk/reports/structuring
https://open.er-api.com/v6/latest/USD
https://www.php.net/manual/en/numberformatter.formatcurrency
.php
https://libguides.reading.ac.uk/reports/structuring
ITIS345/ITIS477 Group Project Second Semester 2021-2022
The report should include:
• Cover page stating the members, course, and section, topic as
well as the group number.
• The report must be evenly formatted and include page
numbers.
• Any figures, tables, or charts must be numbered.
• References most be formatted properly.
Report content should cover the following sections with
explanation and implementation method, you
need to illustrate important snippets of your “php source code”
for each section clearly:
• Web site users and user Session
• Security (MD5 and SQL Injection Protection)
• Country Currency and Exchange Rates (Web Service)
• Country Preference in the Cookies
• Appendix: Source Code
All reports will be subjected to plagiarism detection tools to
ensure the authenticity of the content.
Presentation
In addition to the report, a max of 15-minute presentation
summary should be recorded and submitted
with the project. It should highlight the important points and
findings. The presentation aids can be
slides, code snippets, and diagrams only (no videos from other
sources).
You must record a walkthrough of the system, each group
member must present, and the full
presentation should be edited and submitted as one video.
Some of the video presentation tools:
• Open Broadcaster Software (Freeware) https://obsproject.com/
OR
• Debut Video Capture and Screen Recorder Software (Free
Trial / full version is around 13 BD):
https://www.nchsoftware.com/capture/index.html
Deadlines & Deliverables
• Report
o Upload soft copy (Word and Adobe PDF) (Upload link will be
provided)
• Recorded Presentation (including System Walkthrough):
o Upload video file (Instructions will be provided)
• Peer Reviews:
o Each student should review and rate two of colleagues’
presentations via an online form.
(Instructions will be provided)
https://obsproject.com/
https://www.nchsoftware.com/capture/index.html
ITIS345/ITIS477 Group Project Second Semester 2021-2022
Assessment Criteria and Marking Scheme
Marks Category Marked Items Description
12 Report • Report content and structure:
o Web site users and user Session
o Security (MD5 and SQL Injection
Protection)
o Country Currency and Exchange Rates
(Web Services)
o Country Preference in the Cookies
o Appendix: source code
• Report layout, language, and format
6 Presentation Video
(including System
Walkthrough)
• Presentation content
• Presentation flow and language
• System Walkthrough
2 Peer Ratings
(each student)
• 2 peer ratings
Bibliography
PHP Introduction. (n.d.). Retrieved from php:
https://www.php.net/
PHP md5() Function. (n.d.). Retrieved from w3schools:
https://www.w3schools.com/php/func_string_md5.asp
BUS 225 Air Transporstation SupEMPLOYEE IDDATE OF HIREDEPARTMENTPE

More Related Content

Similar to BUS 225 Air Transporstation SupEMPLOYEE IDDATE OF HIREDEPARTMENTPE

Eurogroup Consulting - Shopping 2020 - Supply Chain Final
Eurogroup Consulting - Shopping 2020 - Supply Chain FinalEurogroup Consulting - Shopping 2020 - Supply Chain Final
Eurogroup Consulting - Shopping 2020 - Supply Chain Final
Eurogroup Consulting NEDERLAND
 
Decoupling the Ulabox.com monolith. From CRUD to DDD
Decoupling the Ulabox.com monolith. From CRUD to DDDDecoupling the Ulabox.com monolith. From CRUD to DDD
Decoupling the Ulabox.com monolith. From CRUD to DDD
Aleix Vergés
 
Al Fazl International - 14 Novemember 2014
Al Fazl International - 14 Novemember 2014Al Fazl International - 14 Novemember 2014
Al Fazl International - 14 Novemember 2014
muzaffertahir9
 
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docxVersion1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
tienboileau
 
SAP Sales Automation
SAP Sales Automation SAP Sales Automation
SAP Sales Automation
SAP Customer Experience
 
Business News, Personal Finance and Money News
Business News, Personal Finance and Money NewsBusiness News, Personal Finance and Money News
Business News, Personal Finance and Money News
eminentoomph4388
 
Story bird resources_part_3
Story bird resources_part_3Story bird resources_part_3
Story bird resources_part_3
Eric Brace
 
Assemble Your Code in Stages: Leveling Up With Pipelines
Assemble Your Code in Stages: Leveling Up With PipelinesAssemble Your Code in Stages: Leveling Up With Pipelines
Assemble Your Code in Stages: Leveling Up With Pipelines
Steven Wade
 
FDA Q&A
FDA Q&A FDA Q&A
FDA Q&A
Healthegy
 
Prob 2010-11-calendrier
Prob 2010-11-calendrierProb 2010-11-calendrier
Prob 2010-11-calendrier
nfbourreau
 
High-level Web Testing
High-level Web TestingHigh-level Web Testing
High-level Web Testing
petersergeant
 
Presentación: La gestión de la colección de libros electróniocs en las biblio...
Presentación: La gestión de la colección de libros electróniocs en las biblio...Presentación: La gestión de la colección de libros electróniocs en las biblio...
Presentación: La gestión de la colección de libros electróniocs en las biblio...
Biblioteca de la Universitat Jaume I
 
Contrail Project, OW2con11, Nov 24-25, Paris
Contrail Project, OW2con11, Nov 24-25, ParisContrail Project, OW2con11, Nov 24-25, Paris
Contrail Project, OW2con11, Nov 24-25, Paris
OW2
 
Story bird resource_part_1
Story bird resource_part_1Story bird resource_part_1
Story bird resource_part_1
Eric Brace
 
Los%20jo%cc%81venes%20y%20las%20nuevas%20tecnologias[1]
Los%20jo%cc%81venes%20y%20las%20nuevas%20tecnologias[1]Los%20jo%cc%81venes%20y%20las%20nuevas%20tecnologias[1]
Los%20jo%cc%81venes%20y%20las%20nuevas%20tecnologias[1]
Fernando Bordignon
 
Los jovenes y_las_nuevas_tecnologias
Los jovenes y_las_nuevas_tecnologiasLos jovenes y_las_nuevas_tecnologias
Los jovenes y_las_nuevas_tecnologias
olguita
 
Business News, Personal Finance and Money News
Business News, Personal Finance and Money NewsBusiness News, Personal Finance and Money News
Business News, Personal Finance and Money News
phobicmistake8593
 
Empowering End-users to Find Point-of-interests with a Public Display
Empowering End-users to Find Point-of-interests with a Public DisplayEmpowering End-users to Find Point-of-interests with a Public Display
Empowering End-users to Find Point-of-interests with a Public Display
Tetsuo Yamabe
 
NRI Report
NRI ReportNRI Report
NRI Report
Obama White House
 
Business News, Personal Finance and Money News
Business News, Personal Finance and Money NewsBusiness News, Personal Finance and Money News
Business News, Personal Finance and Money News
moaninglunatic320
 

Similar to BUS 225 Air Transporstation SupEMPLOYEE IDDATE OF HIREDEPARTMENTPE (20)

Eurogroup Consulting - Shopping 2020 - Supply Chain Final
Eurogroup Consulting - Shopping 2020 - Supply Chain FinalEurogroup Consulting - Shopping 2020 - Supply Chain Final
Eurogroup Consulting - Shopping 2020 - Supply Chain Final
 
Decoupling the Ulabox.com monolith. From CRUD to DDD
Decoupling the Ulabox.com monolith. From CRUD to DDDDecoupling the Ulabox.com monolith. From CRUD to DDD
Decoupling the Ulabox.com monolith. From CRUD to DDD
 
Al Fazl International - 14 Novemember 2014
Al Fazl International - 14 Novemember 2014Al Fazl International - 14 Novemember 2014
Al Fazl International - 14 Novemember 2014
 
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docxVersion1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
 
SAP Sales Automation
SAP Sales Automation SAP Sales Automation
SAP Sales Automation
 
Business News, Personal Finance and Money News
Business News, Personal Finance and Money NewsBusiness News, Personal Finance and Money News
Business News, Personal Finance and Money News
 
Story bird resources_part_3
Story bird resources_part_3Story bird resources_part_3
Story bird resources_part_3
 
Assemble Your Code in Stages: Leveling Up With Pipelines
Assemble Your Code in Stages: Leveling Up With PipelinesAssemble Your Code in Stages: Leveling Up With Pipelines
Assemble Your Code in Stages: Leveling Up With Pipelines
 
FDA Q&A
FDA Q&A FDA Q&A
FDA Q&A
 
Prob 2010-11-calendrier
Prob 2010-11-calendrierProb 2010-11-calendrier
Prob 2010-11-calendrier
 
High-level Web Testing
High-level Web TestingHigh-level Web Testing
High-level Web Testing
 
Presentación: La gestión de la colección de libros electróniocs en las biblio...
Presentación: La gestión de la colección de libros electróniocs en las biblio...Presentación: La gestión de la colección de libros electróniocs en las biblio...
Presentación: La gestión de la colección de libros electróniocs en las biblio...
 
Contrail Project, OW2con11, Nov 24-25, Paris
Contrail Project, OW2con11, Nov 24-25, ParisContrail Project, OW2con11, Nov 24-25, Paris
Contrail Project, OW2con11, Nov 24-25, Paris
 
Story bird resource_part_1
Story bird resource_part_1Story bird resource_part_1
Story bird resource_part_1
 
Los%20jo%cc%81venes%20y%20las%20nuevas%20tecnologias[1]
Los%20jo%cc%81venes%20y%20las%20nuevas%20tecnologias[1]Los%20jo%cc%81venes%20y%20las%20nuevas%20tecnologias[1]
Los%20jo%cc%81venes%20y%20las%20nuevas%20tecnologias[1]
 
Los jovenes y_las_nuevas_tecnologias
Los jovenes y_las_nuevas_tecnologiasLos jovenes y_las_nuevas_tecnologias
Los jovenes y_las_nuevas_tecnologias
 
Business News, Personal Finance and Money News
Business News, Personal Finance and Money NewsBusiness News, Personal Finance and Money News
Business News, Personal Finance and Money News
 
Empowering End-users to Find Point-of-interests with a Public Display
Empowering End-users to Find Point-of-interests with a Public DisplayEmpowering End-users to Find Point-of-interests with a Public Display
Empowering End-users to Find Point-of-interests with a Public Display
 
NRI Report
NRI ReportNRI Report
NRI Report
 
Business News, Personal Finance and Money News
Business News, Personal Finance and Money NewsBusiness News, Personal Finance and Money News
Business News, Personal Finance and Money News
 

More from VannaSchrader3

Topic that identifies characteristics of Native American Culture and.docx
Topic that identifies characteristics of Native American Culture and.docxTopic that identifies characteristics of Native American Culture and.docx
Topic that identifies characteristics of Native American Culture and.docx
VannaSchrader3
 
Topic Stem Cell ResearchAPA Format I need these topics. don.docx
Topic Stem Cell ResearchAPA Format I need these topics. don.docxTopic Stem Cell ResearchAPA Format I need these topics. don.docx
Topic Stem Cell ResearchAPA Format I need these topics. don.docx
VannaSchrader3
 
Topic Styles of PolicingYou are a patrol officer in a middle- to .docx
Topic Styles of PolicingYou are a patrol officer in a middle- to .docxTopic Styles of PolicingYou are a patrol officer in a middle- to .docx
Topic Styles of PolicingYou are a patrol officer in a middle- to .docx
VannaSchrader3
 
Topic the legalization of same sex adoptionThese same sex adopti.docx
Topic the legalization of same sex adoptionThese same sex adopti.docxTopic the legalization of same sex adoptionThese same sex adopti.docx
Topic the legalization of same sex adoptionThese same sex adopti.docx
VannaSchrader3
 
TOPIC The Truth About Caffeine3 pages,give some statistics of neg.docx
TOPIC The Truth About Caffeine3 pages,give some statistics of neg.docxTOPIC The Truth About Caffeine3 pages,give some statistics of neg.docx
TOPIC The Truth About Caffeine3 pages,give some statistics of neg.docx
VannaSchrader3
 
Topic Media Example (article)1) as usual, do an analysis of the.docx
Topic Media Example (article)1) as usual, do an analysis of the.docxTopic Media Example (article)1) as usual, do an analysis of the.docx
Topic Media Example (article)1) as usual, do an analysis of the.docx
VannaSchrader3
 
Topic Servant LeadershipThread In our reading we explored th.docx
Topic Servant LeadershipThread In our reading we explored th.docxTopic Servant LeadershipThread In our reading we explored th.docx
Topic Servant LeadershipThread In our reading we explored th.docx
VannaSchrader3
 
Topic Organization of Law Enforcement AgenciesDo you agree or d.docx
Topic Organization of Law Enforcement AgenciesDo you agree or d.docxTopic Organization of Law Enforcement AgenciesDo you agree or d.docx
Topic Organization of Law Enforcement AgenciesDo you agree or d.docx
VannaSchrader3
 
Topic Parents Should have a license to have childrenaprox. 500 wo.docx
Topic Parents Should have a license to have childrenaprox. 500 wo.docxTopic Parents Should have a license to have childrenaprox. 500 wo.docx
Topic Parents Should have a license to have childrenaprox. 500 wo.docx
VannaSchrader3
 
Topic PATIENT DATA PRIVACYPerformance Improvement plan Proper an.docx
Topic PATIENT DATA PRIVACYPerformance Improvement plan Proper an.docxTopic PATIENT DATA PRIVACYPerformance Improvement plan Proper an.docx
Topic PATIENT DATA PRIVACYPerformance Improvement plan Proper an.docx
VannaSchrader3
 
Topic Kelly’s Personal ConstructsQuestionPrompt  Analyze th.docx
Topic Kelly’s Personal ConstructsQuestionPrompt  Analyze th.docxTopic Kelly’s Personal ConstructsQuestionPrompt  Analyze th.docx
Topic Kelly’s Personal ConstructsQuestionPrompt  Analyze th.docx
VannaSchrader3
 
Topic Fingerprints.Study fingerprinting in the textbook and res.docx
Topic Fingerprints.Study fingerprinting in the textbook and res.docxTopic Fingerprints.Study fingerprinting in the textbook and res.docx
Topic Fingerprints.Study fingerprinting in the textbook and res.docx
VannaSchrader3
 
Topic is Domestic Violence, Both men and women being the abus.docx
Topic is Domestic Violence, Both men and women being the abus.docxTopic is Domestic Violence, Both men and women being the abus.docx
Topic is Domestic Violence, Both men and women being the abus.docx
VannaSchrader3
 
Topic is regional integration .First You need to find article and re.docx
Topic is regional integration .First You need to find article and re.docxTopic is regional integration .First You need to find article and re.docx
Topic is regional integration .First You need to find article and re.docx
VannaSchrader3
 
Topic Human Trafficking in relation to US Border and Coastal securi.docx
Topic Human Trafficking in relation to US Border and Coastal securi.docxTopic Human Trafficking in relation to US Border and Coastal securi.docx
Topic Human Trafficking in relation to US Border and Coastal securi.docx
VannaSchrader3
 
Topic is AutonomyShort papers should use double spacing, 12-point .docx
Topic is AutonomyShort papers should use double spacing, 12-point .docxTopic is AutonomyShort papers should use double spacing, 12-point .docx
Topic is AutonomyShort papers should use double spacing, 12-point .docx
VannaSchrader3
 
Topic Genetic connection of hypertension to cardiovascular disease .docx
Topic Genetic connection of hypertension to cardiovascular disease .docxTopic Genetic connection of hypertension to cardiovascular disease .docx
Topic Genetic connection of hypertension to cardiovascular disease .docx
VannaSchrader3
 
topic Errors (medication or patient injury)in particular stra.docx
topic Errors (medication or patient injury)in particular stra.docxtopic Errors (medication or patient injury)in particular stra.docx
topic Errors (medication or patient injury)in particular stra.docx
VannaSchrader3
 
Topic differences between folk guitar and classic guitar.Minimu.docx
Topic differences between folk guitar and classic guitar.Minimu.docxTopic differences between folk guitar and classic guitar.Minimu.docx
Topic differences between folk guitar and classic guitar.Minimu.docx
VannaSchrader3
 
Topic Death Investigations. Review homicide investigation as de.docx
Topic Death Investigations. Review homicide investigation as de.docxTopic Death Investigations. Review homicide investigation as de.docx
Topic Death Investigations. Review homicide investigation as de.docx
VannaSchrader3
 

More from VannaSchrader3 (20)

Topic that identifies characteristics of Native American Culture and.docx
Topic that identifies characteristics of Native American Culture and.docxTopic that identifies characteristics of Native American Culture and.docx
Topic that identifies characteristics of Native American Culture and.docx
 
Topic Stem Cell ResearchAPA Format I need these topics. don.docx
Topic Stem Cell ResearchAPA Format I need these topics. don.docxTopic Stem Cell ResearchAPA Format I need these topics. don.docx
Topic Stem Cell ResearchAPA Format I need these topics. don.docx
 
Topic Styles of PolicingYou are a patrol officer in a middle- to .docx
Topic Styles of PolicingYou are a patrol officer in a middle- to .docxTopic Styles of PolicingYou are a patrol officer in a middle- to .docx
Topic Styles of PolicingYou are a patrol officer in a middle- to .docx
 
Topic the legalization of same sex adoptionThese same sex adopti.docx
Topic the legalization of same sex adoptionThese same sex adopti.docxTopic the legalization of same sex adoptionThese same sex adopti.docx
Topic the legalization of same sex adoptionThese same sex adopti.docx
 
TOPIC The Truth About Caffeine3 pages,give some statistics of neg.docx
TOPIC The Truth About Caffeine3 pages,give some statistics of neg.docxTOPIC The Truth About Caffeine3 pages,give some statistics of neg.docx
TOPIC The Truth About Caffeine3 pages,give some statistics of neg.docx
 
Topic Media Example (article)1) as usual, do an analysis of the.docx
Topic Media Example (article)1) as usual, do an analysis of the.docxTopic Media Example (article)1) as usual, do an analysis of the.docx
Topic Media Example (article)1) as usual, do an analysis of the.docx
 
Topic Servant LeadershipThread In our reading we explored th.docx
Topic Servant LeadershipThread In our reading we explored th.docxTopic Servant LeadershipThread In our reading we explored th.docx
Topic Servant LeadershipThread In our reading we explored th.docx
 
Topic Organization of Law Enforcement AgenciesDo you agree or d.docx
Topic Organization of Law Enforcement AgenciesDo you agree or d.docxTopic Organization of Law Enforcement AgenciesDo you agree or d.docx
Topic Organization of Law Enforcement AgenciesDo you agree or d.docx
 
Topic Parents Should have a license to have childrenaprox. 500 wo.docx
Topic Parents Should have a license to have childrenaprox. 500 wo.docxTopic Parents Should have a license to have childrenaprox. 500 wo.docx
Topic Parents Should have a license to have childrenaprox. 500 wo.docx
 
Topic PATIENT DATA PRIVACYPerformance Improvement plan Proper an.docx
Topic PATIENT DATA PRIVACYPerformance Improvement plan Proper an.docxTopic PATIENT DATA PRIVACYPerformance Improvement plan Proper an.docx
Topic PATIENT DATA PRIVACYPerformance Improvement plan Proper an.docx
 
Topic Kelly’s Personal ConstructsQuestionPrompt  Analyze th.docx
Topic Kelly’s Personal ConstructsQuestionPrompt  Analyze th.docxTopic Kelly’s Personal ConstructsQuestionPrompt  Analyze th.docx
Topic Kelly’s Personal ConstructsQuestionPrompt  Analyze th.docx
 
Topic Fingerprints.Study fingerprinting in the textbook and res.docx
Topic Fingerprints.Study fingerprinting in the textbook and res.docxTopic Fingerprints.Study fingerprinting in the textbook and res.docx
Topic Fingerprints.Study fingerprinting in the textbook and res.docx
 
Topic is Domestic Violence, Both men and women being the abus.docx
Topic is Domestic Violence, Both men and women being the abus.docxTopic is Domestic Violence, Both men and women being the abus.docx
Topic is Domestic Violence, Both men and women being the abus.docx
 
Topic is regional integration .First You need to find article and re.docx
Topic is regional integration .First You need to find article and re.docxTopic is regional integration .First You need to find article and re.docx
Topic is regional integration .First You need to find article and re.docx
 
Topic Human Trafficking in relation to US Border and Coastal securi.docx
Topic Human Trafficking in relation to US Border and Coastal securi.docxTopic Human Trafficking in relation to US Border and Coastal securi.docx
Topic Human Trafficking in relation to US Border and Coastal securi.docx
 
Topic is AutonomyShort papers should use double spacing, 12-point .docx
Topic is AutonomyShort papers should use double spacing, 12-point .docxTopic is AutonomyShort papers should use double spacing, 12-point .docx
Topic is AutonomyShort papers should use double spacing, 12-point .docx
 
Topic Genetic connection of hypertension to cardiovascular disease .docx
Topic Genetic connection of hypertension to cardiovascular disease .docxTopic Genetic connection of hypertension to cardiovascular disease .docx
Topic Genetic connection of hypertension to cardiovascular disease .docx
 
topic Errors (medication or patient injury)in particular stra.docx
topic Errors (medication or patient injury)in particular stra.docxtopic Errors (medication or patient injury)in particular stra.docx
topic Errors (medication or patient injury)in particular stra.docx
 
Topic differences between folk guitar and classic guitar.Minimu.docx
Topic differences between folk guitar and classic guitar.Minimu.docxTopic differences between folk guitar and classic guitar.Minimu.docx
Topic differences between folk guitar and classic guitar.Minimu.docx
 
Topic Death Investigations. Review homicide investigation as de.docx
Topic Death Investigations. Review homicide investigation as de.docxTopic Death Investigations. Review homicide investigation as de.docx
Topic Death Investigations. Review homicide investigation as de.docx
 

Recently uploaded

C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptxC1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
mulvey2
 
The basics of sentences session 6pptx.pptx
The basics of sentences session 6pptx.pptxThe basics of sentences session 6pptx.pptx
The basics of sentences session 6pptx.pptx
heathfieldcps1
 
How to Create a More Engaging and Human Online Learning Experience
How to Create a More Engaging and Human Online Learning Experience How to Create a More Engaging and Human Online Learning Experience
How to Create a More Engaging and Human Online Learning Experience
Wahiba Chair Training & Consulting
 
Digital Artefact 1 - Tiny Home Environmental Design
Digital Artefact 1 - Tiny Home Environmental DesignDigital Artefact 1 - Tiny Home Environmental Design
Digital Artefact 1 - Tiny Home Environmental Design
amberjdewit93
 
The History of Stoke Newington Street Names
The History of Stoke Newington Street NamesThe History of Stoke Newington Street Names
The History of Stoke Newington Street Names
History of Stoke Newington
 
Pengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptxPengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptx
Fajar Baskoro
 
How to deliver Powerpoint Presentations.pptx
How to deliver Powerpoint  Presentations.pptxHow to deliver Powerpoint  Presentations.pptx
How to deliver Powerpoint Presentations.pptx
HajraNaeem15
 
Life upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for studentLife upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for student
NgcHiNguyn25
 
คำศัพท์ คำพื้นฐานการอ่าน ภาษาอังกฤษ ระดับชั้น ม.1
คำศัพท์ คำพื้นฐานการอ่าน ภาษาอังกฤษ ระดับชั้น ม.1คำศัพท์ คำพื้นฐานการอ่าน ภาษาอังกฤษ ระดับชั้น ม.1
คำศัพท์ คำพื้นฐานการอ่าน ภาษาอังกฤษ ระดับชั้น ม.1
สมใจ จันสุกสี
 
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
PECB
 
Cognitive Development Adolescence Psychology
Cognitive Development Adolescence PsychologyCognitive Development Adolescence Psychology
Cognitive Development Adolescence Psychology
paigestewart1632
 
clinical examination of hip joint (1).pdf
clinical examination of hip joint (1).pdfclinical examination of hip joint (1).pdf
clinical examination of hip joint (1).pdf
Priyankaranawat4
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
Nguyen Thanh Tu Collection
 
Your Skill Boost Masterclass: Strategies for Effective Upskilling
Your Skill Boost Masterclass: Strategies for Effective UpskillingYour Skill Boost Masterclass: Strategies for Effective Upskilling
Your Skill Boost Masterclass: Strategies for Effective Upskilling
Excellence Foundation for South Sudan
 
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
National Information Standards Organization (NISO)
 
RHEOLOGY Physical pharmaceutics-II notes for B.pharm 4th sem students
RHEOLOGY Physical pharmaceutics-II notes for B.pharm 4th sem studentsRHEOLOGY Physical pharmaceutics-II notes for B.pharm 4th sem students
RHEOLOGY Physical pharmaceutics-II notes for B.pharm 4th sem students
Himanshu Rai
 
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdfবাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
eBook.com.bd (প্রয়োজনীয় বাংলা বই)
 
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UPLAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
RAHUL
 
Liberal Approach to the Study of Indian Politics.pdf
Liberal Approach to the Study of Indian Politics.pdfLiberal Approach to the Study of Indian Politics.pdf
Liberal Approach to the Study of Indian Politics.pdf
WaniBasim
 
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdfANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
Priyankaranawat4
 

Recently uploaded (20)

C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptxC1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
 
The basics of sentences session 6pptx.pptx
The basics of sentences session 6pptx.pptxThe basics of sentences session 6pptx.pptx
The basics of sentences session 6pptx.pptx
 
How to Create a More Engaging and Human Online Learning Experience
How to Create a More Engaging and Human Online Learning Experience How to Create a More Engaging and Human Online Learning Experience
How to Create a More Engaging and Human Online Learning Experience
 
Digital Artefact 1 - Tiny Home Environmental Design
Digital Artefact 1 - Tiny Home Environmental DesignDigital Artefact 1 - Tiny Home Environmental Design
Digital Artefact 1 - Tiny Home Environmental Design
 
The History of Stoke Newington Street Names
The History of Stoke Newington Street NamesThe History of Stoke Newington Street Names
The History of Stoke Newington Street Names
 
Pengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptxPengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptx
 
How to deliver Powerpoint Presentations.pptx
How to deliver Powerpoint  Presentations.pptxHow to deliver Powerpoint  Presentations.pptx
How to deliver Powerpoint Presentations.pptx
 
Life upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for studentLife upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for student
 
คำศัพท์ คำพื้นฐานการอ่าน ภาษาอังกฤษ ระดับชั้น ม.1
คำศัพท์ คำพื้นฐานการอ่าน ภาษาอังกฤษ ระดับชั้น ม.1คำศัพท์ คำพื้นฐานการอ่าน ภาษาอังกฤษ ระดับชั้น ม.1
คำศัพท์ คำพื้นฐานการอ่าน ภาษาอังกฤษ ระดับชั้น ม.1
 
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
 
Cognitive Development Adolescence Psychology
Cognitive Development Adolescence PsychologyCognitive Development Adolescence Psychology
Cognitive Development Adolescence Psychology
 
clinical examination of hip joint (1).pdf
clinical examination of hip joint (1).pdfclinical examination of hip joint (1).pdf
clinical examination of hip joint (1).pdf
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
 
Your Skill Boost Masterclass: Strategies for Effective Upskilling
Your Skill Boost Masterclass: Strategies for Effective UpskillingYour Skill Boost Masterclass: Strategies for Effective Upskilling
Your Skill Boost Masterclass: Strategies for Effective Upskilling
 
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
 
RHEOLOGY Physical pharmaceutics-II notes for B.pharm 4th sem students
RHEOLOGY Physical pharmaceutics-II notes for B.pharm 4th sem studentsRHEOLOGY Physical pharmaceutics-II notes for B.pharm 4th sem students
RHEOLOGY Physical pharmaceutics-II notes for B.pharm 4th sem students
 
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdfবাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
 
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UPLAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
 
Liberal Approach to the Study of Indian Politics.pdf
Liberal Approach to the Study of Indian Politics.pdfLiberal Approach to the Study of Indian Politics.pdf
Liberal Approach to the Study of Indian Politics.pdf
 
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdfANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
 

BUS 225 Air Transporstation SupEMPLOYEE IDDATE OF HIREDEPARTMENTPE

  • 1. BUS 225 Air Transporstation SupEMPLOYEE IDDATE OF HIREDEPARTMENTPERFORMANCE SCORE (1- 4)MANAGER COMMENTARYSALARYBONUSOVERTIME4856078/6/87Acc ount Planning1$48,200.00$2,000.00$0.003937868/7/87Account Planning3$48,200.00$2,000.00$0.003552328/8/87Account Planning3$48,200.00$2,000.00$0.004204448/9/87Account Planning3$48,200.00$2,000.00$0.003805538/10/87Account Planning3Essential Employee$48,200.00$2,000.00$0.004271518/11/87Account Planning3$48,200.00$2,000.00$0.005479268/12/87Account Planning3$48,200.00$2,000.00$0.004171938/13/87Account Planning3$48,200.00$2,000.00$0.005090638/14/87Account Service1Needs motivation. Issues with manager.$42,000.00$2,000.00$0.004353598/15/87Account Service2$42,000.00$2,000.00$0.005121848/16/87Account Service2$45,000.00$2,000.00$0.004383898/17/87Account Service3$42,000.00$2,000.00$0.004431228/15/97Account Service3$42,000.00$2,000.00$0.003975618/16/97Account Service3$42,000.00$2,000.00$0.005550488/17/97Account Service3$42,000.00$2,000.00$0.004532718/18/97Account Service3$42,000.00$2,000.00$0.004646308/19/97Account Service3$45,000.00$2,000.00$0.005197608/20/97Account Service3$45,000.00$2,000.00$0.004429698/21/97Account Service3$45,000.00$2,000.00$0.005802058/22/97Finance & Accounts1$57,000.00$2,000.00$0.004324668/23/97Finance & Accounts3$57,000.00$2,000.00$0.004623168/24/97Finance & Accounts3$57,000.00$2,000.00$0.004168598/25/97Finance & Accounts3$57,000.00$2,000.00$0.003285308/26/97HR & Facilities1$61,000.00$2,000.00$0.005802308/27/97HR & Facilities3$61,000.00$2,000.00$0.005579128/28/97HR & Facilities3$61,000.00$2,000.00$0.004703458/29/97HR & Facilities4$61,000.00$2,000.00$0.005060738/30/97IT3Essential Employee$75,000.00$2,000.00$5,000.004402658/31/97IT3$75,
  • 2. 000.00$2,000.00$5,000.004680699/1/97IT3$75,000.00$2,000.0 0$5,000.003749579/2/97IT4$75,000.00$2,000.00$5,000.005135 369/3/97Logistics3$62,000.00$2,000.00$0.004601439/7/87Logi stics3$62,000.00$2,000.00$0.005898329/8/87Logistics3Essentia l Employee$62,000.00$2,000.00$0.004238179/9/87Logistics4Abo ve performance.$62,000.00$2,000.00$0.00513 0769/10/87Managem ent2$370,834.00$0.00$0.003903629/11/87Management3$247,32 4.00$0.00$0.003787239/12/87Management3$237,385.00$0.00$0 .004444079/13/87Management4$245,048.00$0.00$0.003286989/ 14/87Manufacturing1Essential Employee$46,000.00$2,000.00$0.003648119/15/87Manufacturi ng2$42,000.00$2,000.00$0.004465769/16/87Manufacturing3$48 ,000.00$2,000.00$0.003746899/17/87Manufacturing3$48,000.0 0$2,000.00$0.005758669/18/87Manufacturing3$48,000.00$2,00 0.00$0.003364269/19/87Manufacturing3$48,000.00$2,000.00$0 .006048929/20/87Manufacturing3$48,000.00$2,000.00$0.00397 7259/21/87Manufacturing3Great job.$42,000.00$2,000.00$2,700.005644639/22/87Manufacturing 3$42,000.00$2,000.00$2,700.004241629/23/87Manufacturing3$ 42,000.00$2,000.00$2,700.003851389/24/87Manufacturing3$42 ,000.00$2,000.00$2,700.005027949/25/87Manufacturing3$42,0 00.00$2,000.00$0.005681309/26/87Manufacturing3Essential Employee$42,000.00$2,000.00$0.006055669/27/87Manufacturi ng3$46,000.00$2,000.00$0.003286679/28/87Manufacturing3$46 ,000.00$2,000.00$0.004675139/29/87Manufacturing3$46,000.0 0$2,000.00$0.004360009/30/87Manufacturing3$46,000.00$2,00 0.00$0.004548199/29/92Manufacturing3$46,000.00$2,000.00$0 .005459259/30/92Manufacturing4Never late. Hardworking employee.$48,000.00$2,000.00$0.0034015810/1/92Manufacturi ng4$42,000.00$2,000.00$2,700.0061298310/2/92Research3Tryi ng hard.$55,000.00$2,000.00$0.0045622110/3/92Research3$55,00 0.00$2,000.00$0.0045794910/4/92Research3$55,000.00$2,000. 00$0.0059286210/5/92Research3Essential
  • 3. Employee$55,000.00$2,000.00$0.0049208710/6/92Sales2$55,00 0.00$2,000.00$0.0035048810/7/92Sales2$77,000.00$2,000.00$0 .0049019610/8/92Sales3$55,000.00$2,000.00$1,100.005614131 0/9/92Sales3Team leader.$55,000.00$2,000.00$1,100.0038333210/10/92Sales3$55, 000.00$2,000.00$1,100.0032102710/11/92Sales3$55,000.00$2,0 00.00$0.0059875510/14/87Sales3$55,000.00$2,000.00$0.00326 81510/15/87Sales3$77,000.00$2,000.00$0.0048390810/16/87Sa les4Essential Employee$55,000.00$2,000.00$1,100.0037433110/17/87Web Development3$75,000.00$2,000.00$0.0057619010/18/87Web Development3$75,000.00$2,000.00$0.0053504810/19/87Web Development3$75,000.00$2,000.00$0.0047873310/20/87Web Development3$75,000.00$2,000.00$0.0051039510/21/87Web Development3$75,000.00$2,000.00$0.00 Project/OnlineStore/cart.php <?php // If the user clicked the add to cart button on the product page we can check for the form data if (isset($_POST['product_id'], $_POST['quantity']) && is_numeric($_POST['product_id']) && is_numeric($_POST['quantity'])) { // Set the post variables so we easily identify them, also make sure they are integer $product_id = (int)$_POST['product_id']; $quantity = (int)$_POST['quantity']; // Prepare the SQL statement, we basically are checking if the
  • 4. product exists in our databaser $stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?'); $stmt->execute([$_POST['product_id']]); // Fetch the product from the database and return the result as an Array $product = $stmt->fetch(PDO::FETCH_ASSOC); // Check if the product exists (array is not empty) if ($product && $quantity > 0) { // Product exists in database, now we can create/update the session variable for the cart if (isset($_SESSION['cart']) && is_array($_SESSION['cart'])) { if (array_key_exists($product_id, $_SESSION['cart'])) { // Product exists in cart so just update the quanity $_SESSION['cart'][$product_id] += $quantity; } else { // Product is not in cart so add it $_SESSION['cart'][$product_id] = $quantity; }
  • 5. } else { // There are no products in cart, this will add the first product to cart $_SESSION['cart'] = array($product_id => $quantity); } } // Prevent form resubmission... header('location: index.php?page=cart'); exit; } // Remove product from cart, check for the URL param "remove", this is the product id, make sure it's a number and check if it's in the cart if (isset($_GET['remove']) && is_numeric($_GET['remove']) && isset($_SESSION['cart']) && isset($_SESSION['cart'][$_GET['remove']])) { // Remove the product from the shopping cart unset($_SESSION['cart'][$_GET['remove']]); }
  • 6. // Update product quantities in cart if the user clicks the "Update" button on the shopping cart page if (isset($_POST['update']) && isset($_SESSION['cart'])) { // Loop through the post data so we can update the quantities for every product in cart foreach ($_POST as $k => $v) { if (strpos($k, 'quantity') !== false && is_numeric($v)) { $id = str_replace('quantity-', '', $k); $quantity = (int)$v; // Always do checks and validation if (is_numeric($id) && isset($_SESSION['cart'][$id]) && $quantity > 0) { // Update new quantity $_SESSION['cart'][$id] = $quantity; } }
  • 7. } // Prevent form resubmission... header('location: index.php?page=cart'); exit; } // Send the user to the place order page if they click the Place Order button, also the cart should not be empty if (isset($_POST['placeorder']) && isset($_SESSION['cart']) && !empty($_SESSION['cart'])) { header('Location: index.php?page=placeorder'); exit; } // Check the session variable for products in cart $products_in_cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : array(); $products = array();
  • 8. $subtotal = 0.00; // If there are products in cart if ($products_in_cart) { // There are products in the cart so we need to select those products from the database // Products in cart array to question mark string array, we need the SQL statement to include IN (?,?,?,...etc) $array_to_question_marks = implode(',', array_fill(0, count($products_in_cart), '?')); $stmt = $pdo->prepare('SELECT * FROM products WHERE id IN (' . $array_to_question_marks . ')'); // We only need the array keys, not the values, the keys are the id's of the products $stmt->execute(array_keys($products_in_cart)); // Fetch the products from the database and return the result as an Array $products = $stmt->fetchAll(PDO::FETCH_ASSOC); // Calculate the subtotal foreach ($products as $product) { $subtotal += (float)$product['price'] * (int)$products_in_cart[$product['id']];
  • 9. } } ?> <?=template_header('Cart')?> <div class="cart content-wrapper"> <h1>Shopping Cart</h1> <form action="index.php?page=cart" method="post"> <table> <thead> <tr> <td colspan="2">Product</td> <td>Price</td> <td>Quantity</td> <td>Total</td> </tr>
  • 10. </thead> <tbody> <?php if (empty($products)): ?> <tr> <td colspan="5" style="text-align:center;">You have no products added in your Shopping Cart</td> </tr> <?php else: ?> <?php foreach ($products as $product): ?> <tr> <td class="img"> <a href="index.php?page=product&id=<?=$product['id']?>"> <img src="imgs/<?=$product['img']?>" width="50" height="50" alt="<?=$product['name']?>"> </a> </td> <td> <a href="index.php?page=product&id=<?=$product['id']?>"><?=$p roduct['name']?></a>
  • 11. <br> <a href="index.php?page=cart&remove=<?=$product['id']?>" class="remove">Remove</a> </td> <td class="price">&dollar;<?=$product['price']?></td> <td class="quantity"> <input type="number" name="quantity- <?=$product['id']?>" value="<?=$products_in_cart[$product['id']]?>" min="1" max="<?=$product['quantity']?>" placeholder="Quantity" required> </td> <td class="price">&dollar;<?=$product['price'] * $products_in_cart[$product['id']]?></td> </tr> <?php endforeach; ?> <?php endif; ?> </tbody> </table> <div class="subtotal">
  • 12. <span class="text">Subtotal</span> <span class="price">&dollar;<?=$subtotal?></span> </div> <div class="buttons"> <input type="submit" value="Update" name="update"> <input type="submit" value="Place Order" name="placeorder"> </div> </form> </div> <?=template_footer()?> Project/OnlineStore/currency_sample_code.php <?php //in php.ini, uncomment extension=intl (remove ';' from its start) //stop then start apache $fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
  • 13. //to remove decimal points: //$fmt->setAttribute(NumberFormatter::FRACTION_DIGITS, 0); echo $fmt->formatCurrency(100, 'GBP'); ?> Project/OnlineStore/functions.php <?php function pdo_connect_mysql() { // Update the details below with your MySQL details $DATABASE_HOST = 'localhost'; $DATABASE_USER = 'root'; $DATABASE_PASS = ''; $DATABASE_NAME = 'storedb'; try { return new PDO('mysql:host=' . $DATABASE_HOST .
  • 14. ';dbname=' . $DATABASE_NAME . ';charset=utf8', $DATABASE_USER, $DATABASE_PASS); } catch (PDOException $exception) { // If there is an error with the connection, stop the script and display the error. exit('Failed to connect to database!'); } } // Template header, feel free to customize this function template_header($title) { // Get the amount of items in the shopping cart, this will be displayed in the header. $num_items_in_cart = isset($_SESSION['cart']) ? count($_SESSION['cart']) : 0; $countries = ['BHD'=>'Bahrain', 'BRL'=>'Brazil', 'CAD'=>'Canada', 'CNY'=>'China', 'EUR'=>'Euro', 'INR'=>'India',
  • 15. 'JPY'=>'Japan', 'GBP'=>'United Kingdom', 'USD'=>'United States']; $options = ''; foreach($countries as $currency=>$country) { //Check the Cookie here to make the default country, keep US as default if no cookie if($currency=='USD') $options = $options.'<option value='.$currency.' selected>'.$country.'</option>'; else $options = $options.'<option value='.$currency.'>'.$country.'</option>'; } echo <<<EOT <!DOCTYPE html> <html> <head>
  • 16. <meta charset="utf-8"> <title>$title</title> <link href="style.css" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"> </head> <body> <header> <div class="content-wrapper"> <h1>Online Shopping Store</h1> <nav> <a href="index.php">Home</a> <a href="index.php?page=products">Products</a> <select name="countries" id="countries"> $options </select> </nav>
  • 17. <div class="link-icons"> <a href="index.php?page=cart"> <i class="fas fa-shopping- cart"></i> <span>$num_items_in_cart</span> </a> </div> </div> </header> <main> EOT; } // Template footer function template_footer() { $year = date('Y'); echo <<<EOT </main> <footer>
  • 18. <div class="content-wrapper"> <p>&copy; $year, Online Shopping Store</p> </div> </footer> <script src="script.js"></script> </body> </html> EOT; } ?> Project/OnlineStore/home.php <?php // Get the 4 most recently added products $stmt = $pdo->prepare('SELECT * FROM products ORDER BY date_added DESC LIMIT 4'); $stmt->execute(); $recently_added_products = $stmt- >fetchAll(PDO::FETCH_ASSOC); ?>
  • 19. <?=template_header('Home')?> <div class="featured"> <h2>Gadgets</h2> <p>Essential gadgets for everyday use</p> </div> <div class="recentlyadded content-wrapper"> <h2>Recently Added Products</h2> <div class="products"> <?php foreach ($recently_added_products as $product): ?> <a href="index.php?page=product&id=<?=$product['id']?>" class="product"> <img src="imgs/<?=$product['img']?>" width="200" height="200" alt="<?=$product['name']?>"> <span class="name"><?=$product['name']?></span> <span class="price"> &dollar;<?=$product['price']?> <?php if ($product['rrp'] > 0): ?>
  • 20. <span class="rrp">&dollar;<?=$product['rrp']?></span> <?php endif; ?> </span> </a> <?php endforeach; ?> </div> </div> <?=template_footer()?> Project/OnlineStore/imgs/camera.jpg Project/OnlineStore/imgs/featured-image.jpg Project/OnlineStore/imgs/headphones.jpg Project/OnlineStore/imgs/wallet.jpg Project/OnlineStore/imgs/watch.jpg Project/OnlineStore/index.php <?php session_start(); // Include functions and connect to the database using PDO MySQL
  • 21. include 'functions.php'; $pdo = pdo_connect_mysql(); // Page is set to home (home.php) by default, so when the visitor visits that will be the page they see. $page = isset($_GET['page']) && file_exists($_GET['page'] . '.php') ? $_GET['page'] : 'home'; // Include and show the requested page include $page . '.php'; ?> Project/OnlineStore/placeorder.php <?=template_header('Place Order')?> <div class="placeorder content-wrapper"> <h1>Your Order Has Been Placed</h1> <p>Thank you for ordering with us, we'll contact you by email with your order details.</p> </div> <?=template_footer()?>
  • 22. Project/OnlineStore/product.php <?php // Check to make sure the id parameter is specified in the URL if (isset($_GET['id'])) { // Prepare statement and execute, prevents SQL injection $stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?'); $stmt->execute([$_GET['id']]); // Fetch the product from the database and return the result as an Array $product = $stmt->fetch(PDO::FETCH_ASSOC); // Check if the product exists (array is not empty) if (!$product) { // Simple error to display if the id for the product doesn't exists (array is empty) exit('Product does not exist!'); } } else { // Simple error to display if the id wasn't specified exit('Product does not exist!');
  • 23. } ?> <?=template_header('Product')?> <div class="product content-wrapper"> <img src="imgs/<?=$product['img']?>" width="500" height="500" alt="<?=$product['name']?>"> <div> <h1 class="name"><?=$product['name']?></h1> <span class="price"> &dollar;<?=$product['price']?> <?php if ($product['rrp'] > 0): ?> <span class="rrp">&dollar;<?=$product['rrp']?></span> <?php endif; ?> </span> <form action="index.php?page=cart" method="post">
  • 24. <input type="number" name="quantity" value="1" min="1" max="<?=$product['quantity']?>" placeholder="Quantity" required> <input type="hidden" name="product_id" value="<?=$product['id']?>"> <input type="submit" value="Add To Cart"> </form> <div class="description"> <?=$product['desc']?> </div> </div> </div> <?=template_footer()?> Project/OnlineStore/products.php <?php // The amounts of products to show on each page $num_products_on_each_page = 4; // The current page, in the URL this will appear as index.php?page=products&p=1, index.php?page=products&p=2, etc...
  • 25. $current_page = isset($_GET['p']) && is_numeric($_GET['p']) ? (int)$_GET['p'] : 1; // Select products ordered by the date added $stmt = $pdo->prepare('SELECT * FROM products ORDER BY date_added DESC LIMIT ?,?'); // bindValue will allow us to use integer in the SQL statement, we need to use for LIMIT $stmt->bindValue(1, ($current_page - 1) * $num_products_on_each_page, PDO::PARAM_INT); $stmt->bindValue(2, $num_products_on_each_page, PDO::PARAM_INT); $stmt->execute(); // Fetch the products from the database and return the result as an Array $products = $stmt->fetchAll(PDO::FETCH_ASSOC); // Get the total number of products $total_products = $pdo->query('SELECT * FROM products')- >rowCount(); ?>
  • 26. <?=template_header('Products')?> <div class="products content-wrapper"> <h1>Products</h1> <p><?=$total_products?> Products</p> <div class="products-wrapper"> <?php foreach ($products as $product): ?> <a href="index.php?page=product&id=<?=$product['id']?>" class="product"> <img src="imgs/<?=$product['img']?>" width="200" height="200" alt="<?=$product['name']?>"> <span class="name"><?=$product['name']?></span> <span class="price"> &dollar;<?=$product['price']?> <?php if ($product['rrp'] > 0): ?> <span class="rrp">&dollar;<?=$product['rrp']?></span> <?php endif; ?>
  • 27. </span> </a> <?php endforeach; ?> </div> <div class="buttons"> <?php if ($current_page > 1): ?> <a href="index.php?page=products&p=<?=$current_page- 1?>">Prev</a> <?php endif; ?> <?php if ($total_products > ($current_page * $num_products_on_each_page) - $num_products_on_each_page + count($products)): ?> <a href="index.php?page=products&p=<?=$current_page+1?>">Ne xt</a> <?php endif; ?> </div> </div> <?=template_footer()?>
  • 28. Project/OnlineStore/style.css * { box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen, ubuntu, cantarell, "fira sans", "droid sans", "helvetica neue", Arial, sans-serif; font-size: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } html { height: 100%; } body { position: relative; min-height: 100%; color: #555555; background-color: #FFFFFF;
  • 29. margin: 0; padding-bottom: 100px; /* Same height as footer */ } h1, h2, h3, h4, h5 { color: #394352; } .content-wrapper { width: 1050px; margin: 0 auto; } header { border-bottom: 1px solid #EEEEEE; } header .content-wrapper { display: flex; } header h1 { display: flex;
  • 30. flex-grow: 1; flex-basis: 0; font-size: 20px; margin: 0; padding: 24px 0; } header nav { display: flex; flex-grow: 1; flex-basis: 0; justify-content: center; align-items: center; } header nav a { text-decoration: none; color: #555555; padding: 10px 10px; margin: 0 10px;
  • 31. } header nav a:hover { border-bottom: 1px solid #aaa; } header .link-icons { display: flex; flex-grow: 1; flex-basis: 0; justify-content: flex-end; align-items: center; position: relative; } header .link-icons a { text-decoration: none; color: #394352; padding: 0 10px; } header .link-icons a:hover {
  • 32. color: #4e5c70; } header .link-icons a i { font-size: 18px; } header .link-icons a span { display: inline-block; text-align: center; background-color: #63748e; border-radius: 50%; color: #FFFFFF; font-size: 12px; line-height: 16px; width: 16px; height: 16px; font-weight: bold; position: absolute; top: 22px;
  • 33. right: 0; } main .featured { display: flex; flex-direction: column; background-image: url(imgs/featured-image.jpg); background-repeat: no-repeat; background-size: cover; height: 500px; align-items: center; justify-content: center; text-align: center; } main .featured h2 { display: inline-block; margin: 0; width: 1050px; font-family: Rockwell, Courier Bold, Courier, Georgia,
  • 34. Times, Times New Roman, serif; font-size: 68px; color: #FFFFFF; padding-bottom: 10px; } main .featured p { display: inline-block; margin: 0; width: 1050px; font-size: 24px; color: #FFFFFF; } main .recentlyadded h2 { display: block; font-weight: normal; margin: 0; padding: 40px 0; font-size: 24px;
  • 35. text-align: center; width: 100%; border-bottom: 1px solid #EEEEEE; } main .recentlyadded .products, main .products .products- wrapper { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; padding: 40px 0 0 0; } main .recentlyadded .products .product, main .products .products-wrapper .product { display: block; overflow: hidden; text-decoration: none; width: 25%; padding-bottom: 60px;
  • 36. } main .recentlyadded .products .product img, main .products .products-wrapper .product img { transform: scale(1); transition: transform 1s; } main .recentlyadded .products .product .name, main .products .products-wrapper .product .name { display: block; color: #555555; padding: 20px 0 2px 0; } main .recentlyadded .products .product .price, main .products .products-wrapper .product .price { display: block; color: #999999; } main .recentlyadded .products .product .rrp, main .products .products-wrapper .product .rrp { color: #BBBBBB;
  • 37. text-decoration: line-through; } main .recentlyadded .products .product:hover img, main .products .products-wrapper .product:hover img { transform: scale(1.05); transition: transform 1s; } main .recentlyadded .products .product:hover .name, main .products .products-wrapper .product:hover .name { text-decoration: underline; } main > .product { display: flex; padding: 40px 0; } main > .product > div { padding-left: 15px; } main > .product h1 {
  • 38. font-size: 34px; font-weight: normal; margin: 0; padding: 20px 0 10px 0; } main > .product .price { display: block; font-size: 22px; color: #999999; } main > .product .rrp { color: #BBBBBB; text-decoration: line-through; font-size: 22px; padding-left: 5px; } main > .product form { display: flex;
  • 39. flex-flow: column; margin: 40px 0; } main > .product form input[type="number"] { width: 400px; padding: 10px; margin-bottom: 15px; border: 1px solid #ccc; color: #555555; border-radius: 5px; } main > .product form input[type="submit"] { background: #4e5c70; border: 0; color: #FFFFFF; width: 400px; padding: 12px 0; text-transform: uppercase;
  • 40. font-size: 14px; font-weight: bold; border-radius: 5px; cursor: pointer; } main > .product form input[type="submit"]:hover { background: #434f61; } main > .products h1 { display: block; font-weight: normal; margin: 0; padding: 40px 0; font-size: 24px; text-align: center; width: 100%; } main > .products .buttons {
  • 41. text-align: right; padding-bottom: 40px; } main > .products .buttons a { display: inline-block; text-decoration: none; margin-left: 5px; padding: 12px 20px; border: 0; background: #4e5c70; color: #FFFFFF; font-size: 14px; font-weight: bold; border-radius: 5px; } main > .products .buttons a:hover { background: #434f61; }
  • 42. main .cart h1 { display: block; font-weight: normal; margin: 0; padding: 40px 0; font-size: 24px; text-align: center; width: 100%; } main .cart table { width: 100%; } main .cart table thead td { padding: 30px 0; border-bottom: 1px solid #EEEEEE; } main .cart table thead td:last-child { text-align: right;
  • 43. } main .cart table tbody td { padding: 20px 0; border-bottom: 1px solid #EEEEEE; } main .cart table tbody td:last-child { text-align: right; } main .cart table .img { width: 80px; } main .cart table .remove { color: #777777; font-size: 12px; padding-top: 3px; } main .cart table .remove:hover { text-decoration: underline;
  • 44. } main .cart table .price { color: #999999; } main .cart table a { text-decoration: none; color: #555555; } main .cart table input[type="number"] { width: 68px; padding: 10px; border: 1px solid #ccc; color: #555555; border-radius: 5px; } main .cart .subtotal { text-align: right; padding: 40px 0;
  • 45. } main .cart .subtotal .text { padding-right: 40px; font-size: 18px; } main .cart .subtotal .price { font-size: 18px; color: #999999; } main .cart .buttons { text-align: right; padding-bottom: 40px; } main .cart .buttons input[type="submit"] { margin-left: 5px; padding: 12px 20px; border: 0; background: #4e5c70;
  • 46. color: #FFFFFF; font-size: 14px; font-weight: bold; cursor: pointer; border-radius: 5px; } main .cart .buttons input[type="submit"]:hover { background: #434f61; } main .placeorder h1 { display: block; font-weight: normal; margin: 0; padding: 40px 0; font-size: 24px; text-align: center; width: 100%; }
  • 47. main .placeorder p { text-align: center; } footer { position: absolute; bottom: 0; border-top: 1px solid #EEEEEE; padding: 20px 0; width: 100%; } Project/SQL/storedb.sql -- phpMyAdmin SQL Dump -- version 5.1.1 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Mar 18, 2022 at 09:02 AM -- Server version: 10.4.21-MariaDB -- PHP Version: 8.0.12 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET
  • 48. @[email protected]@CHARACTER_SET_CLIENT */; /*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; /*!40101 SET @[email protected]@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `storedb` -- -- -------------------------------------------------------- -- -- Table structure for table `products` -- CREATE TABLE `products` ( `id` int(11) NOT NULL, `name` varchar(200) NOT NULL, `desc` text NOT NULL, `price` decimal(7,2) NOT NULL, `rrp` decimal(7,2) NOT NULL DEFAULT 0.00, `quantity` int(11) NOT NULL, `img` text NOT NULL, `date_added` datetime NOT NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `products` -- INSERT INTO `products` (`id`, `name`, `desc`, `price`, `rrp`, `quantity`, `img`, `date_added`) VALUES (1, 'Smart Watch', '<p>Unique watch made with stainless steel,
  • 49. ideal for those that prefer interative watches.</p>rn<h3>Features</h3>rn<ul>rn<li>Powered by Android with built-in apps.</li>rn<li>Adjustable to fit most.</li>rn<li>Long battery life, continuous wear for up to 2 days.</li>rn<li>Lightweight design, comfort on your wrist.</li>rn</ul>', '29.99', '0.00', 10, 'watch.jpg', '2022-02-01 17:55:22'), (2, 'Wallet', '', '14.99', '19.99', 34, 'wallet.jpg', '2022-02-13 18:52:49'), (3, 'Headphones', '', '19.99', '0.00', 23, 'headphones.jpg', '2022- 03-01 18:47:56'), (4, 'Digital Camera', '', '69.99', '0.00', 7, 'camera.jpg', '2022-03- 01 17:42:04'); -- -------------------------------------------------------- -- -- Table structure for table `users` -- CREATE TABLE `users` ( `id` int(11) NOT NULL, `uname` tinytext NOT NULL, `email` tinytext NOT NULL, `password` longtext NOT NULL, `salt` varchar(64) NOT NULL, `reg_date` timestamp NOT NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `users` -- INSERT INTO `users` (`id`, `uname`, `email`, `password`, `salt`, `reg_date`) VALUES
  • 50. (1, 'user1', '[email protected]', '123456', '', '2022-03-02 04:42:46'); -- -- Indexes for dumped tables -- -- -- Indexes for table `products` -- ALTER TABLE `products` ADD PRIMARY KEY (`id`); -- -- Indexes for table `users` -- ALTER TABLE `users` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `products` -- ALTER TABLE `products` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; -- -- AUTO_INCREMENT for table `users` -- ALTER TABLE `users` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=36;
  • 51. COMMIT; /*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; /*!40101 SET [email protected]_COLLATION_CONNECTION */; ITIS345/ITIS477 Group Project Second Semester 2021-2022 University of Bahrain College of Information Technology Department of Information Systems ITIS345/ITIS477 Web Design and Development II Course Project Developing a Complete PHP Web Application Online Shopping Store Project Deadline: 12 May 2022 Group number Student ID Student Name
  • 52. Mark Distribution : Assessment Maximum Mark scored mark Report Total: 12 % Report structure, layout, language, and format. 2 % Web site users and user Session 2 % Security (MD5 and SQL Injection Protection) 2 % Country Currency and Exchange Rates (Web Service) 2 % Country Preference in the Cookies
  • 53. 2 % Appendix: source code 2 % Presentation 6 % Peer Review 2 % Total 20 % Description The decision of the web development path has become a challenge and requires adopting the best practices and studying available roadmaps to achieve the expected outcomes. “PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML…PHP is mainly focused on server-side scripting” (PHP Introduction, n.d.) It is widely used, flexible, and provides multiple integration opportunities with different platforms and technologies. Developing a complete web application including front-end and back-end technologies
  • 54. ITIS345/ITIS477 Group Project Second Semester 2021-2022 as one team is one of this course learning outcomes. Accordingly, solving specific business requirements - like having an online shopping gateway for a store - through building a php-based web application would put you on the right track towards becoming a professional developer and achieving this course outcomes. Task Group members are required to configure the provided project base files and the MySQL database. You can refer to the Readme file for some guidelines. “Online Shopping Store” is a php web-based application that will allow website visitors to browse for products, add products to cart, and place orders. Your objective is to enhance the system to provide the necessary features to enable the users to use it seamlessly and intuitively. Business Requirements A store needs to provide a web-based application for public so
  • 55. they can purchase goods and products online without having to go to the store in-person. Users should be able to browse goods and products and add them to their cart without having to register, but they should register before they can proceed with placing orders. Web site users should be able to select the required country, so all prices get displayed in the selected country currency with proper exchange rate conversion, assuming having all prices stored in the database in US dollar. Exchange rates should be pulled from accurate sources in the web and should reflect current rates. Users can have the ability to store their country preference. The system should be secure, and users’ information should be securely stored in the database. Online Shopping Store Application - Web site users and user session: Web site users should be able to browse products and add them to their cart, even without signing-in. But once satisfied with their items, they should be asked to sign-in or register before they can proceed with placing the order. The home page should have a “Sign-in” or “Sign-out” links so users can sign-in/sign-
  • 56. out if they want to. Sign-in page should allow users to sign-in, and new users should be able to Register if they are not, so they are added to the store database. Use Session State to manage individual user sessions, and make sure to kill the session upon user sign-out. - Security: “The MD5 Message-Digest Algorithm: "The MD5 message- digest algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input.” (PHP md5() Function, n.d.) Use md5 function - with salting - to store users’ passwords securely in the database. Moreover, the system should be protected from SQL Injection. Make sure to implement these techniques to all applicable database operations. ITIS345/ITIS477 Group Project Second Semester 2021-2022 Country Currency and Exchange Rates: Users should be able to select the preferred country from a drop-down list of countries. Then based on the selected country currency, the
  • 57. exchange rate with respect to US dollar should be taken from the result of the following web service: https://open.er-api.com/v6/latest/USD The above web service is an open API and can be used without an API key. Once you get the rate, replace all prices on the page with the new values calculated based on the exchange rate. Use PHP NumberFormatter class to format the prices with the selected currency using formatCurrency method. You can refer to the documentation on: https://www.php.net/manual/en/numberformatter.formatcurrency .php Configuration and Sample code is also available in the Readme file. - Country Preference in the Cookies: Use cookies to store user preference of the country for currency calculations. Then the system should retrieve this information to change the prices in the web site whenever the user visits the site again. Groupwork Progress and Distribution • Each group should have 4 members that work together. Members should exchange communication
  • 58. details. • Group members should work together and set a semi-weekly (twice a week) meeting to discuss their work and assignments. More time will be required to assemble and finalize the report. • A shared folder between the members should be created for project-related work. • While the work will be distributed amongst the group members, all should contribute to every aspect of the project. “Slacking” is not tolerable. Report The report should be original, well written, and neatly formatted. It should cite various resources in addition to the official. The report should use paraphrasing with proper referencing using a common referencing standard such as ACM, IEEE, or APA. The report expected length is 2500 words excluding references and source code. The report content may vary. For a general guide have a look at the University of Leicester Writing Report Study Guide1. 1 https://libguides.reading.ac.uk/reports/structuring
  • 59. https://open.er-api.com/v6/latest/USD https://www.php.net/manual/en/numberformatter.formatcurrency .php https://libguides.reading.ac.uk/reports/structuring ITIS345/ITIS477 Group Project Second Semester 2021-2022 The report should include: • Cover page stating the members, course, and section, topic as well as the group number. • The report must be evenly formatted and include page numbers. • Any figures, tables, or charts must be numbered. • References most be formatted properly. Report content should cover the following sections with explanation and implementation method, you need to illustrate important snippets of your “php source code” for each section clearly: • Web site users and user Session • Security (MD5 and SQL Injection Protection) • Country Currency and Exchange Rates (Web Service) • Country Preference in the Cookies • Appendix: Source Code
  • 60. All reports will be subjected to plagiarism detection tools to ensure the authenticity of the content. Presentation In addition to the report, a max of 15-minute presentation summary should be recorded and submitted with the project. It should highlight the important points and findings. The presentation aids can be slides, code snippets, and diagrams only (no videos from other sources). You must record a walkthrough of the system, each group member must present, and the full presentation should be edited and submitted as one video. Some of the video presentation tools: • Open Broadcaster Software (Freeware) https://obsproject.com/ OR • Debut Video Capture and Screen Recorder Software (Free Trial / full version is around 13 BD): https://www.nchsoftware.com/capture/index.html Deadlines & Deliverables • Report o Upload soft copy (Word and Adobe PDF) (Upload link will be
  • 61. provided) • Recorded Presentation (including System Walkthrough): o Upload video file (Instructions will be provided) • Peer Reviews: o Each student should review and rate two of colleagues’ presentations via an online form. (Instructions will be provided) https://obsproject.com/ https://www.nchsoftware.com/capture/index.html ITIS345/ITIS477 Group Project Second Semester 2021-2022 Assessment Criteria and Marking Scheme Marks Category Marked Items Description 12 Report • Report content and structure: o Web site users and user Session o Security (MD5 and SQL Injection Protection) o Country Currency and Exchange Rates (Web Services) o Country Preference in the Cookies o Appendix: source code
  • 62. • Report layout, language, and format 6 Presentation Video (including System Walkthrough) • Presentation content • Presentation flow and language • System Walkthrough 2 Peer Ratings (each student) • 2 peer ratings Bibliography PHP Introduction. (n.d.). Retrieved from php: https://www.php.net/ PHP md5() Function. (n.d.). Retrieved from w3schools: https://www.w3schools.com/php/func_string_md5.asp