Распечатать страницу
Главная \ База готовых работ \ Готовые работы по компьютерным дисциплинам \ WEB-программирование \ 3749. Лекція №9, Розробка програм з використанням серверних скриптів

Лекція №9, Розробка програм з використанням серверних скриптів

« Назад

Код роботи: 3749

Вид роботи: Лекція

Предмет: Web-програмування

Тема: №9, Розробка програм з використанням серверних скриптів

Кількість сторінок: 12

Дата виконання: 2015

Мова написання: українська

Ціна: безкоштовно

Написання скриптів з використанням РНР. Підключення баз даних.

База Даних (БД) - структурований організований набір даних, що описують характеристики яких-небудь фізичних або віртуальних систем. «Базою даних» часто спрощено або помилково називають Системи Управління(керування) Базами Даних (СУБД). Потрібно розрізняти набір даних (власне БД) і програмне забезпечення, призначене для організації і ведення бази даних (СУБД).

Організація структури БД формується виходячи з таких міркувань: Адекватність описуваному об'єкту/системі - на рівні концептуальної і логічної моделі. Зручність використання для ведення обліку і аналізу даних - на рівні так званої фізичної моделі.

Види концептуальних (інфологічних) моделей БД: «суть-зв'язок», семантичні, графи

Види логічних (даталогічних) моделей БД:

Документальні (архіви) - орієнтовані на формат документа, дескрипторні, тезаурусні.

Фактографічні (картотеки)

Теоретико-графові: ієрархічна модель, мережева модель.

Теоретико-множинні: реляційна модель (er-модель), багатовимірна модель.

Об'єктно-орієнтовані: об'єктна модель.

Засновані на інвертованих файлах.

Таким чином, по моделі представлення даних БД класифікуються:

• Картотеки

• Мережеві

• Ієрархічні

• Реляційні

• Багатовимірні

• Об'єктно-орієнтовані

• Дедуктивні

На рівні фізичної моделі електронна БД є файлом або їх набором у форматі TXT, CSV, Excel, DBF, XML або в спеціалізованому форматі конкретної СУБД. Також в СУБД в поняття фізичної моделі включають спеціалізовані віртуальні поняття, що існують в її рамках, - таблиця, табличний простір, сегмент, куб, кластер і так далі

В даний час найбільшого поширення набули реляційні бази даних.

Картотеками користувалися до появи електронних баз даних. Мережеві і ієрархічні бази даних вважаються за застарілі, об'єктно-орієнтовані поки ніяк не стандартизовані і не набули широкого поширення. Деяке відродження отримали ієрархічні бази даних у зв'язку з появою і розповсюдженням XML.

Поняття реляційний (англ. relation - відношення) пов'язано з розробками відомого англійського фахівця в області систем баз даних Едгара Кодда (Edgar Codd).

Ці моделі характеризуються простотою структури даних, зручним для користувача табличним уявленням і можливістю використання формального апарату алгебри стосунків і реляційного числення для обробки даних.

Реляційна модель орієнтована на організацію даних у вигляді двовимірних таблиць. Кожна реляційна таблиця є двовимірним масивом і володіє наступними властивостями:

• кожен елемент таблиці - один елемент даних

• всі стовпці в таблиці однорідні, тобто всі елементи в стовпці мають однаковий тип (числовий, символьний і т. д.)

• кожен стовпець має унікальне ім'я

• однакові рядки в таблиці відсутні

• порядок проходження рядків і стовпців може бути довільним

Найбільш часто для розрообки веб сторінок використовується MySQL (ver 4.x; 5.x;6.0b).

MYSQL ( сленг. «мускул»)[1] - вільна система управління базами даних (СУБД). MYSQL є власністю компанії Sun Microsystems, що здійснює розробку і підтримку додатку. Розповсюджується під GNU General Public License і під власною комерційною ліцензією, на вибір. Окрім цього компанія MYSQL AB розробляє функціональність за замовленням ліцензійних користувачів, саме завдяки такому замовленню майже в найраніших версіях з'явився механізм реплікації.

