Файл: Разработка сайта книжного интернет-магазина Гермес.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 865

Скачиваний: 24

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рисунок 2.11 – Пример найденных книг по категории

Рисунок 2.12 – Навигация по жанрам

3 РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ

3.1 Статические страницы

Статических страниц 2:

- Регистрация;

- Главная страница.

Так же на каждой странице есть шапка и подвал, в которых находятся ссылки на все страницы сайта.

Логотип содержит изображение с названием сайта - «Hermes». Панель навигации в свою очередь содержит табы с ссылками на страницы. Блок навигации, логотип и футер сохраняется, изменяется только блок контента.

Так выглядит партиал для шапки сайта, которая присутствует на всех страницах:

Листинг 3.1 – фрагмент из header.php

<div id="templatemo_menu">

<ul>

<li><a href="<?=$home_path;?>" class="current">Главная</a></li>

<?php

if($USER['ID']){?>

<li><a href="<?=$home_path;?>/basket">Корзина</a></li>

<li><a href="<?=$home_path;?>/logout">Выйти</a></li>

<?php

}else{?>

<li><a href="<?=$home_path;?>/registration">Регистрация</a></li>

<?php

}?>

</ul>

</div>

<div id="templatemo_header">

<div id="site_title">

<h1><a href="#"><img src="<?=$home_path;?>/images/ logo.png" alt="Site Title" />

<span>books store</span>

</a></h1>

</div>

<h2>Поиск</h2>

<div class="sidebar_section_content">

<form action="<?php echo $home_path.'/search'?>" method="get">

<input type="text" value="Enter a keyword..." name="q" size="25" id="searchfield" title="searchfield" onfocus="clearText(this)" onblur="clearText(this)" />

<input type="submit" name="Search" value="Поиск" alt="Search" id="searchbutton" title="Search" /></form>

<div class="cleaner"></div>

</div>

<h2>Жанры:</h2>

<div class="sidebar_section_content">

<ul class="categories_list">

<?php

foreach($categories_list as $cat){

?>

<li><a href="<?php echo $home_path.'/'.$cat['slag']?>"><?php echo $cat['name']?></a></li>

<?php

}?></ul></div></div></div>

3.2 Связь с БД

Модель используется для доступа и манипулирования данными. В большинстве случаев модель — это то, что используется для доступа к хранилищу данных (например, базе данных). Модель предоставляет интерфейс для поиска данных, их создания, модификации и удаления из хранилища.

Крайне важной чертой модели является то, что технически она не имеет никаких знаний ни о том, что происходит с данными в контроллере и представлении. Модель никогда не должна делать или ожидать каких-либо запросов в/из других компонентов паттерна.


Тем не менее, всегда помните, что модель — это не просто шлюз доступа к базе данных или другой системе, который только и занимается что передачей данных туда-сюда. Модель — это нечто вроде пропускного пункта к данным. Модель в большинстве случаев является самой сложной частью системы, отчасти из-за того, что сама по себе модель есть связующее звено для всех остальных частей [6].

Листинг 3.2 – bd.php

<?php

$db = mysql_connect ("localhost","root","") or die("Could not connect: " . mysql_error());

mysql_select_db ("mydb",$db)or die ('Can\'t use foo : ' . mysql_error());

mysql_set_charset('utf8',$db);

function query($sql)

{

$res=array();

$result=mysql_query($sql) or die ('Query error: ' . mysql_error());

if(is_resource($result)){

while ($row = mysql_fetch_assoc($result))

$res[]=$row;

mysql_free_result($result);

return $res;

}elseif($result==1){

return true;

}

}

3.3 Поиск

Для удобства, был разработано несколько способов навигации: поиск по словам и поиск по жанрам. Листинг 3.3 демонстрирует отображение результатов или их отсутствие на сайте.

Листинг 3.3– фрагмент из srch.php

<h2>Поиск "<?php echo $query?>"</h2>

<?php

if(isset($error))

echo "<p>$error</p>";

?>

</div>

<div class="content_section <?php echo $page_type;?>">

<?php

