Верстка серверной части

Для создания серверной части посредством PHP понадобится среда разработки Eclipse for PHP. На момент создания данного методического пособия официальный сайт находится по адресу: http://www.eclipse.org/ (оригинальная версия находится по этому адресу).

Установка Eclipse for PHP производится стандартным способом.

· Запустите среду разработки Eclipse for PHP.

· Создайте новый PHP проект, при помощи контекстного меню «File»-«New»-«PHP Project» (рис. 1.7).

Рис. 1.7

 

 

В поле «Project name» введите имя проекта «simp» и нажмите кнопку «Finish» (рис. 1.8).

Рис. 1.8

 

В окне навигации проекта выберите папку «simp», нажмите правой кнопкой мыши по иконке папки и выберите пункт «New» - «PHP File». (рис. 1.9).

Рис. 1.9

В поле «File name:» введите «index.php» и нажмите кнопку «Finish» (рис. 1.10).

Рис. 1.10

Аналогичным образом создайте в проекте папки «doc» и «img».

 

 

В корневой папке «simp» создайте аналогичным образом файлы «lib.php» «simp.css» «tovar.php»

Результат продемонстрирован на рис 1.11

Рис 1.11

 

Откройте файл проекта для верстки: «lib.php», в него поместите следующий код:

<?php

//Параметры подключения к БД

@ error_reporting (E_STRICT);

define ("ServerName", "localhost");

define ("UserLogin", "root");

define ("UserPassword", "");

define ("DbName", "sim");

 

Дополните код следующей функцией «makeOpisan()»:

 

//функци для формирования описания товаров

function makeOpisan () {

// Подключаемся кMySQL

$db = mysqli_connect (ServerName, UserLogin, UserPassword) or die ("cannot connect");

// Если подключение выполнено

if ($db) {

// Выбираем базу данных с проверкой успешного выбора

if (mysqli_select_db ($db, DbName) or die ("cannot select DB")) {

//Указываем использование кодировки UTF-8

mysqli_query ($db, "SET names 'utf8'");

$rez = mysqli_query ($db, "SELECT * FROM opisan");

$out_page = "";

// Перебираем десять строк результат запроса

for ($i = 0; $i < 10; $i ++) {

//Получаем очередную строку из запроса

$row = mysqli_fetch_row ($rez);

//Получаем наименование

$naim = $row [1];

//Получаем описание

$txt = $row [2];

//Добавляем в конец строки

$out_page.= "<h1 class='h1_opisan'>{$naim}</h1>". "<div class = 'div_opisan'>{$txt}</div><br/>";

}

// Выводим на страницу браузера

echo $out_page;

}

//Отключаемся от MySQL

mysqli_close ($db);

}

}

Далее добавьте функцию «getIdMenu()» для получения раздела меню:

// Получение номера раздела меню

function getIdMenu () {

// Результат

$tmp = 0;

// Если есть данные вGET-запросе

if ($_GET) {

// Если параметр: id имеет значение вGET-запросе

if ($_GET ["id"]) {

// Получаем значение параметра: id

$tmp = $_GET ["id"];

}

// Если это значение не лежит в интервале [1..3],

// то записываем нулевое значение в$tmp

if (! (($tmp >= 1) && ($tmp <= 3)))

$tmp = 0;

}

// Возвращаем значение из функции

return $tmp;

}

Далее добавьте функцию «getHTML()» для получения HTML-разметки из базы данных и вывода на веб-страницу:

// Получение HTML-разметки из базы данных и вывод на веб-страницу

function getHTML ($nom) {

// Результат работы функции

$html = "";

// Подключаемся кMySQL

$db = mysqli_connect (ServerName, UserLogin, UserPassword) or die ("cannot connect");

// Если подключение выполнено

if ($db) {

// Выбираем базу данных с проверкой успешного выбора

if (mysqli_select_db ($db, DbName) or die ("cannot select DB")) {

//Указываем использование кодировки UTF-8

mysqli_query ($db, "SET names 'utf8'");

//Выполняем запрос для получения данных

$rez = mysqli_query ($db, "SELECT * FROM razmetka WHERE (id={ $nom })");

//Определяем количество строк в результате запроса

$kol_str = mysqli_num_rows ($rez);

// Если получена одна строка

if ($kol_str == 1) {

//Получаем строку

$row = mysqli_fetch_row ($rez);

// Получаем значение поля: html

$html = $row [1];

}

}

//Отключаемся от MySQL

mysqli_close ($db);

}

// Выводим HTML на страницу

echo $html;

}

Далее добавьте функцию «getHTML()» для обработки заявки заказа в интернет магазине:

// Функция обработки заявки