Перше, що потрібне для створення динамічних сторіночок - база даних, де зберігатиметься вся інформація. Хочете мати можливість проглядати вміст таблиць баз даних, робити вибірки, додавати або оновлювати дані. Все це можна робити за допомогою вбудованих функцій в РНР для роботи з базами даних.

Для початку роботи у нас повинна бути встановлена база POSTGRESQL або MYSQL. Рекомендується остання, оскільки вона працює під Unix і Windows, стабільніша, швидка і стійка до помилок. Ще раз сформулюємо наше завдання: освоїти приєднання до сервера бази даних, створення і виконання SQL запитів, а також роботу з помилками. Без знання цих дій ми навряд чи зможемо без проблем управлятися з базою даних.

Отже, приступимо. До речі, далі по тексту я використовуватиму MYSQL на увазі викладених вище за причини (хоча з POSTGRESQL всі дії схожі, треба лише поміняти префікс mysql_ на pg_).

Створимо базу даних телефонних номерів співробітників вашої фірми для наших тестів:

shell>mysql -u root

mysql> create database basa;

Query OK, 1 row affected (0.00 sec)

mysql> use basa;

Database changed

mysql> CREATE TABLE phone (

-> id int(10) NOT NULL auto_increment,

> name varchar(32) NOT NULL

> phone varchar(32) NOT NULL

> PRIMARY KEY (id)

> );

Query OK, 0 rows affected (0.00 sec)

mysql>exit

Bye

Або використовуйте файл з архіву basa.sql, помістіть його в каталог MYSQL і зробіть так:

shell>mysql -u root < basa.sql

А зараз напишемо скрипт view.php, який показуватиме дані з бази даних.

<?

/* Замініть нижченаведені змінні на свої */

$host = "localhost"; // MYSQL server

$user_db = "root"; // MYSQL користувач

$pass_db = ""; // MYSQL пароль

$dbase = "basa"; // MYSQL база даних

$dtable = "phone"; // Таблиця в базі даних

/* З'єднання з сервером бази даних */

mysql_connect ("$host", "$user_db", "$pass_db");

/* Вибір бази даних */

mysql_select_db("$dbase");

/* Створення SQL запиту */

$sql = "SELECT * FROM $dtable";

/* Виконання SQL запиту */

$result = mysql_query($sql);

/* Перевірка кількості строчок, що повернулися, в результате*/

$rows = mysql_num_rows($result);

/* Якщо немає результату або результат менше 1,

то попередити нас про це або вивести результат*/

if ((!$rows) || ($rows < 1)) {

echo "Результатів НЕМАЄ!!!";

} else {echo '<table width="309" border="1" cellspacing="1"

cellpadding="0">

<tr>

<td width="30">ID</td>

<td width="166">Имя</td>

<td width="98">Телефон</td>

</tr>';

while($row = mysql_fetch_array($result)){$id = $row["id"];

$name = $row["name"];

$phone = $row["phone"];

echo "<tr>

<td width="30">$id</td>

<td width="166">$name</td>

<td width="98">$phone</td>

</tr>";

}

}

При запуску цього скрипта ми одержимо сторіночку з текстом "Результатів НЕМАЄ!!!", оскільки в базі даних ці самі дані відсутні. Що робити? Перейти до наступного розділу і навчитися додавати дані з форм!

Передача даних з форми в базу даних

Створимо одну сторіночку під назвою forma.html з HTML формою і скрипт add.html, який оброблятиме дані з цієї форми.

Сторіночка forma.html:

<html>

<head>

<title>Добавлення даних в базу даних</title>

</head>

<body bgcolor="#FFFFFF">

<form name="test" action="add.php" >

<table cellspacing="2" cellpadding="2" border="0">

<tr>

<td>Імя</td>

<td><input type="text" name="name"></td>

</tr>

<tr>

<td>Телефон</td>

<td><input type="text" name="phone"></td>

</tr>

</table>

<input type="submit" name="submit" value="Добавити">

</form>

</body>

</html>

Скрипт add.php:

<?

/* Замініть нижченаведені змінні на свої */

$host = "localhost"; // MYSQL server

$user_db = "root"; // MYSQL користувач

