Итак, давайте сделаем небольшой интернет магазин, в котором будем продавать копии картин известных художников.
Открываем текстовый редактор и создаем пять файлов с расширением (php)
1. magazin.php — Главная страница.
2. product.php — страница с товаром.
3. zapisi_tovara.php — файл, который записывает выбранный товар в базу даных.
4. corzina.php — страница, где будут отображаться выбранные товары.
5. final.php — отправляет на вашу почту данные о покупке и дополнительные данные о покупателе.
Создаем папку с именем «foto» где будут, хранятся фото наших товаров.
Далее нам понадобятся три таблицы в базе данных с именем «cortini» которую нужно создать с помощью «phpMyAdmin» (как создать базу данных с таблицами я написал здесь) который входит в комплектацию «денвера» а открывается он следующим образом:
вводим в адресную строку браузера эту строку — http://localhost/tools/phpmyadmin
Имена таблиц:
1. posetiteli — таблица, где хранятся данные счетчика посетителей, так как его значение никогда не повторяется, то мы смело можем привязать его к посетителю, то есть: 1234-ый посетитель будет иметь «талон» с номером «1234».
2. tovari — таблица, где хранятся данные о всех товарах нашего магазина.
3. vibranie_tovari — таблица, куда будут записываться товары, которые выбрали наши покупатели.
Скачать архив с таблицами, файлами и папкой с изображениями вы можете в разделе программы.
И так давайте разберем каждый файл отдельно.
Файл: «magazin.php»
<?php header('Content-Type: text/html; charset=utf-8'); setlocale(LC_ALL, 'ru_RU.65001', 'rus_RUS.65001', 'Russian_Russia. 65001', 'russian'); session_start(); if (isset($_SESSION['talon']) == "" ) { $conn = mysql_connect("localhost", "Имя пользователя", "Пароль пользователя") or die ("Could not connect: " . mysql_error()); mysql_select_db("cortini", $conn); $result = mysql_query("SELECT counter FROM posetiteli", $conn); if (!$result) {echo "zapros na viborcu ne proshol."; mysql_error();} $x = mysql_fetch_array($result); $_SESSION['talon'] = $x["counter"]+1; $result = mysql_query("UPDATE posetiteli SET counter = counter + 1", $conn); if (!$result) {echo "zapros na viborcu ne proshol."; mysql_error();} mysql_close($conn); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>интернет магазин</title> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="keywords" content="интернет, магазин, картины, прдаем, продажа, картин"> <meta name="description" content="интернет магазин"> </head> <body> <div style="position:absolute; top:0px; height:100px; left:0px; width="99%"; border: 1px solid blue;"> <h1 align="center">Шапка сайта</h1> </div> <div style="position:absolute; top:100px; height:400px; left:0px; width="99%"; border: 1px solid blue;"> <h1 align="center">Меню №1</h1> </div> <div style="position:absolute; top:100px; height:400px; left:800px; width="99%"; border: 1px solid blue;"> <h1 align="center">Меню №2</h1> </div> <div style="position:absolute; top:100px; height:400px; left:200px; width="99%"; border: 1px solid blue;"> <h1 align="center"><a href="product.php">Наши товары.</a></h1> <h3 align="center"><?php echo "Вы являетесь: ".$_SESSION['talon']." посетителем! <br/>Номер Вашей покупки: ".$_SESSION['talon']?></h3> </div> <div style="position:absolute; top:500px; height:100px; left:0px; width="99%"; border: 1px solid blue;"> <h1 align="center">Подвал сайта</h1> </div> </body> </html> |
В начале файла нам необходимо разместить, код счетчика посетителей, который будет считать посетителей, и одновременно присваивать им «уникальный номер» а делается это лишь для того чтобы счетчик не считал Вас каждый раз когда Вы открываете данную страницу.
Для этого нужно создать «глобальную переменную» так называемую «сессию» с именем «talon», в которой, будет храниться значение, в нашем случае значение будет «показания счетчика».
И так, если вы заходите впервые на эту страницу, то естественно сессия с именем «talon» ($_SESSION[‘talon’]) будет пустой. В этом случае срабатывает запрос к таблице «posetiteli», извлекается из нее число посетителей, и прибавляется к нему «1» (так как Вы новый посетитель) и получившейся результат записывается в $_SESSION[‘talon’], после чего меняем данные самого счетчика (то есть, прибавляем «1»). Эта сессия будет, привязана к Вам все время пока вы находитесь на сайте даже после выхода, она сохраняется на некоторое время.
Если вы перезагрузите страницу, то код счетчика проверит если $_SESSION[‘talon’] имеет значение, то он не сработает и не запишет Вас как нового пользователя.
Давайте рассмотрим код счетчика:
Первые две строчки указывают браузеру, в какой кодировке написан данный файл.
session_start(); — запускаем сессии.
if (isset($_SESSION[‘talon’]) == «» ) — проверяем если сессия с именем «talon» пустая, то выполняем действия, которые записаны в фигурных скобках {}, если нет, то пропускаем фигурные скобки и идем дальше.
$conn = mysql_connect(«localhost», «Имя пользователя«, «Пароль пользователя«) or die («Could not connect: » . mysql_error());
mysql_select_db(«cortini», $conn); — устанавливаем соединение с нашей базой данных, в нашем случае база данных с именем «cortini», также обратите внимание на «Имя пользователя» и «Пароль пользователя» здесь необходимо вставить то имя которое вы указали при создании базы данных, то есть того кто имеет право доступа к этой базе, и пароль соответственно.
$result = mysql_query(«SELECT counter FROM posetiteli», $conn); — здесь мы формируем переменную «$result» с конкретным запросом к одной из таблиц, в данном случае мы хотим выбрать(SELECT) поле с именем «counter» из (FROM) таблицы с именем «posetiteli», если запрос прошел успешно то формируется переменная «$result»
if (!$result) {echo «zapros na viborcu ne proshol.»; mysql_error();}— проверяем если не сформировалась переменная «$result» то выводим на экран текст «zapros na viborcu ne proshol.» И ищем наши ошибки.
$x = mysql_fetch_array($result); — в переменную «$x» записываем результат работы переменной «$result»
$_SESSION[‘talon’] = $x[«counter»]+1; — заносим в сессию «talon» значение «$x» которую взяли из поле «counter» и прибавляем единицу.
$result = mysql_query(«UPDATE posetiteli SET counter = counter + 1», $conn); — меняем (UPDATE) в таблице «posetiteli» значение поле «counter» на то же самое значение плюс один, то есть вы.
mysql_close($conn); — закрываем соединение с базой данных.
<h3 align=»center»><?php echo «Вы являетесь: «.$_SESSION[‘talon’].» посетителем! <br/>Номер Вашей покупки: «.$_SESSION[‘talon’]?></h3> — выводим на экран сессию «talon» это скорее проверка работоспособность нашего кода, чем необходимость.
С html кодом вы должны быть уже знакомы.
FerrisBuller подскажите как быть с бд, я импортировал Ваши файлы, но страница index.php не открывается, пишет: Warning: mysql_connect() [function.mysql-connect]: Access denied for user *root***localhost* (using password: YES) in Z:*home*localhost*www*index.php on line 9 Could not connect: Access denied for user *root***localhost* (using password: YES) Как я понимаю что-то не так с именем и паролем у бд, как это исправить?
sasha Друзья! Пожалуйста, задавайте свои вопросы на форуме! *FerrisBuller* В файле «bd.php» укажите свой логин и пароль администратора базы данных (логин в место «Имя пользователя» а пароль вместо «Пароль пользователя»)
Игорь Здравствуйте! Не могу ни как написать код графической корзины . Мини-корзина в углу. Опишите пожалуйста как ее сделать!
sasha Игорь, мини-корзина в углу — это, по сути, та-же самая корзина, только не в отдельном файле а в блоке на нужных Вам страницах (для удобства подключаются «инклуд-ом» ). Чтобы товары добавлялись не перезагружая страницу нужно использовать «Ajax». Не совсем понял, что такое «графическая корзина».
Сергей Здравствуйте. Подскажите такой момент. Товар в корзину добавляется, но переход на product.php не происходит, пишет: Warning: session_start() [function.session-start]: Cannot send session cache limiter — headers already sent (output started at Z:homeRODNIKUT.BYwwwpageszapisi_tovara.php:3) in Z:homeRODNIKUT.BYwwwpageszapisi_tovara.php on line 4 Warning: Cannot modify header information — headers already sent by (output started at Z:homeRODNIKUT.BYwwwpageszapisi_tovara.php:3) in Z:homeRODNIKUT.BYwwwpageszapisi_tovara.php on line 34 Что может быть не так? Спасибо.
Сергей Вы знаете, разобрался. Оказывается
sasha Если Вы не редактировали файл «zapisi_tovara.php» то всё должно работать правильно. Но судя по всему, Вы его редактировали… Поэтому, трудно делать какие-то выводы, не видя самого кода который отвечает за запись и обновления таблицы с покупками. Можете прислать код Вашего файла через форму, в разделе «Обратная связь», я посмотрю…
liz подскажите-«Имя пользователя» и «Пароль пользователя» здесь необходимо вставить то имя которое вы указали при создании базы данных, то есть того кто имеет право доступа к этой базе, и пароль соответственно. может я не помню но я не вводила имён и паролей где взять эти данные
sasha Зайдите в панель управления БД «phpmyadmin» выберите из списка ту базу данных которой хотите установить доступ по паролю, и в верхнем правом углу найдите вкладку «Privileges», нажав на неё, появится таблица с пользователями которым разрешен доступ к ней. Дальше можно пойти двумя путями: 1) В низу можно нажать на ссылку «Add a new User» что переводится как «Добавить нового пользователя» дальше нужно-будет указать его имя, пароль и выбрать привилегии для этого пользователя, то есть отметить галочкой те действия которые может совершать этот пользователь (запись, чтение, удаление и т. д. и т. п.). 2) Выбрать из существующего списка одного пользователя и отредактировать, сменить пароль и привилегия (можно выбрать все пункты), далее запоминаем его имя и пароль и вписываем их в файл который подключает нашу БД.