Лекція 14
Тема: Робота з засобами РНР. Проектування БД для використання в Web
План
Вступ
Використання PHP.
Вбудова PHP в HTML.
Додавання динамічного вмісту.
Доступ до змінних форми.
1. Вступ
Мова PHP
PHP - це мова обробки гіпертексту (HTML), використовується на стороні сервера (server side scripting language), конструкції якого вставляються в HTML-текст. В 2003 році вийшла версія PHP 5.0 на базі машини Zend Engine 2 (фірма Zend Technologies Ltd), що дає можливості для створення повномасштабних додатків, починаючи з п'ятої версії її можна називати об’єктно-орієнтованою. PHP є відкритим програмним продуктом, що означає його безкоштовність і можливість створювати свої власні розширення мови.
Мова PHP використовується приблизно на 52% з 14,5 мільйонів сайтів, що працюють під Apache, що у свою чергу є найпоширенішою в Інтернеті (за різними оцінками близько 70%), популярність якої швидко росте.
PHP є наймолодшою, перспективною і швидкою у розвитку з мов програмування для Інтернет, частка її використання в порівнянні з іншими мовами швидко росте. Її основні переваги: широка підтримка різних технологій, сумісність із серверами, базами даних, простота й безкоштовність.
PHP дозволяє відокремити HTML-текст від виконуваної частини, за рахунок чого можна домогтися значного зниження витрат часу на розробку проекту. У багатьох випадках вдається відокремити програмну частину проекту від розробки сторінок на HTML, що полегшує завдання й дизайнерові, і програмістові. Майже завжди виявляється, що швидкість просування проектів, створюваних на PHP буде вище, ніж при використанні інших мов програмування.
Можливості PHP
підтримувані технології: платформи Win32 (9x/NT/2000/XP), UNIX, OS/2, QNX, MacOS, BeOS, OCX;
сумісність із серверами: Apache (Win32, UNIX), phttpd, fhttpd, thttpd, ISAPI(Zeus, IIS), NSAPI, Roxen/Caudium, AOLServer;
підтримка технологій COM, XML, Java, CORBA, WDDX, Macromedia Flash;
розвинена функціональність для роботи з мережними з'єднаннями;
підтримує понад 20 баз даних і має розвинену функціональність для роботи з ними;
можливість створення повноцінних об’єктно-орієнтованих додатків;
порівняно простий синтаксис і зручність у практичному використанні;
безкоштовність;
відкритість коду, завдяки якій можна створювати власні розширення мови
MySQL – це одна із най популярніших і найпоширеніших СУБД (система управління базами даних) в Інтернеті. Вона не призначена для роботи з великими обсягами інформації, але її застосування ідеальне для Інтернет сайтів, як невеликих, так і досить великих.
MySQL відрізняється гарною швидкістю роботи, надійністю, гнучкістю. Робота з нею, як правило, не викликає великих труднощів. Підтримка сервера MySQL автоматично включається в поставку PHP.
Немаловажним фактором є її безкоштовність. MySQL поширюється на умовах загальної ліцензії GNU (GPL, GNU Public License).
Раніше для довгострокового зберігання інформації працювали з файлами: поміщали в них деяку кількість рядків, а потім витягали їх для наступної роботи. Завдання тривалого зберігання інформації дуже часто зустрічається в програмуванні Web-додатків: підрахунок відвідувачів у лічильнику, зберігання повідомлень у форумі, вилучене керування змістом інформації на сайті й т.д.
Тим часом, професійні прийоми роботи з файлами дуже трудомісткі: необхідно піклуватися про розміщення в них інформації, про її сортування, добування, при цьому не потрібно забувати, що всі ці дії будуть відбуватися на сервері хост-провайдера. При цьому, обсяг коду значно зростає, і зробити помилку в програмі дуже просто.
Всі ці проблеми вирішує використання бази даних. Бази даних самі піклуються про безпеку інформації і її сортування й дозволяють витягати й розміщати інформацію за допомогою одного рядка. Код з використанням бази даних виходить більше компактним, і налагоджувати його набагато легше.
Однією із причин популярності сервера баз даних MySQL, поряд з його доступністю й продуктивністю, можна вважати його інтеграцію з PHP. При цьому продуктивність зв'язки PHP, Apache й MySQL у більшості випадків можна вважати однією з найвищих у порівнянні з іншими рішеннями. Стандартна зборка PHP майже завжди містить у собі бібліотеки для роботи з MySQL, надаючи розроблювачам всі необхідні інструменти для взаємодії із сервером баз даних. Функції для роботи з MySQL, які доступні при написанні проектів з використанням PHP, вирішують головні завдання, що виникають при необхідності звертання до бази даних зі сценарію PHP - з'єднання із сервером баз даних, передача йому запиту й добування результатів, які повернув сервер.
Перед тим як ми одержимо можливість працювати з інформацією, збереженою в базі даних, необхідно встановити з'єднання із сервером баз даних. Для цього призначені 2 функції PHP, що майже нічим не відрізняються за результатами дії: mysql_pconnect() і mysql_connect(). Єдина відмінність цих функцій полягає в тому, що перша з них встановлює постійне з'єднання із сервером баз даних, що залишається відкритим навіть після того, як ваш сценарій буде виконаний, і його неможливо буде закрити навіть функцією mysql_close(). Коли у вашому PHP-сценарії запускається функція mysql_pconnect(), вона попередньо перевірить, чи немає відкритого раніше постійного з'єднання, і якщо воно є, то відкривати нове вона вже не буде. Подібний підхід заощаджує час і знімає навантаження із сервера баз даних.
Для від'єднання від сервера баз даних існує функція mysql_close(), але, як правило, у її використанні немає необхідності. Якщо було встановлено постійне з'єднання, то команда на закриття його буде зігнорована, а у випадку використання функції mysql_connect() з'єднання буде розірвано по закінченні роботи PHP-сценарієм.
PHP (англ. PHP: HypertextPreprocessor— «PHP: препроцесоргіпертексту», англ. PersonalHomePageTools — «Інструменти для створення персональних веб-сторінок») — мова програмування, створена для генерування HTML-сторінок на веб-сервері і роботи з базами даних. У даний час підтримується переважною більшістю хостинг-провайдерів. Входить в LAMP — «стандартний» набір для створення веб-сайтів (Linux, Apache, MySQL, PHP (Python або Perl)).
Група розроблювачів PHP складається з великої кількості людей, що добровільно працюють над ядром і розширеннями PHP і суміжними проектами, такими як PEAR або документація мови.
В області програмування для Мережі, PHP — одна з най популярніших скриптових мов (поряд з JSP, Perl і мовами, використовуваними в ASP.NET) завдяки своїй простоті, швидкості виконання, багатій функціональності й поширенню вихідних кодів на основі ліцензії PHP. PHP відрізняється наявністю ядра й модулів, що підключають, «розширень»: для роботи з базами даних, сокетами, динамічною графікою, криптографічними бібліотеками, документами формату PDF і т.п. Будь-хто бажаючий може розробити своє власне розширення й підключити його. Існують сотні розширень, однак у стандартну поставку входить лише кілька десятків, що добре зарекомендували себе. Інтерпретатор PHP підключається до веб-серверу або через модуль, створений спеціально для цього сервера (наприклад, для Apache або IIS), або як CGI-додаток.
Крім цього, він може використовуватися для рішення адміністративних завдань в операційних системах UNIX, GNU/Linux, Microsoft Windows, Mac OS X і AmigaOS. Однак у такій якості він не одержав поширення, віддаючи перевагу Perl, Python і VBScript.
У цей час PHP використовується сотнями тисяч розроблювачів. Порядку 20 мільйонів сайтів повідомляють про роботу з PHP, що становить більше п'ятої частки доменів Інтернету.
Один з найпоширеніших додатків будь-якої мови створення серверних сценаріїв - обробка HTML-форм. Вивчення PHP почнемо з реалізації форми замовлення для вигаданої компанії із продажу компакт дисків. Всі вихідні коди наведені нижче.
Приклад 1: Форма замовлення.
У цей час програміст якоїсь компанії із продажу CD займається створенням форми для їхнього продажу. Вона показана на рисунку 1. Це проста форма, на відміну від багатьох інших, котрими часто користуються власники віртуальних магазинів і т.п. Насамперед, директор нашої вигаданої фірми, хотів би знати, що замовили його клієнти, обчислити загальну суму замовлення й можливо податок із продажів, що буде потрібно сплатити по виконанню замовлення.
Вихідний html-код нашого замовлення:
<html>
<head>
<title>Форма замовлення</title>
</head>
<body>
<h1>Продаж CD</h1>
<h2>Форма замовлення:</h2>
<form action="cd.php" method=post>
<table border=0>
<tr bgcolor=#cccccc>
<td width=150>Товар</td>
<td width=15>Кількість</td>
</tr>
<tr>
<td>CD-R</td>
<td align=center><input type="text" name="cdr" size=3 maxlength=3></td>
</tr>
<tr>
<td>CD-RW</td>
<td align=center><input type="text" name="cdrw" size=3 maxlength=3></td>
</tr>
<tr>
<td>Футляри для CD</td>
<td align=center><input type="text" name="fut" size=3 maxlength=3></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="Зробити замовлення"></td>
</tr>
</table>
</form>
</body>
</html>
Результат:

