Создание интернет-магазина с помощью PHP и MySQL

Автор: Пользователь скрыл имя, 10 Декабря 2012 в 23:23, реферат

Описание работы

Создание интернет-магазина является сложной и длительной работой, поэтому, в качестве примера, мы будем создавать упрощенный интернет-магазин, который, по сути, будет являться лишь витриной с описанием товаров, корзиной, в которую можно складывать покупки, и формой заказа. Администратор же сможет только просматривать сделанные заказы.

Работа содержит 1 файл

Magazin.doc

— 90.00 Кб (Скачать)

Создание интернет-магазина с помощью PHP и MySQL

 

Создание интернет-магазина является сложной и длительной работой, поэтому, в качестве примера, мы будем создавать  упрощенный интернет-магазин, который, по сути, будет являться лишь витриной с описанием товаров, корзиной, в которую можно складывать покупки, и формой заказа. Администратор же сможет только просматривать сделанные заказы.

Таким образом, наша база будет содержать  только две таблицы – товары и  заказы. Корзина же будет «виртуальной»  и реализовываться с помощью механизма Cookies.


 


 





 





 

 

 

 

Для начала, разделим процесс создания магазина на несколько этапов:

  • Создание базы данных для магазина и заполнение таблицы "товары",
  • Просмотр каталога товаров,
  • Корзина,
  • Оформление заказа,
  • Просмотр полученных заказов для администратора.

Все части мы будем реализовывать  в виде функций.

 

Лабораторная работа №1. Создание базы данных.

 

Часть 1. Подготовка информации

 

Для начала работы необходимо создать  в базе данных таблицы с первоначальными  данными. Мы будет заполнять таблицы в явном виде с помощью MySQL-запросов из PHP.

В реально существующих интернет-магазинах имеются специальные  формы для ввода, изменения и  удаления данных о товаре. Мы не будем  рассматривать их создание, но выполнив следующие задания до конца, Вам это будет по силам.

 

Необходимо создать файл, назовем  его install.php, который, при запуске, будет  создавать таблицы и вносить  в них данные.

 

Функция №0: Создание необходимых  таблиц в базе данных

 

<?

@mysql_connect("имя хоста","имя пользователя","пароль") or die("MySQL Connection Failed");

/* соединение с сервером  баз данных */

@mysql_select_db("имя базы данных") or die("MySQL Database Selection Failed");

/* выбор базы данных */

 

function install() {

 

$content="Создание таблиц<br/>";

mysql_query("create table products(id int auto_increment primary key, name tinytext, section tinytext, description text, price float)") or die("таблица с товарами НЕ создана<br/>");

$content=$content."таблица с товарами создана<br/>";

/* таблица с товарами */

mysql_query("insert into products(name, section, description, price) values('Чайник электрический WV-232', 'чайники', 'Последняя разработка компании Tefal в области электрических чайников', '2950')") or die("товар НЕ добавлен<br/>");

$content=$content."Товар добавлен<br/>";

 

mysql_query("insert into products(name, section, description, price) values('Чайник электрический WV-231', 'чайники', 'Классический чайник с неоновой подсветкой', '2630')") or die("товар НЕ добавлен<br/>");

$content=$content."Товар добавлен<br/>";

 

mysql_query("insert into products(name, section, description, price) values('Мясорубка MK-415', 'мясорубки', 'Самая мощная мясорубка на сегодняшний день – рубит мясо вместе с костями!', '6400')") or die("товар НЕ добавлен<br/>");

$content=$content."Товар добавлен<br/>";

/* добавление новых товаров */

 

mysql_query("create table purchases(id int auto_increment primary key, date tinytext, name tinytext, address tinytext, email tinytext, cart tinytext)") or die("таблица с покупками НЕ создана<br/>");

$content=$content."таблица с покупками создана<br/>";

/* таблица с покупками */

 

return $content;

/* функция возвращает результат создания таблиц и записей в ней */

}

 

echo install();

/* выведем результат  работы функции на экран */

?>

 

. Каталог

 

Мы создали в базе данных таблицу  с товарами. На следующем этапе  нужно просмотреть введённые  данные, т.е. создать каталог товаров. Для это используем уже знакомый нам метод. Сначала, с помощью  функции mysql_query, получаем в переменную $result все данные из таблицы products. С помощью цикла for перебираем все строки с данными, где получаем их в виде массива с помощью функции mysql_fetch_array.

Создадим файл c каталогом товаров catalogue.php.

 

Функция №1: Каталог товаров

 

<?

 

@mysql_connect("имя хоста","имя пользователя","пароль") or die("MySQL Connection Failed");

/* соединение с сервером  баз данных */

@mysql_select_db("имя базы данных") or die("MySQL Database Selection Failed");

/* выбор базы данных */

 