$pass_db = ""; // MYSQL пароль

$dbase = "basa"; // MYSQL база даних

$dtable = "phone"; // Таблиця в базі даних

/* З'єднання з сервером бази даних */

mysql_connect ("$host", "$user_db", "$pass_db");

/* Вибір бази даних */

mysql_select_db("$dbase");

/* Увага!!! Якщо Ви працюєте під Windows,

то зніміть коментар з наступних рядків */

// $name = $HTTP_GET_VARS["name"];

// $phone = $HTTP_GET_VARS["phone"];

// Основні дії скрипта

// Створення SQL запиту

$sql = "INSERT INTO $dtable (id,name,phone) ";

$sql.= "VALUES ('','$name','$phone')";

/* Виконання SQL запиту */

$result = mysql_query($sql);

// Перевірка виконання операції

if(!$result){ echo "<H2>Помилка!</H2>n";

echo mysql_errno().": ".mysql_error()."<P>";

} else {

print "<META HTTP-EQUIV="Refresh" CONTENT="2; URL=forma.html">";

echo "Запис <b>$name - $phone</b> створена!";

//echo phpinfo();

}Як бачите, дані з форми (поля name і phone) РНР розуміє як змінні. І ці змінні дуже легко можна додати в базу даних. Тепер при прогляданні сторіночки view.phр Ви побачите те, що власноручно внесли.

Дані можна обробляти скриптом, а також як частина URL. Наприклад: http://localhost/add.phр?name=SomeName&phone=263962 додасть в базу даних ім'я Student з телефоном 263962.

Дати

PHP є цілий набір зручних функцій для виведення дат і часу, а також для різних перетворень даних про час і дату.

Для того, щоб відобразити в певному форматі дату і час, скористайтеся функцією date(). Для неї потрібно задати два аргументи: опис формату висновку дати і вказівка того моменту часу, інформацію про яке Ви хочете вивести. Вказівка на момент часу дається у формі "число секунд з початку 1970 року". (Якщо Ви хочете вивести поточний час, Ви можете скористатися функцією time(), яка повертає значення поточного часу.) Функція date() має масу опцій форматування, таких же як у функції strftime() у C або у функції POSIX::strftime() у Perl.

$birthday_stamp = mktime(19,45,0,3,10,1975);

$birthday_formatted = date('F d, Y - g:i a',$birthday_stamp);

echo "Давид народився $birthday_formatted."

дає

Давид народився March 10, 1975--7:45 p.m.

Звичайно, якщо Ви маєте на увазі конкретну дату, хитрі функції форматування не потрібні, оскільки Ви наперед точно знаєте як повинен виглядати текст, що виводиться. Ці функції потрібні, наприклад, у тому випадку, коли Ви виводите частину інформації із заповненої користувачем форми, в якій користувач повинен був ввести дату:

<SELECT NAME="when">

$d = time();

for ($i = 0; $i < 10; $i++) {echo '<OPTION VALUE="'.$d.'">'.date('F d',$d);

$d += 86400;

</SELECT>

Цей шматок коду служить для висновку на екран списку вибору, що включає 10 варіантів відповіді -- сьогодні і кожний з подальших 9 днів. До почала виконання циклу ми зберігаємо поточний час в змінній $d. У кожному варіанті вибору, що задається рядком <OPTION>, значення "value" встановлюється рівним відповідній тимчасовій відмітці у форматі Unix, а на екран виводиться місяць і день ("July 27", "July 28", і так далі.) Після виведення кожної дати (кожного рядка <OPTION>), значення $d збільшується на 86,400 (стільки секунд в добі -- 24 години * 60 хвилин * 60 секунд).

Застосовуючи функції mktime() і date() Ви можете сформувати і вивести будь-яку інформацію, похідну від введеної користувачем дати.

Cookies

Установка і прочитування cookies в PHP - це, можна сказати, подарунок долі! Ми не хочемо займатися тут агітацією на користь cookie, але не можна не сказати, що це дуже зручний інструмент.

Для створення і модифікації значення cookie використовується функція PHP setcookie(). Функція setcookie() сприймає до шести аргументів, залежно від того, як Ви збираєтеся управляти значеннями cookie і хто прочитуватиме її значення.

Простий спосіб встановити cookie такий:

setcookie('name', 'bret');

Потім, для кожної подальшої сторінки на Вашому сайті, що переглядається протягом даної сесії (поки користувач не покине сайт) змінна $name матиме значення 'bret' і його можна легко прочитати засобами PHP. Цей тип cookie відомий як cookie-сесія, оскільки значення зберігається протягом призначеної для користувача сесії.

Якщо Ви хочете, щоб значення cookie запам'ятовувалося brauzerom після того, як користувач закінчить сесію, Ви повинні передати функції setcookie() третій параметр - дату закінчення терміну дії cookie. Оскільки PHP сформувався в основному в середовищі Unix, Ви повинні представити час закінчення терміну дії cookie як число секунд, що пройшли з 1 січня 1970 р. Якщо Ви маєте досвід програмування для Unix, це не здасться Вам дивовижним. Але, якщо Ви програмували тільки в середовищі Windows або Macintosh, Ви, можливо, здивуйтеся, що за цокнутий народ ці Unix-оиды.

Але не бійтеся. PHP має дуже зручну функцію, mktime(). Ви указуєте їй як параметри (у вказаному порядку) годину, хвилину, секунду, місяць, день і рік, задаючі той момент часу, який Ви хочете представити в сприйманому UNIX форматі, і mktime() повертає Вам число секунд, що пройшли з 1 січня 1970 р. до вказаного моменту часу. Наприклад, якщо Ви хочете, щоб термін дії cookie закінчився 1 січня 2000 р., Ви записуєте:

$y2k = mktime(0,0,0,1,1,2000);

setcookie('name', 'bret' $y2k);

Якщо Ви хочете зрадити значення cookie на нове, Ви можете просто переписати його (її?) значення. Таким чином, навіть якщо brauzer вже посилав значення cookie серверу на одній з попередніх сторінок, цілком можливо повідомити сервер, що насправді Вас звуть "jeff."

$y2k = mktime(0,0,0,1,1,2000);

setcookie('name', 'jeff' $y2k);

Зверніть увагу на те, що при цьому не міняється значення змінної $name. Воно встановлюється при завантаженні сторінки. Якщо Ви хочете щоб значення змінної змінювалося синхронно із зміною значення cookie, Ви повинні зрадити код таким чином:

$name = 'jeff';

$y2k = mktime(0,0,0,1,1,2000);

setcookie('name' $name, $y2k);

Наступні два параметри функції setcookie() дозволяють Вам задати шлях і ім'я домена того, хто може прочитати значення Вашого cookie. За умовчанням тільки сторінки, розташовані в тому ж каталозі або нижч0435 в структурі підкаталогів того сервера, який встановив cookie, можуть прочитати його (її??) значення. Це робиться з міркувань безпеки. Проте, якщо у Вашого сервера два доменні імена: "www.domain.com" і "other.domain.com", і Ваш ekaunt дозволяє Вам обслуговувати сторінки з каталога ~/myhome, Ви повинні викликати функцію setcookie() таким чином:

 

setcookie('name', 'jeff' $y2k, '~/myhome' '.domain.com');

Останній параметр функції setcookie(), який ми ніколи не використовували, вимагає, щоб значення cookie передавалося тільки на ті Web-сервера, які yspol'uyut безпечний протокол з'єднання, такий як SSL. Якщо Вам це потрібне, то задайте для шостого параметра значення 1.

Видалити cookie теж дуже просто, досить передати функції setcookie() ім'я cookie і PHP зробить все інше:

setcookie('name');

На закінчення потрібно зробити ще одне зауваження, що стосується використання cookie. Через те, яка організована обробка cookies в протоколі HTTP, необхідно встановити значення всіх cookie до виведення якого-небудь тексту. Якщо зробити навпаки, PHP видасть Вам попередження і значення cookie не буде послане. От так правильно:

setcookie('name', 'jeff');

echo "Hello Everyone!";

А так - ні:

echo "Hello Everyone!";

setcookie('name', 'jeff').