if(isset($books[0])){

foreach($books as $book){

?>

<div class="product_box">

<h2><a href="<?php echo $home_path.'/'.$book["cat_slag"].'/'.$book["slag"]?>"><?php echo $book["name"] ;?></a></h2></div>

<?php

}

}else{

?>

<div class="product_box">

<div>Поиск не дал результатов</div>

</div>

Поиск по словам:

Листинг 3.4 – функция поиска

case 'search':

$query=stripslashes($_GET['q']);

$query=htmlspecialchars($query);

$query=mysql_real_escape_string($query);

$SQL="SELECT `books`.`id`, `books`.`name`,`books`.`slag`,`books`.`author`, `books`.`short_description`,`books`.`image`,`books`.`cost`, `category`.`slag` AS 'cat_slag', `category`.`name` AS 'cat_name' FROM `books`, `category` WHERE `books`.`cat_id`=`category`.`id` AND ((`books`.`name` Like '%".$query."%') or (`books`.`author` Like '%".$query."%') or (`books`.`short_description` Like '%".$query."%'))";

$books=query($SQL);

include_once "srch.php";

break;

}

Поиск по категориям:

Листинг 3.5 – фрагмент из cat.php

<h2>Категория: <?php echo $books[0]['cat_name']?></h2>

<?php

$first=true;

foreach($books as $book){

$class="";

$cleaner="";

if($first)

$class="margin_r40";

else

$cleaner="<div class=\"cleaner\"></div>";

?>

<div class="product_box <?php echo $class?>">

<div class="image_wrapper"><a href="#"><img src="<?php echo $book["image"] ;?>" alt="<?php echo $book["name"] ;?>" /></a></div>

<h3> <?php echo $book["name"] ;?></h3>

<p><?php echo $book["short_description"] ;?></p>

<p class="price">Цена: <?php echo $book["cost"] ;?>грн</p>

<a href="<?php echo $home_path.'/'.$book["cat_slag"].'/'.$book["slag"]?>">Детально</a> | <a href="<?php echo $home_path.'/basket/add?id='.$book["id"]?>">Купить</a>

</div>


<?php echo $cleaner?>

<?php

$first=!$first;

}

Листинг 3.6 – определение категории

case 'cat':

$category_slag=mysql_real_escape_string($query[1]);

$SQL="SELECT `books`.`id`, `books`.`name`,`books`.`slag`,`books`.`author`, `books`.`short_description`,`books`.`image`,`books`.`cost`, `category`.`slag` AS 'cat_slag', `category`.`name` AS 'cat_name' FROM `books`, `category` WHERE `books`.`cat_id`=`category`.`id` AND `category`.`slag`='$category_slag'";

$books=query($SQL);

include_once "cat.php";

break;

Данный листинг показывает выборку жанра книги по его id. Функция находится в index.php.

3.4 Страница регистрации

Принцип построения простой регистрации на сайте [1]:

Рисунок 3.1 – Схема работы страницы регистрации

При регистрации, вводятся пароль и его подтверждение, в то время как в базу данных сохраняется шифр пароля:

Листинг 3.7 – reg.php

<?php

include_once "header.php";

?>

<div class="content_section <?php echo $page_type;?>">

<form action="<?php echo $home_path.'/registration'?>" method="post">

<?php

if(isset($error))

echo "<p>$error</p>";

?>

<p>Email: <input id="login" name="login" placeholder="Email" type="text"/></p>

<p>Пароль: <input id="pass" name="password" placeholder="password" type="password"/></p>

<input type="submit" name="submit" value="Регистрация"/>

<input type="submit" name="submit" value="Вход"/>

</form>

<div class="cleaner"></div>

</div>

<?php

include_once "footer.php";

?>

Листинг 3.8 – Функция регистрации. Index.php

case 'registration':

if(isset($_POST['submit'])){

$data=array_map("stripslashes", $_POST);

$data=array_map("htmlspecialchars", $data);

$data=array_map("mysql_real_escape_string", $data);

extract($data);

$users=query("SELECT * FROM `users` WHERE `login`='$login' LIMIT 1");

if(isset($users[0]['login'])){$error="Пользователь с таким логином уже существует.";

include_once "reg.php";

break;

}else{

if(ifset($login)&&ifset($password))

query("INSERT INTO `mydb`.`users` (`id`, `login`, `pass`) VALUES (NULL, '$login', MD5('$password'))");

login($_POST['login'],$_POST['password']);

header("Location: ".$home_path);exit;}}

include_once "reg.php";

break;

case 'login':

if(isset($_POST['submit'])){

login($_POST['login'],md5($_POST['password']));

header("Location: ".$home_path);

exit;}

include_once "reg.php";

break;

case 'logout':

setcookie("login", null, -1,'/');

setcookie("password", null, -1,'/');

header("Location: ".$home_path);

exit;

break;

3.5 Страница авторизации

Листинг 3.9 – user.php

<?php

$USER['ID']=false;

if(ifset($_COOKIE['login'])&&ifset($_COOKIE['password'])){

$USER['ID']=login($_COOKIE['login'],$_COOKIE['password']);

if($USER['ID'])

$USER['login']=$_COOKIE['login'];

}

Данный код при попытке открыть страницу соответствующего сайта, проверяет Cookie, и в случае их наличия пытается осуществить авторизацию.


В случае если ничего не найдено выполняется следующая часть:

Листинг 3.10 – index.php

else{

if(ifset($login)&&ifset($password))

query("INSERT INTO `mydb`.`users` (`id`, `login`, `pass`) VALUES (NULL, '$login', MD5('$password'))");

login($_POST['login'],$_POST['password']);

header("Location: ".$home_path);

exit;

}

Листинг 3.11 – функция авторизации

function login($login,$password){

$id=false;

$login=stripslashes($login);

$login=htmlspecialchars($login);

$login=mysql_real_escape_string($login);

$password=stripslashes($password);

$password=htmlspecialchars($password);

$password=mysql_real_escape_string($password);

$users=query("SELECT id FROM `users` WHERE `login`='$login' and `pass`='$password' LIMIT 1");

if(ifset($users[0]['id'])){

$id=$users[0]['id'];

//$_SESSION['login']=$login;

//$_SESSION['password']=md5($password);

setcookie("login", $login, time()+60*60*24*30,'/');

setcookie("password", $password, time()+60*60*24*30,'/');

}

return $id;

}

3.6 Корзина

Важной составляющей интернет-магазина является корзина. С её помощью пользователь просматривает покупки, их цену, реализует покупку. Также предоставлена возможность очистить корзину и вывод общей стоимости выбранных товаров.

Листинг 3.12 – baskets.php

<h2>Корзина</h2>

<?php

if(isset($error))

echo "<p>$error</p>";

?>

<?php

$total=0;

if(isset($books[0])){

foreach($books as $book){

$total+=$book["cost"];

?>

<div class="product_box">

<h2><?php echo $book["name"] ;?></h2>

<p class="price">Цена: <?php echo $book["cost"] ;?>грн</p>

</div>

<?php

}

?>

<div class="product_box">

<p class="price">Общая цена: <?php echo $total;?>грн</p> </div>

<div class="product_box">

<p class="price"><a href="<?php echo $home_path.'/basket/clear'?>">Очистить корзину</a> | <a href="<?php echo $home_path.'/basket/checkout'?>">Оформить заказ</a></p> </div>

<?php

}else{

?>

<div class="product_box">

<div>Корзина пуста</div></div>

<?php

}

?>

<div class="cleaner"></div>

</div>

В разработанном сайте, осуществление покупки возможно только для зарегистрированных посетителей. Следующий листинги продемонстрируют как происходит добавление книги в корзину, её очищение, вычисление общей стоимости.

Листинг 3.13 – Добавление продукта в корзину

case 'add_to_basket':

if(!$USER['ID']){

$error="Необходима регистрация.";

include_once "reg.php";

break;

}

$book_id=stripslashes($_GET['id']);

$book_id=htmlspecialchars($book_id);

$book_id=mysql_real_escape_string($book_id);

