Skip to content

ICT-Berufsbildung/rm2012

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Regionalmeisterschaft IIIII0III00</title>
		<meta name="author" content="Fabian Vogler">

 		<script src="readme/javascripts/html5.js"></script>
 		<link rel="stylesheet" media="screen" href="readme/stylesheets/baseline.compress.css">
 		<link rel="stylesheet" media="screen" href="readme/stylesheets/screen.css">
	</head>

	<body class="page-grid">
	    <div id="white"></div>
		<div id="page">
			<div class="full layout-grid">
				<header class="column width4">
    				<div class="column unitx1 first">
    					<img src="readme/images/logo.png" width="107" height="90" alt="SwissSkills" />
    				</div>
    				<div class="column unitx3">
    					<h3>Regionalmeisterschaft IIIII0III00</h3>
    				</div>
    				<div class="column unitx4 skill">
    					<h3>Application Development</h3>
    				</div>
				</header>
				<section class="column width2 first">
				    <div class="column width2 first">
    				    <p>This document describes the tasks for the Regionalmeisterschaft 2012 in Application Development. You have 2 hours 30 minutes to complete as many tasks as possible without the use of the Internet or any other form of communication. Each task has only a short description, you’re expected to apply your knowledge and experience to implement your own solutions.</p>
    					<p>The project is a web shop for the region near Eiger, Mönch &amp; Jungfrau. Customers can browse on the website through the categories to different products. The products can be added to a cart and ordered in the checkout.</p>
    					<p>Parts of the web shop are not finished yet and need to be implemented by you. You are free to use and extend existing parts of the project or implement your own.</p>
    				</div>
    				<div class="column width1 first">
    					<h4>Delivery Instructions</h4>
    					<p>At the end create a ZIP file named <em>RM2012_Surname_Prename.zip</em> of the <em>webshop/</em> folder and copy it to the location given to you by your instructor.</p>
						<h4>Rating Criteria</h4>
						<p>Each task gets rated by the implementation of the required functionality. In addition the following criteria apply to all tasks and must match your solution:</p>
						<p>All code needs to be nicely formatted, indented and commented where needed. PHP functions have to be documented inline (except getter and setter). The generated output is needed to comply to the HTML5 specification. SQL queries have to be protected against injection. No errors must be issued with the PHP error reporting level set to <var>E_NOTICE</var>. Database access, input handling and output generation have to be  separated. The web shop must practice good usability principles.</p>
    					<h4>Requirements</h4>
    					<p>The following software and references are needed to run this project. Please make sure you have all requirements before beginning.</p>
    					<ul>
    					    <li>Apache 2.2</li>
    					    <li>MySQL 5.5</li>
    					    <li>PHP 5.3</li>
    					    <li>phpMyAdmin 3.3</li>
    					    <li>Notepad++ 5.9</li>
    					    <li>or Sublime Text 2 Beta</li>
    					    <li>Mozilla Firefox 9.0</li>
    					    <li>with Firebug 1.9</li>
    					    <li>or Google Chrome 16</li>
    					</ul>
    					<p>Version 1.2</p>
    				</div>
    				<div class="column width1">
				    	<h4>Project Layout</h4>
				    	<p>Study the following project layout to get an overview of the most important folders and files. Notice the separation of controllers, models and views.</p>
				    	<div class="column width1 first">
				    		<ul>
				    		    <li>webshop/ - PHP Controllers
				    		    <ul>
				    		    <li>webshop.sql - DB Setup</li>
				    		    <li>
				    		        includes/
				    		        <ul>
				    		            <li>database.php - DB Access</li>
				    		            <li>webshop.php - PHP Models</li>
				    		            <li>session.php - Session init</li>
				    		        </ul>
				    		    </li>
				    		    <li>views/ - PHP Views</li>
				    		    <li>
				    		        media/
				    		        <ul>
				    		            <li>images/ - Images</li>
				    				    <li>javascripts/ - JavaScripts</li>
				    				    <li>stylesheets/ - CSS</li>
				    				    <li>bootstrap/ - Layout helper</li>
				    				</ul>
				    		    </li>
				    		    </ul>
				    		    </li>
				    		</ul>
				    	</div>
				    	<h4>Manuals</h4>
				    	<p>These manuals are available offline and can be used by you:</p>
				    	<ul>
				    		<li><a href="docs/php_manual.chm">PHP Manual</a></li>
				    		<li><a href="docs/mysql_manual.chm">MySQL Manual</a></li>
				    	    <li><a href="docs/selfhtml.chm">SELFHTML</a></li>
				    	    <li><a href="docs/jqapi/index.html">JQuery</a></li>
				    	    <li><a href="webshop/media/bootstrap/docs/index.html">Bootstrap</a></li>
				    	</ul>
    				</div>
				</section>
				<section class="column width2 tasks">
    				<div class="column unitx1 first">
    				    <p>&nbsp;</p>
    				</div>
				    <div class="column unitx3">
				        <p>Before starting work you have to provide your personal information inside the file <em>webshop/includes/competitor.php</em>. It’s then recommended to explore the <a href="webshop/">web shop</a> first. Add some products into the cart and visit the checkout to understand its functionality.</p>
				    </div>
					<div class="column unitx1 first">
					    <h4>Task I: Random Product</h4>
					    <p style="text-align: right;">ca. 30 min</p>
					</div>
					<div class="column unitx3">
						<p>The product (Skies) displayed on the current <a href="webshop/">home page</a> is statically hardcoded in the template (views/home.php).</p>
						<p>Your task, should you decide to accept it, is to display a new random product after each page reload on the home page. All product information needs to be fetched from the database. The product image and the product title have to link to the detail page of the product.</p>
					</div>
					<div class="column unitx1 first">
					    <h4>Task I0: Order Tables</h4>
					    <p style="text-align: right;">ca. 30 min</p>
					</div>
					<div class="column unitx3">
						<p>Please study the database tables carefully. At the moment there are no tables to store orders from the customer.</p>
						<p>Your task, should you decide to accept it, is to create two new tables <em>order</em> and <em>order_product</em> to store orders in the database and add them to the file webshop.sql. You are required to use foreign key constraints to ensure data integrity of all tables created by you.</p>
						<p>An order consists of a unique identification and a creation date. In addition they contain the prename, the surname, the address, the zip code, the city, the phone number and the email address of the customer. Each order can have multiple order items. An order item is always linked to one product and a requested quantity.</p>
						<p>Keep in mind that product prices and names need to be changed in the future without having any side effects on the existing orders. Add the missing fields to the appropriate tables.</p>
					</div>
					<div class="column unitx1 first">
					    <h4>Task II: Checkout</h4>
					    <p style="text-align: right;">ca. 60 min</p>
					</div>
					<div class="column unitx3">
						<p>The current <a href="webshop/checkout.php">checkout</a> displays the form but does not have any functionality to save the order.</p>
						<p>Your task should you decide to accept it, is to implement the PHP code in the file <em>create.php</em> to save the orders to the database tables created in Task I0. Before creating an order, all values have to be validated. All fields are required, the email address has to contain @ and the phone numbers must match this regular expression:</p>
					    <p><code>^([0-9\(\)\/\+ \-]*)$</code></p>
					    <p>In case of a validation error inform the customer and display the checkout again. Redirect to <em>success.php</em> and clear the cart if the order has been saved.</p>
				    </div>
				    <div class="column unitx1 first">
				        <h4>Task I00: Ajax Cart</h4>
				        <p style="text-align: right;">ca. 30 min</p>
				    </div>
				    <div class="column unitx3">
						<p>Right now the only way of removing a product from the <a href="webshop/cart.php">cart</a> is to set its quantity to zero and updating the cart.</p>
						<p>Your task should you decide to accept it, is to add a button next to the quantity which removes the product from the cart with Ajax. After a successful Ajax response the product has to be removed from the cart table with JavaScript and the total has to be updated. There is no page reload allowed during this operation.</p>
					</div>
					<div class="column unitx1 first">
						<h4>Task I0I: Wish List (Bonus)</h4>
						<p style="text-align: right;">ca. 45 min</p>
					</div>
					<div class="column unitx3">
						<p>This bonus task has no existing functionality and includes different skills (HTML, JavaScript and PHP).</p>
						<p>Your task, should you decide to accept it, is to implement a wish list for products. The customer can add a product on its detail page to the wish list. After a click on a button an Ajax call is made to save the product in the PHP session. A link in the site header leads to a separate wish list page where all products from the wish list are displayed. The customer can also remove a product from the wish list.</p>
					</div>
				</section>
			</div>
		</div>
	</body>
</html>