function testPost () {

// Если была нажата кнопка отправления данных

if ($_POST ["btn"]) {

//Переменная для сообщения

$rez = "";

// Если поле Имя не заполнено

if (trim ($_POST ["user_name"]) == "")

$rez = "Введите Имя!";

// Если поле Телефон не заполнено

else if (trim ($_POST ["user_tel"]) == "")

$rez = "Введите Телефон!";

else {

//Данные для записи в файл

$info = "Name: ". trim ($_POST ["user_name"]). " Tel: ". trim ($_POST ["user_tel"]);

// Создаем случайное имя файла

$file_name = "". rand (1000000, 9999999). ".txt";

// Сообщение о приеме заявки

$rez = "Заявка принята!";

// Создаем файл для записи

$f = fopen ("./doc/". $file_name, "w");

// Если файл создан

if ($f) {

// Записываем в него данные

fwrite ($f, $info);

// Закрываем файл

fclose ($f);

}

}

//Выводим сообщение на веб-страницу ввиде заголовка

echo "<h1 class='h1_opisan' style='font-size: 35px;'>{$rez}</h1>";

}

}

Далее добавьте функцию «makeTabl()» для обработки заявки заказа в интернет магазине:

//Функция для формирования таблицы товаров

function makeTabl () {

// Подключаемся к MySQL

$db = mysqli_connect (ServerName, UserLogin, UserPassword);

// Если подключение выполнено

if ($db) {

//Выбираем базу данных с проверкой успешного выбора

if (mysqli_select_db ($db, DbName) {

// Указываем использование кодировки UTF-8

mysqli_query ($db, "SET names 'utf8'");

// Запрос для получения остатков товаров

$sql1="SELECT img, naim, SUM(kol) FROM tovar GROUP BY naim ASC";

 

// Выполняем запрос

$rez1 = mysqli_query ($db, $sql1);

// Запрос для получения наименований товаров

$sql2 = "SELECT naim FROM opisan";

// Выполняем запрос

$rez2 = mysqli_query ($db, $sql2);

// Запрос для получения изображения товаров

$sql3 = "SELECT img FROM tovar";

// Выполняем запрос

$rez3 = mysqli_query ($db, $sql3);

// Переменная для вывода тегов на веб-страницу

$out_page = "";

// Перебираем десять строк результата запроса

for ($i=0;$i<10;$i++) {

// Получаем очередную строку из запроса

$row1= mysqli_fetch_array ($rez1);

// Получаем очередную строку из запроса

$row2= mysqli_fetch_array ($rez2);

// Получаем очередную строку из запроса

$row3= mysqli_fetch_array ($rez3);

// Получаем количество

$kol=$row1[2];

// Получаем наименование товара

$naim=$row2[0];

// Получаем изображение

$img=$row3[0];

//Добавляем строку таблицы с двумя ячейками,

// в ячейки помещаем наименование товара и количество

$out_page.="<tr><td><img src= $img></td><td>{$naim}</td><td>{$kol}</td></tr>";

}

// Выводим на страницу браузера

echo $out_page;

}

//Отключаемся от MySQL

mysqli_close ($db);

}

}

?>

Сохраните файл lib.php и перейдите к верстке главной страницы index.php:

В самом начале файла index.php подключите файл lib.php при помощи конструкции однократного включения require_once ' ';

<?php

require_once 'lib.php';

?>

После подключения конструкции однократного включения require_once 'lib.php'; поместите в файл index.php следующий код:

<html>

 

<head>

<title>Кондитерская симпсонов</title>

<meta http-equiv= "Content-Type" content= "text/html" charset= "utf-8" />

 

<!--Подключаем иконку для сайта-->

<link rel= "shortcut icon" href= "img/icon.png" type= "image/x-icon" >

 

<!--Разрешаем поисковым роботам индексировать страницы сайта-->

<meta name= "robots" comtent= "all" />

<link href= "simp.css" rel= "styLesheet" type= "text/css" />

 

<!--Указываем заголовок сайта в списке поисковой системы-->

<meta name= "description" content= "Project Simpson and Company" />

 

<!--Указываем ключевые слова для поисковой системы-->

<meta name= "keywords" content= "Симпсоны,пончики,заказать,кондитерские изделия" />

<script type= "text/javascript" src= "puh.js" ></script>

</head>

Дополните файл index.php следующим кодом:

<body onload="func()">

 

<div id= "top" >

<a href= "index.php" target= "_self" >

<img src= "img/shapka.png" border= "0" id= "img_logo" />

</a>

</div>

 

<div id= "menu" >

<ul>

<li><a class= "buttons" href= 'index.php' target= "_self" >Главная</a></li>

<li><a class= "buttons" href= 'index.php?id=1' target= "_self" >Товары</a></li>

<li><a class= "buttons" href= 'index.php?id=2' target= "_self" >Заказать</a></li>

<li><a class= "buttons" href= 'index.php?id=3' target= "_self" >Контакты</a></li>

</ul>

</div>

 

<div id= "sheet" align= "center" >

<?php

// Получаем и выводим левую боковую часть

getHTML (getIdMenu () + 1)?>

</div>

 

<div id= "main" >

<div id = "cen" >

<?php

// Получаем номер раздела меню

$id_menu = getIdMenu ();

if ($id_menu == 1) { // Если номер: 1 -Товары

// Выводим описание товаров

makeOpisan ();

} else if ($id_menu == 0) { // Если номер: 0 - Главная страница

// Получаем разметку по номеру

getHTML (6);

} else if ($id_menu == 3) { // Если номер: 3 - Контакты

// Получаем разметку по номеру

getHTML (7);

} else if ($id_menu == 2) { // Если номер: 2 - Заказы

// Получаем разметку по номеру

getHTML (8);

//Принимаем данные через POST-запрос

testPost ();

//Получаем разметку верхней части таблицы

getHTML (9);

//Вывод десяти строк таблицы с остатками товаров

makeTabl ();

// Получаем разметку нижней части таблицы

getHTML (10);

}

?>

</div>

</div>

<div id= "sidebar" align = "center" >

<?php

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

getHTML (5);

?>

</div>

<div id= "footer" >

</div>

</body>

</html>

 

После написания главной страницы напишите php – скрипт для работы с товарами интернет магазина. Откройте файл tovar.php и поместите в него следующий код:

<?php

$db = mysqli_connect ("localhost", "root", "");

//возврат количества товаров

function javaKol () {

// Переменная, в которой будет результат остатков

$otvet = "";

 

global $db;

// Запрос для подсчета остатков

$sql = "SELECT naim, SUM(kol) FROM tovar GROUP BY naim ASC";

//Выполним запрос и получим результат:

$rez = mysqli_query ($db,$sql);

// Перебираем десять строк результата запроса

for ($i = 0; $i < 10; $i ++) {

//echo $otvet."\n";

// Получаем очередную строку из запроса

$row = mysqli_fetch_row ($rez);

// Получаем количество

$kol = $row [1];

// Добавляем количество в конец строки

$otvet.= $kol;

// Добавляем разделитель тильда (~)

if ($i!= 9)

$otvet.= "~";

}

// Выводим на страницу браузера

echo $otvet;

}

Дополните Файл tovar.php функцией «getQuery()»:

//Добавление даты на момент изменения данных в БД

function getQuery () {

global $db;

//получаем дату и время на момент записи в бд

$date_time = date ('Y-m-d [H:i:s]');

//перебираем в цикле 10 параметров

for ($i = 1; $i <= 10; $i ++) {

//переменная для имени параметра

$tmp = "tov". $i;

//если такой параметр передан в гет-запросе

if ($_GET [$tmp]) {

//значение текущего параметра-колич товара

$kol = $_GET [$tmp];

//строка запроса

$q = "INSERT INTO tovar (naim, kol, dv)". "VALUES ({$i},{$kol}, '{$date_time}')";

//выполняем запрос

mysqli_query ($db,$q);

}

}

}

Дополните Файл tovar.php функцией «runMySQL()»:

//Выполнение операций с БД

function runMySQL () {

global $db;

//если подключение выполнено

if ($db) {

//выбираем бд с проверкой успешного выбора

if (mysqli_select_db ($db, "sim")or die ("cannot select DB")) {

//указываем кодировку

mysqli_query ($db, "SET names");

//выполняем запрос на добавление

getQuery ();

// возврат количества товаров

javaKol ();

}

//отключаемся

mysqli_close ($db);

}

}

// Если есть данные в гет-запросе

if ($_GET) {

// выполняем проверку формата гет-запроса

//флаг проверки данных

$flag = false;

//цикл, выполняющий 10 шагов

for ($i = 1; $i <= 10; $i ++) {

//переменная для имени параметра

$tmp = "tov". $i;

//если такой параметр передан в гет-запросе

if ($_GET [$tmp]) {

//меняем значение флага

$flag = true;

//прерываем цикл

break;

}

}

//если формат гет-запроса оказался верным

if ($flag) {

runMySQL ();

}

}

?>

 

Поместите прилагающийся изображения в папку «img» проекта, далее опишите стили для интернет-магазина.

Откройте файл simp.css и поместите в него следующий код:

Для полного ознакомления с каждой функцией воспользуйтесь css справочником: http://htmlbook.ru/css

@CHARSET "UTF-8";

/*Отключение отступов от краёв экрана*/

body, table, tr, td, div, ul, li, img, a, h1, th, input, from {

padding: 0px;

vertical-align: top;

margin: 0px;

background-color: #FFE4C4;

}

/*Логотип/шапка интернет магазина*/

#img_logo {

height: 13%;

width: 100%;

background-size: 100% 100%;

background-position: 70% 70%;

background-repeat: no-repeat;

}