$user_id=$USER['ID'];

query("INSERT INTO `mydb`.`basket` (`book_id`, `user_id`) VALUES ('$book_id', '$user_id')");

header("Location: ".$home_path.'/basket');

break;

Листинг 3.14 – Очищение корзины

case 'clear_basket':

if(!$USER['ID']){

$error="Необходима регистрация.";

include_once "reg.php";

break;

}

$user=$USER['ID'];

query("DELETE FROM `mydb`.`basket` WHERE `basket`.`user_id` = '$user'");

header("Location: ".$home_path.'/basket');


break;

Листинг 3.15 – Чек

case 'checkout':

if(!$USER['ID']){

$error="Необходима регистрация.";

include_once "reg.php";

break;

}

$user=$USER['ID'];

//INSERT INTO `mydb`.`checkout` (`book_id`, `user_id`, `date`) VALUES ('1', '2', '2016-06-08 00:00:00'), ('2', '2', '2016-06-08 00:00:00');

$SQL="SELECT `book_id` FROM `basket` WHERE `basket`.`user_id`='$user'";

$basket=query($SQL);

$date=date("Y-m-d H:i:s");

$SQL="INSERT INTO `mydb`.`checkout` (`book_id`, `user_id`, `date`) VALUES ";

foreach($basket as $item){

$SQL.=" ('".$item['book_id']."', '$user', '$date'),";

}

$SQL=substr($SQL, 0, -1);

query("DELETE FROM `mydb`.`basket` WHERE `basket`.`user_id` = '$user'");

query($SQL);

include_once "check.php";

break;

После подтверждения покупки в корзине, пользователь получает сообщение, в котором указано что заявка подана и будет рассмотрена.

Заключение

Практически все организации за редким исключением имеют сегодня собственные сайты в Интернете. А объяснить этот очень просто: сайт визитка на просторах глобальной паутины имеет множество преимуществ перед другими альтернативными средствами рекламы. Большинство организаций давно открыли для себя Интернет в качестве средства рекламы. Ничего удивительного: к глобальной паутине ежедневно приобщаются новые и новые пользователи, которые вполне при данном стечении обстоятельств могут стать потенциальными потребителями товара. В целом Интернет - рекламное средство, за которым будущее.

Сайт в Интернете - это большое число потенциальных покупателей представленных Вами услуг или товаров. Также сайт- структура динамичная. Это значит, что не сложно его видоизменять в случае такой необходимости, а она появляется регулярно. Любая компания стремится к развитию, расширению ассортимента выпускаемой продукции и увеличению штата работников, то есть информация о ней постоянно претерпевает изменения, что должно тотчас же отображаться на сайте в Интернете.

В ходе выполнения курсовой работы, были закреплены теоретические знания, полученные при изучении интернет технологий на практике, при разработке собственного сайта, предназначенного для продажи книг.

Научилась создавать динамические страницы, работать с БД, создавать пользовательский интерфейс.

Были выполнены построенные задачи, а также осуществлены все необходимые функции для работы примитивного сайта.

ПЕРЕЧЕНЬ ССЫЛОК

  1. Вайнман Л., Динамический HTML: руководство разработчика Web-сайтов;
  2. Дригалкин В.В. HTML в примерах. Как создать свой Web-сайт. Самоучитель. Диалектика, 2003.
  3. Електронний посібник з WEB-технологій: режим доступу: http://www.intuit.ru/studies/courses/485/341/info
  4. Електронний посібник з HTML та CSS: режим доступу: http://www.intuit.ru/studies/courses/1005/276/info
  5. Интернет-университет информационных технологий www.intuit.ru
  6. Савельева Н.В. Основы программирования на PHP. Интернет-университет информационных технологий - ИНТУИТ.ру, 2005.
  7. Петюшкин А.В. HTML. Экспресс-курс.- СПб: БХВ-Петербург, 2003.- 256с.
  8. Храмцов П.Б., Брик С.А., Русак А.М., Сурин А.И. Основы web-технологий. Интернет-университет информационных технологий - ИНТУИТ.ру, 2003.