Файл: «product.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:150px; left:0px; width="99%"; border: 1px solid blue;"> <h1 align="center">Шапка сайта</h1> <h3 align="center"><a href="magazin.php">на главную</a></h3> <h2 align="center"><a href="corzina.php">Моя корзина</a></h2> </div> <div style="position:absolute; top:150px; height:1400px; left:0px; width="99%"; border: 1px solid blue;"> <table border="1px" align="center" cellpadding="5" cellspacing="1" bgcolor="#fff"> <tr align="center"> <td width="250"><img src="foto/1.jpg" alt="картина" height="120" width="160" border="0"><br/>Микеланджело Буонарроти. Фрески плафона Сикстинской капеллы. Господь сотворяет Адама. 1508-1512. Фреска. Возрождение. Италия.<form action="zapisi_tovara.php?idtovara=1" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td width="250"><img src="foto/2.jpg" alt="картина" height="120" width="160" border="0"><br/>Крамской, Иван Николаевич. Неизвестная. 1883. 75,5 x 99 см. Холст, масло. Реализм. Россия.<form action="zapisi_tovara.php?idtovara=2" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td width="250"><img src="foto/3.jpg" alt="картина" height="120" width="160" border="0"><br/>Шишкин, Иван Иванович. Сосновый бор. Мрачноватый лес в Вятской губернии. 1872. 117 х 165 см. Холст, масло. Россия.<form action="zapisi_tovara.php?idtovara=3" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td width="250"><img src="foto/4.jpg" alt="картина" height="120" width="160" border="0"><br/>Ван Гог, Винсент Виллем. Рыбачьи лодки на берегу в Сен-Марье. Холст, масло. Постимпрессионизм. Нидерланды и Франция.<form action="zapisi_tovara.php?idtovara=4" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> </tr> <tr align="center"> <td><img src="foto/5.jpg" alt="картина" height="120" width="160" border="0"><br/>Сезанн, Поль. Гора св. Виктории. 1885-1887. 67 x 92 см. Холст, масло. Постимпрессионизм. Франция<form action="zapisi_tovara.php?idtovara=5" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/6.jpg" alt="картина" height="120" width="160" border="0"><br/>Брейгель, Питер. Серия "Месяцы": охотники на снегу (январь). 1565. 117 x 162 см. Дерево, масло. Возрождение. Нидерланды (Фландрия).<form action="zapisi_tovara.php?idtovara=6" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/7.jpg" alt="картина" height="120" width="160" border="0"><br/>Айвазовский, Иван Константинович. Ночь. Голубая волна. 1876. 47 х 64 см. Холст, масло. Романтизм, реализм. Россия.<form action="zapisi_tovara.php?idtovara=7" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/8.jpg" alt="картина" height="120" width="160" border="0"><br/>Боттичелли, Сандро. Рождение Венеры. Около 1482-1483. 172,5 x 278,5 см. Холст, темпера. Возрождение. Италия.<form action="zapisi_tovara.php?idtovara=8" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> </tr> <tr align="center"> <td><img src="foto/9.jpg" alt="картина" height="120" width="160" border="0"><br/>Фридрих, Каспар Давид. Полярное море (гибель полярной экспедиции). Холст, масло. Романтизм. Германия.<form action="zapisi_tovara.php?idtovara=9" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/10.jpg" alt="картина" height="120" width="160" border="0"><br/>Моне, Клод. Здание парламента в Лондоне. 1904. 81 x 92 см. Холст, масло. Импрессионизм. Франция<form action="zapisi_tovara.php?idtovara=10" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/11.jpg" alt="картина" height="120" width="160" border="0"><br/>Айвазовский, Иван Константинович. Девятый вал. 1850. 221 х 332 см. Холст, масло. Романтизм, реализм. Россия.<form action="zapisi_tovara.php?idtovara=11" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/12.jpg" alt="картина" height="120" width="160" border="0"><br/>Айвазовский, Иван Константинович. Буря на море ночью. 1849. 89 х 106 см. Холст, масло. Романтизм, реализм. Россия.<form action="zapisi_tovara.php?idtovara=12" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> </tr> <tr align="center"> <td><img src="foto/13.jpg" alt="картина" height="120" width="160" border="0"><br/>Айвазовский, Иван Константинович. Рыбаки на берегу моря. 1852. 94 х 144 см. Холст, масло. Романтизм<form action="zapisi_tovara.php?idtovara=13" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/14.jpg" alt="картина" height="120" width="160" border="0"><br/>Айвазовский, Иван Константинович. Ветряная мельница на берегу моря. 1837. 67 х 96 см. Холст, масло. Романтизм, реализм. Россия.<form action="zapisi_tovara.php?idtovara=14" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/15.jpg" alt="картина" height="120" width="160" border="0"><br/>Айвазовский, Иван Константинович. Утро на море. 1883. 110 х 163 см. Холст, масло. Романтизм, реализм. Россия.<form action="zapisi_tovara.php?idtovara=15" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/16.jpg" alt="картина" height="120" width="160" border="0"><br/>Айвазовский, Иван Константинович. Берег моря ночью. 1837. 47 х 66 см. Холст, масло. Романтизм, реализм. Россия.<form action="zapisi_tovara.php?idtovara=16" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> </tr> <tr align="center"> <td><img src="foto/17.jpg" alt="картина" height="120" width="160" border="0"><br/>Ахенбах, Андреас. Вестфальская водяная мельница. 1863. Холст, масло. Реализм. Германия.<form action="zapisi_tovara.php?idtovara=17" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/18.jpg" alt="картина" height="120" width="160" border="0"><br/>Беркхейде, Геррит Адрианс. Большой рынок в Харлеме с церковью св. Бавона. 1696. 69,5 x 90,5 см. Дерево, масло. Барокко. Нидерланды (Голландия).<form action="zapisi_tovara.php?idtovara=18" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/19.jpg" alt="картина" height="120" width="160" border="0"><br/>Брейгель, Питер. Строительство Вавилонской башни. Около 1560. 31 x 40,5 см. Медь, масло. Возрождение.<form action="zapisi_tovara.php?idtovara=19" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> <td><img src="foto/20.jpg" alt="картина" height="120" width="160" border="0"><br/>Боголюбов, Алексей Петрович. Зима в Париже. Холст, масло. Реализм. Россия.<form action="zapisi_tovara.php?idtovara=20" method="POST"><input type="submit" value="В корзину" onClick="alert('Товар добавлен в корзину!')"></form></td> </tr> </table> </div> <div style="position:absolute; top:1550px; height:100px; left:0px; width="99%"; border: 1px solid blue;"> <h1 align="center">Подвал сайта</h1> </div> </body> </html> |
В этом файле также установлен код счетчика, потому что посетитель может зайти на эту страницу через «поисковик» минуя главную страницу, поэтому желательно устанавливать этот код в начале каждой страницы, которая доступна для индексации поисковиками.
На этой странице находиться наши товары, которые мы должны «пометить» уникальным номером. Для удобства мы пометим их теми номерами, под которыми они хранятся в базе данных. А для еще большего удобства имена наших изображений (которые хранятся в папке «foto») должны совпадать с их уникальным номером (id) и с теми номерами, под которыми они хранятся в базе данных.
Рассмотрим код, который отправляет выбранный товар на обработку файлу «zapisi_tovara.php»
<form action=»zapisi_tovara.php?idtovara=19″ method=»POST»>
<input type=»submit» value=»В корзину» onClick=»alert(‘Товар добавлен в корзину!’)»>
</form>
Данные передаются с одной странице на другую двумя способами: method=»POST» и method=»GET». Отличаются они тем, что method=»GET» передает данные через адресную строку (то есть открыто) а method=»POST» через форму «form» (закрыто от пользователя), иными словами GET передает данные привязанные к ссылке, а POST передает данные, которые находится в форме (где надо заполнять поля) и только по нажатию кнопки.
В нашем случае мы связали два метода, потому что нам необходимо передать данные посредством нажатия кнопки, а не переходом по ссылке, хотя это всего лишь дизайнерский ход, а не жизненная необходимость.
<form action=»zapisi_tovara.php?idtovara=19″ method=»POST»> — указывает на какую страницу, будут отправлены данные при нажатии кнопки именно этой формы. В данном случае мы привязали значение «19» к имени «idtovara» и посылаем их методом «POST» но лишь для того чтобы сработала форма отправки а на странице «zapisi_tovara.php» мы эти данные примем как «GET» запрос и запишем их в переменную «$idtovara».
<input type=»submit» value=»В корзину» onClick=»alert(‘Товар добавлен в корзину!’)»> — это код самой кнопки, значение «value» можно менять на свое усмотрение, onClick=»alert(‘строка’)» вызывает всплывающие окно с подсказкой (в нашем случае «’Товар добавлен в корзину!‘») она сработает каждый раз когда будет нажата кнопка.
</form> — закрываем форму.
Файл: «zapisi_tovara.php»
<?php session_start(); $talon = $_SESSION['talon']; $data = date('y/n/d'); $idtovara = $_GET['idtovara']; $conn2 = mysql_connect("localhost", "Имя пользователя", "Пароль пользователя") or die ("Could not connect: " . mysql_error()); mysql_select_db("cortini", $conn2); $sqlCart = mysql_query("SELECT talon,id_tovara FROM vibranie_tovari WHERE talon = '$talon'", $conn2); while ($row = mysql_fetch_array($sqlCart )) { if ($row["talon"] == $talon && $row["id_tovara"] == $idtovara) { $update = true; } } if (!$update) { $sqlInsert = mysql_query("INSERT INTO vibranie_tovari (talon,id_tovara,colichestvo,data) Values ('$talon', '$idtovara', 1, '$data')", $conn2); } else { $sqlUpdate = mysql_query("UPDATE vibranie_tovari SET colichestvo = colichestvo + 1 WHERE talon ='$talon' AND id_tovara = '$idtovara'", $conn2); if (!$sqlUpdate) {echo "ne poluchilosi";} } mysql_close($conn2); header("Location:product.php"); ?> |
В этом файле и происходит все самое интересное. Здесь мы получаем все необходимые данные и записываем их в нашу таблицу «vibranie_tovari».
Давайте разберем каждый элемент отдельно:
1. session_start(); — запускаем сессии
2. $talon = $_SESSION[‘talon’]; — записываем значение нашей глобальной переменной «$_SESSION[‘talon’]» в переменную «$talon»
3. $data = date(‘y/n/d’); — создаем переменную «$data» и записываем в нее текущею дату в формате (‘год/месяц/день’)
4. $idtovara = $_GET[‘idtovara’]; — записываем в переменную «$idtovara» значение которое мы получили методом «GET» с именем «idtovara», в нашем примере «19»
5. $conn2 = mysql_connect(«localhost», «Имя пользователя«, «Пароль пользователя«) or die («Could not connect: » . mysql_error());
mysql_select_db(«cortini», $conn2); — подключаемся к базе данных.
6. $sqlCart = mysql_query(«SELECT talon,id_tovara FROM vibranie_tovari WHERE talon = ‘$talon'», $conn2); — выбираем поля «talon» и «id_tovara» из таблицы «vibranie_tovari» где поле «talon» совпадает с переменной «$talon»
7. while ($row = mysql_fetch_array($sqlCart )) – результат «$sqlCart» записываем в переменную «$row»
8. if ($row[«talon»] == $talon && $row[«id_tovara»] == $idtovara) – если результат взятый из поля «talon» совпадает с переменной «$talon» и результат поля «id_tovara» совпадает с переменной «$idtovara» то:
9. $update = true; — создаем переменную «$update» и записываем туда значение «true» (правда)
10. if (!$update) – если переменная «$update» не создана, то:
11. $sqlInsert = mysql_query(«INSERT INTO vibranie_tovari (talon, id_tovara, colichestvo, data) Values (‘$talon’, ‘$idtovara’, 1, ‘$data’)», $conn2); — записываем в таблицу «vibranie_tovari» в поля (talon,id_tovara,colichestvo,data) значение (‘$talon’, ‘$idtovara’, 1, ‘$data’)
12. еlse – иначе
13. $sqlUpdate = mysql_query(«UPDATE vibranie_tovari SET colichestvo = colichestvo + 1 WHERE talon =’$talon’ AND id_tovara = ‘$idtovara'», $conn2); — создаем переменную, которая поменяет данные (UPDATE) в таблице «vibranie_tovari» в поле «colichestvo» на то же самое значение плюс «1» где (WHERE) поле «talon» совпадает с переменной «$talon» и (AND) поле «id_tovara» совпадает с переменной «$idtovara»
14. if (!$sqlUpdate) {echo «Запрос не прошел! Попробуйте еще раз.»;} – проверяем если переменная «$sqlUpdate» не создана то выводим текст ошибки.
15. mysql_close($conn2); — закрываем соединение с базой данных.
16. header(«Location:product.php»); — если все прошло успешно, то происходит автоматический переход на страницу «product.php».
Все это происходит мгновенно, вы заметите только то, что перезагрузится страница «product.php». О том, что был переход на страницу «zapisi_tovara.php» и обратно нам говорит только всплывающие окно с подсказкой «Товар добавлен в корзину!»