/*Меню интернет магазина*/

#menu {

height: 5%;

width: 100%;

text-shadow: 2px 4px 3px rgba(0,0,0,0.3);

background-repeat: repeat;

background-attachment: scroll;

background-position: top left;

background-size: cover;

font-size: 15%px;

}

/*Стиль кнопок меню*/

a .buttons {

display: inline-block;

text-decoration: none;

padding: 0.5em;

outline: none;

border-radius: 5%;

}

/*Стиль неактивных кнопок меню*/

a .buttons:hover {

background-image:

radial-gradient(1% 45% at 0% 50%, rgba(0,0,0,.6), transparent),

radial-gradient(1% 45% at 100% 50%, rgba(0,0,0,.6), transparent);

}

/*Стиль активных кнопок меню*/

a .buttons:active {

background-image:

radial-gradient(45% 45% at 50% 100%, rgba(255,255,255,.9), rgba(255,255,255,0)),

linear-gradient(rgba(255,255,255,.4), rgba(255,255,255,.3));

box-shadow:

inset rgba(162,95,42,.4) 0% 0% 0% 1%,

inset rgba(255,255,255,.9) 0% 0% 1% 3%;

}

/*Стиль списка*/

#menu ul {

list-style: none;

}

/*Стиль списка*/

#menu li {