Рисунок 1 - Форма замовлення
По-перше, дії, що виконуються формою, привласнене ім'я PHP-сценарію, що буде обробляти замовлення клієнта. У загальному випадку значенням атрибута ACTION є URL-адреса, що буде завантажуватися при натисканні користувачем у форму й буде відправлятися по цій URL-адресі з використанням методу, зазначеного в атрибуті METHOD: або GET (дані приєднуються в кінець URL-адреси), або POST (дані відправляються у вигляді окремого пакета).
По-друге, варто звернути увагу на імена полів форми - cdr, cdrw й fut. Ці імена будуть знову використовуватися в PHP-сценарії. Тому полям форми важливо привласнювати осмислені імена, які легко запам'ятати при написанні PHP-сценарію.
Приклад 2: Обробка форми
Для обробки форми буде потрібно створити сценарій, згаданий в атрибуті ACTION дескриптора FORM і названий cd.php. У текстовому редакторі створюємо цей файл. Для цього вводимо наступний html-код:
<html>
<head>
<title>Замовлення CD. Результати замовлення</title>
</head>
<body>
<h1>Продаж CD</h1>
<h2>Результати замовлення:</h2>
</body>
</html>
Це все є звичайним HTML-текстом. Додамо в сценарій PHP-код.
Під заголовком <h2> файлу вводимо наступні рядки:
<?
echo "Замовлення оброблене.";
?>
Збережемо файл і завантажимо його у свій браузер, потім заповнимо форму й натиснемо кнопку "Відправити". На екрані повинне відобразитися щось схоже на зображення, показане на мал. 2..

Малюнок 2. Результати замовлення
Зверніть увагу, як написаний PHP-код вбудовується у звичайний HTML-файл. У браузері ви повинні побачити наступні рядки коду:
<html>
<head>
<title> Замовлення CD. Результати замовлення </title>
</head>
<body>
<h1>Продаж CD</h1>
<h2>Результати замовлення:</h2>
<p> Замовлення оброблене </p>
</body>
</html>
Рядків PHP-коду не видно. Це відбувається тому, що інтерпретатор PHP переглянув сценарій і замінив його рядками виводу. Отже, із середовища PHP можна створити чистий код HTML, придатний для перегляду в будь-якому браузері - інакше кажучи, браузер, що застосовується користувачем не обов'язково повинен розуміти PHP.
Тепер код у розглянутому файлі складається із чотирьох частин:
HTML;
Дескриптори PHP;
Оператори PHP;
Пробіли.
У нього можна додати також ще одну частину:
Коментарі.
Більшість рядків у наведеному прикладі - усього лише простий HTML-код.
4. Додавання динамічного вмісту
Дотепер ми не використовували PHP для виконання яких-небудь дій, які не можна було б реалізувати за допомогою звичайного html.
Розглянемо простий приклад. Замінимо PHP-код у файлі cd.php на наступний код:
<?
echo "Ваше замовлення було прийнято в ";
echo date("H:i, j F");
echo "<br>";
?>
У цьому коді убудована PHP-функція date() використовується для повідомлення клієнтові дати й часу обробки замовлення. Це значення буде змінюватися при кожнім виконанні сценарію. Вивід, отриманий у результаті одного такого виконання сценарію показаний на рисунку 3.

Рисунок 3. Виведення дати й часу
Виклик функції
Поглянемо на виклик функції date(). Це загальна форма виклику функції. PHP має велику бібліотеку функцій, які можна використовувати при розробці web-додатків. Виклик функції: date("H:i, j F").
Зверніть увагу, що переданий функції рядок укладений у круглі дужки. Це значення називається аргументом, або параметром функції.
Функція date()
Аргумент, переданий у функцію date(), повинен бути рядком формату, що задає необхідний стиль виводу. Кожна буква в рядку представляє частину рядка дати й часу. Н представляє години в 12-годинному форматі, i - хвилини із провідним нулем, коли потрібно, j - день місяця без провідного нуля, S представляє звичайний суфікс, а F - рік, представлений чотирма цифрами.
Весь зміст використання форми замовлення полягає в одержанні інформації про замовлення клієнта. Одержання докладної інформації про те, що ввів клієнт, реалізується в PHP дуже просто.
Усередині PHP-сценарію до кожного з полів форми можна одержати доступ як до змінної, що має те ж ім'я, що й у поля форми. Розглянемо приклад.
Додамо наступні рядки в нижню частину PHP-сценарію:
echo "<p>Ваше замовлення було таким:";
echo "<br>";
echo $cdr." CDR-диск(ов)<br>";