function catalogue() {

 

$result=mysql_query("select * from products");

/* получаем в переменную $result все товары */

 

$content="";

/* создаем переменную $content, в которую будем записывать все то, что нужно показать пользователю (создание HTML-файла) */

 

for ($i=0; $i<mysql_num_rows($result); $i++) {

/* перебираем все строки в таблице с товарами, используя для этого оператор for */

 

$row=mysql_fetch_array($result);

/* получаем  массив с данными одного ряда – одного товара */

 

$content=$content."--------------------<br/><br/>

<strong>".$row['name']."</strong><br/>".$row['description']."<br/><br/>

<strong>цена:</strong> ".$row['price']." руб.<br/><br/>

<a href=\"catalogue.php?addtocart=".$row['id']."\">положить в корзину</a><br/><br/>";

/* составляем информации о товаре */

 

}

return $content;

/* возвращаем переменную $content */

 

}

 

echo catalogue();

/* выведем результат  работы функции на экран */

 

echo "<a href=\"cart.php\">перейти в корзину</a>";

/* опция «перейти  в корзину» */

?>

 

Задание для самопроверки:

Добавьте в таблицу products несколько  товаров по вашему усмотрению и проверьте их наличие в каталоге.

 

Лабораторная работа №2. Добавление товара в корзину

 

Вся информация о содержании корзины  является временной и храниться  на компьютере пользователя до закрытия окна браузера. Для этого обычно используют cookies. Cookies – это переменные хранящиеся на компьютере пользователя в формате имя=значение, которые доступны только для сайта с которого они были записаны. Чтобы записать данные в cookies, в PHP используют функцию setCookie($name,$value) с двумя параметрами – имя переменной и её значение. Мы назовём нашу переменную cart, а её значением будет содержание корзины в виде идентификаторов товаров, указанных через разделительный знак (пусть это будет знак | ). Чтобы получить данные из корзины, используют стандартный массив $_COOKIE, работа с ним ни чем не отличается от работы со стандартными массивами $_POST и $_GET.

 

Обычно, чтобы добавить товар в  корзину используют функции, написанные на javascript (из которого можно тоже изменять cookies), но, т.к. изучение javascript не в ходит в программу данного курса, мы будем осуществлять это другим способом, которой в реальной жизни, в силу ряда причин, не используется, но даёт понять суть вопроса – что нам и нужно.

 

Опция «положить в корзину» будет  представлять собой ссылку на этот же php-файл с идентификатором товара, переданным методом GET, например, href=”cataloge.php?addtocart=1”. В самом файле, перед функцией вывода каталога, нужно вставить функцию проверки на наличие переменной addtocart в адресной строке. Кроме этого, нам нужно вывести на страницу количество товаров в корзине. Эти задачи мы будем решать с помощью следующей функции.

 

Поместите следующую функцию в  файл с каталогом перед описанием  функции catalogue(). Это должно выглядеть  следующим образом:

 

<?

 

@mysql_connect("имя хоста","имя пользователя","пароль") or die("MySQL Connection Failed");

@mysql_select_db("имя базы данных") or die("MySQL Database Selection Failed");

 

function cartStatus() {

.....

}

 

function catalogue() {

.....

}

 

echo catalogue();

 

?>

 

Функция №2: Добавление товара и состояние корзины

 

function cartStatus() {

 

/* часть первая – добавление товара в корзину */

 

$cart="";

/* создаем переменную $cart, в которую запишем корзину */

 

if (@$_COOKIE['cart']) { $cart=$_COOKIE['cart']; }

/* если существует переменная «cart» в cookies, то присвоим её значение переменной $cart */

 

if (@$_GET[addtocart]) {

/* если существует переменная «addtocart» в адресной строке (метод GET), то */

 

if (!@$_COOKIE['cart']) {

/* если не существует переменной «cart» в cookies */

 

$cart=$_GET['addtocart'];

/* присвоим переменной $cart идентификатор добавляемого в корзину товара */

 

}

else {

/* если существует переменная «cart» в cookies, нужно поставить разделительный знак между идентификаторами (мы решили, что это будет знак | ), и только потом добавить новый идентификатор */

 

$cart=$cart."|". $_GET['addtocart'];

 

}

 

setCookie("cart","$cart");

/* заменим переменную «cart» в cookies на $cart с новым, изменённым содержанием корзины */

 

}

 

/* часть вторая – получение количества товаров в корзине */

 

if ($cart=="") { $cartCount="0"; }

/* если переменная $cart, полученная ранее из cookies, является пустой строкой, значит, корзина пуста и переменной содержащей количество товаров, назовём её $cartCount нужно присвоить значение 0 */

 

else {

/* если же переменная $cart не пуста и в корзине находятся товары… */

 

$cartArr=explode("|",$cart);

/* …нужно создать массив с идентификаторами товаров. Для этого используем стандартную функцию explode(). Её работа заключается в разбиении строки на подстроки в соответствии с указанным разделителем и помещение полученных данных в массив. Следовательно, товаров в корзине столько, сколько элементов в массиве */

 

$cartCount=count($cartArr);

/* стандартная функция count() возвращает количество элементов в указанном в скобках массиве; присвоим это значение переменной $cartCount */

 

}

 

return $cartCount;

/* функция возвращает количество товаров в корзине */

 

}

 