float: left;

padding-top: 0%;

padding-left: 17%;

}

/*Стиль списка*/

#sheet {

height: 69%;

width: 20%;

background-color: #FFE4C4;

float: left;

}

/*Стиль списка*/

#main {

height: auto;

width: 60%;

background-color: #FFE4C4;

float: left;

padding: 0% 0%;

 

}

 

#cen {

width: 60%;

height: auto;

padding: 0% 25%;

}

 

#sidebar {

height: 69%;

width: 20%;

background-color: #FFE4C4;

background-repeat: repeat;

background-attachment: fixed;

background-position: top left;

float: right;

}

/*Подвал/нижняя картинка интернет магазина*/

#footer {

height: 13%;

width: 100%;

background-image: url('img/podval.png');

background-size: 100% 100%;

background-position: 70% 70%;

background-repeat: no-repeat;

clear: both;

}

/*Стиль блока описания*/

.div_opisan {

text-decoration: none;

font-size: 100%;

font-family: verdana, arial, serif;

font-style: normal;

font-weight: normal;

line-height: auto;

color: black;

width: 100%;

white-space: normal;

text-align: justify;

}

/*Стиль заголовка*/

.h1_opisan {

width: 100%;

text-align: center;

text-decoration: none;

font-size: 100%;

font-family: verdana, arial, serif;

font-style: italic;

text-shadow: 2px 4px 3px rgba(0,0,0,0.3);

}

/*Стиль левого заголовка*/

.left_b h1 {

color: rgba(0,0,0,0.6);

text-shadow: 2px 8px 6px rgba(0,0,0,0.2),

0px -5px 35px rgba(255,255,255,0.3);

}

/*Стиль левого заголовка при наведении на него*/

.left_b h1 :HOVER {

background-color: #666666;

-webkit-background-clip: text;

-moz-background-clip: text;

background-clip: text;

color: transparent;

text-shadow: rgba(255,255,255,0.5) 0px 3px 3px;

}

 

#right_b {

padding-top: 0%;

padding-bottom: 5%;

width: 100%;

}

/*Стиль правого заголовка*/

#right_b h1 {

color: rgba(0,0,0,0.6);

text-shadow: 2px 8px 6px rgba(0,0,0,0.2),

0px -5px 35px rgba(255,255,255,0.3);

}

/*Стиль правого заголовка при наведении на него*/

#right_b h1 :HOVER {

background-color: #666666;

-webkit-background-clip: text;

-moz-background-clip: text;

background-clip: text;

color: transparent;

text-shadow: rgba(255,255,255,0.5) 0px 3px 3px;

}

/*Стиль таблицы*/

#zakaz td, #zakaz th, #zakaz input

{text-shadow: 2px 4px 3px rgba(0,0,0,0.3);

white-space: nowrap;

text-decoration: none;

font-size: 100%;

font-family: ‘Verdana’, sans-serif;

font-style: normal;

line-height: 100%;

color: black;

 

}

/*Стиль шапки таблицы*/

#zakaz th

{

text-shadow: 2px 4px 3px rgba(0,0,0,0.3);

color: #000000;

}

 

/*Стиль таблицы*/

#zakaz td, zakaz th

{

width: 100%;

vertical-align: middle;

text-align: center;

border: black 1% solid;

background-color: #FFE4C0

}

/*Стиль формы заказа товара*/

#zakaz input

{

text-shadow: 2px 4px 3px rgba(0,0,0,0.3);

width: 100%;

height: 135%;

background-color: #FFE4C0;

padding: 3%;

color: black;

}


 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: