Автор: Пользователь скрыл имя, 10 Декабря 2012 в 23:23, реферат
Создание интернет-магазина является сложной и длительной работой, поэтому, в качестве примера, мы будем создавать упрощенный интернет-магазин, который, по сути, будет являться лишь витриной с описанием товаров, корзиной, в которую можно складывать покупки, и формой заказа. Администратор же сможет только просматривать сделанные заказы.
Создание интернет-магазина с помощью 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($
/* получаем массив с данными одного ряда – одного товара */
$content=$content."-----------
<strong>".$row['name']."</
<strong>цена:</strong> ".$row['price']." руб.<br/><br/>
<a href=\"catalogue.php?
/* составляем информации о товаре */
}
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=
Поместите следующую функцию в файл с каталогом перед описанием функции 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($
/* превратим полученный данные в ассоциативный массив $row */
$number=$k+1;
/* у каждого товара в корзине должен быть номер начиная с единицы, а php ведет счет начиная с нуля, поэтому к порядковому номеру выданному php нужно прибавить единицу. Запишем полученное значение в переменную $number */
$content=$content.$number." - ".$row['name']." - ".$row['price']." руб.<br/>";
/* оформляем полученные данные */
$cartTotalPrice=$
/* прибавляем к переменной $cartTotalPrice (общая сумма покупки) цену очередного товара */
}
$content=$content."<br/><br/> Всего: ".$cartTotalPrice." руб. ";
/* закончили перебор товаров в корзине и выводим общую стоимость покупки */
$content=$content."<br/><br/><
/* опция «оформить заказ» */
}
return $content;
/* вывод результатов */
}
echo cart();
/* выведем результат работы функции на экран */
?>
Для очищения корзины можно использовать функцию setCookie(), в которой переменной cart присваиваем пустую строку: setCookie(cart, "")
Информация о работе Создание интернет-магазина с помощью PHP и MySQL