Функция написана, помещена в нужно  место в файле, но не запущена. Можно  запустить её простым вызовом cartStatus(), но тогда она будет только добавлять товар в корзину, а она умеет еще и возвращать количество товаров в корзине. Поэтому будем запускать её следующим образом:

 

<?

 

@mysql_connect("имя хоста","имя пользователя","пароль") or die("MySQL Connection Failed");

@mysql_select_db("имя базы данных") or die("MySQL Database Selection Failed");

 

function cartStatus() {

.....

}

 

function catalogue() {

.....

}

 

$cartCount=cartStatus();

/* запускаем функцию и возвращаем её значение в переменную $cartCount */

 

echo "Количество товаров в корзине: ".$cartCount." шт.<br/><br/><br/>";

/* теперь в самом верху страницы с каталогом будет указано количество товаров в корзине на данный момент */

 

echo catalogue();

/* выводим каталог товаров */

 

?>

 

Лабораторная работа №3. Корзина

 

Наша корзина, как и сам магазин, будет максимально простая. Она  будет состоять из кнопки оформить заказ, очистить корзину и списка товаров без возможности изменения  количества и удаления определённого  товара, т.к. это является достаточно непростой задачей для начинающего программиста.

 

Таким образом, нашей задачей в  этой лабораторной работе будет получить из cookies идентификаторы товаров, которые  посетитель положил в корзину, найти  по ним соответствующие товары в  базе данных, вывести их названия и цены и сосчитать общую сумму покупки.

 

Создадим файл cart.php.

 

Функция №3: Корзина

 

<?

 

@mysql_connect("имя хоста","имя пользователя","пароль") or die("MySQL Connection Failed");

@mysql_select_db("имя базы данных") or die("MySQL Database Selection Failed");

 

function cart() {

 

$cart="";

/* создаем переменную $cart, в которую запишем корзину */

 

if (@$_COOKIE['cart']) { $cart=$_COOKIE['cart']; }

/* если существует переменная «cart» в cookies, то присвоим её значение переменной $cart */

 

$cartArr=explode("|",$cart);

/* используем уже известную нам функцию explode, чтобы получить массив с идентификаторами товаров в корзине */

 

if ($cart=="") {

return "корзина пуста";

/* если переменная $cart является пустой строкой, то результатом функции будет надпись «корзина пуста» */

}

else {

$cartCount=count($cartArr);

/* запишем в переменную $cartCount количество товаров в корзине, полученное с помощью функции count() */

 

$cartTotalPrice=0;

/* создаем переменную $cartTotalPrice, в которой будем считать общую стоимость */

 

foreach($cartArr as $k=>$v) {

/* с помощью оператора foreach перебираем все элементы массива, где $k – номер элемента в массиве (начиная с нуля), $v – идентификатор товара */

 

$result=mysql_query("select * from products where id='$v'");

/* получаем в переменную $result результат mysql-запроса «выбрать все из таблицы products, где идентификатор ($id) равен переменной $v (идентификатор из массива с товарами)» */

 

$row=mysql_fetch_array($result);

/* превратим полученный данные в ассоциативный массив $row */

 

$number=$k+1;

/* у каждого товара в корзине должен быть номер начиная с единицы, а php ведет счет начиная с нуля, поэтому к порядковому номеру выданному php нужно прибавить единицу. Запишем полученное значение в переменную $number */

 

$content=$content.$number." - ".$row['name']." - ".$row['price']." руб.<br/>";

/* оформляем полученные данные */

 

$cartTotalPrice=$cartTotalPrice+$row['price'];

/* прибавляем к переменной $cartTotalPrice (общая сумма покупки) цену очередного товара */

}

 

$content=$content."<br/><br/> Всего: ".$cartTotalPrice." руб. ";

/* закончили перебор товаров в корзине и выводим общую стоимость покупки */

 

$content=$content."<br/><br/><a href=\"orderform.php\">оформить заказ</a>\n";

/* опция «оформить заказ» */

 

}

return $content;

/* вывод результатов */

 

}

 

echo cart();

/* выведем результат  работы функции на экран */

 

?>

 

Для очищения корзины можно использовать функцию setCookie(), в которой переменной cart присваиваем пустую строку: setCookie(cart, "")

Информация о работе Создание интернет-магазина с помощью PHP и MySQL