
- •Лабораторна робота № 1 Тема: Об’єкти Ajax та сценарії взаємодії з сервером Мета: Оволодіти технологією Ajax та методами створення сценаріїв взаємодії з сервером.
- •Об’єкти Ajax та сценарії взаємодії з сервером
- •Обмін форматизованими даними
- •Використання jQuery для застосування Ajax
- •Завдання до лабораторної роботи
- •Контрольні запитання
- •Лабораторна робота № 2 Тема: рнр як засіб написання сценаріїв. Мета: Оволодіти структурою та основними засобами рнр для написання сценаріїв.
- •Побудова простих рнр програм
- •Передача параметрів між html- та php- сторінками
- •Програмні засоби аутентифікації
- •Завдання до лабораторної роботи
- •Контрольні запитання
- •Лабораторна робота № 3 Тема: Основні функції доступу до бд Мета: Оволодіти основними функціями доступу до бд у php-програмах.
- •Функції доступу рнр до баз даних
- •Завдання до лабораторної роботи
- •Контрольні запитання
- •Список літератури
- •Створення динамічних веб-сторінок на сервері методичні вказівки
Завдання до лабораторної роботи
На веб-сторінці, розробленій в межах лабораторної роботи №1, засобами РНР виконати одне з таких завдань згідно варіанту:
Розобити модулі формування тексту
Розробити програму підрахунку голосів опитування.
Розробити програму занесення даних у багатовимірні масиви
Розробити програму для опрацювання зображення
Розробити бібіліотеку функцій
Створити фрагмент програми для читання файла у хеш
Розробити програму читана та запису даних у файли.
Розробити програму побудови частотного словника тексту
Розробити прототип пошукового сервера
На веб-сторінці, розробленій в межах лабораторної роботи №1, розробити інтерфейс користувача засобами РНР
На веб-сторінці, розробленій в межах лабораторної роботи №1, створити схему програми для гри “хрестики–нулики”.
На веб-сторінці, розробленій в межах лабораторної роботи №1, розробити засоби авторизації
Контрольні запитання
Які типи структур даних використовуються в РНР? Навести приклади.
Які оператори структурного програмування використовуються у РНР? Навести приклади.
Багатовимірні масиви у РНР. Навести приклади.
Переваги та недоліки хеш-масивів у РНР. Навести приклади.
Особливості проектування класів у РНР .
Порівняльний аналіз операторів циклів у РНР.
Яким способом керувати типом змінних в РНР?
Порівняти класи в РНР та іншій мові ООП.
Лабораторна робота № 3 Тема: Основні функції доступу до бд Мета: Оволодіти основними функціями доступу до бд у php-програмах.
Функції доступу рнр до баз даних
Для використання MySQL-сервера баз даних необхідно компілювати php програми з відповідною підтримкою (опція --with-mysql ). Якщо шлях до mysql не вказується, php буде використовувати вбудовані в mysql бібліотеки клієнта. Специфікація шляху до mysql: --with-mysql=/path/to/mysql. Тоді php використовує відповідні бібліотеки.
Доступ до даних MySQL-сервера з РНР-програм реалізується функціями PHP в декілька етапів: 1) з’єднання з сервером баз даних, 2) вибір бази даних, 3) доступ до таблиці, 4) доступ до запису, 5) доступ до елемента стовпчика (поля).
Вправа 1. В такій послідовності розглянемо реалізацію доступу функціями PHP. Для того , щоб вибрати дані, треба спочатку створити базу даних, відповідні таблиці та занести у них записи, що складаються з полів певних форматів.
Створюємо базу даних "my_db":
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
if (mysql_query("CREATE DATABASE my_db",$con))
{ echo "Database created"; }
else
{ echo "Error creating database: " . mysql_error(); }
// Створюєм таблицю
mysql_select_db("my_db", $con);
$sql = "CREATE TABLE Persons
(personID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(personID),
FirstName varchar(15),
LastName varchar(15),
Age int
)";
// виконання запитів
mysql_query($sql,$con);
mysql_close($con);
?>
У представленому фрагменті використано функції: з’єднання з сервером, вибору бази даних, виконання запиту, та закриття з’єднання:
$con = mysql_connect("localhost","peter","abc123")
mysql_select_db("my_db", $con)
mysql_query($sql,$con)
mysql_close($con)
Для виконання запитів програмісту необхідно мати знання мови запитів SQL (у прикладі дві команди створення бази і таблиці виділені). Простий зміст фрагмента вказує, що створена таблиця Persons на три стовпчика : два по 15 символів на імя і прізвище, третій для цілого значення віку.
Наступним прикладом (без команд з поперенього прикладу) демонструється занесення даних у створену таблицю (виділений текст представляє команду мови SQL):
<?php
. . . . . . .
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin',35)");
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Glenn', 'Quagmire',33)");
mysql_close($con);
?>
Головним завданням серверної програми в роботі з базою даних є занесення даних з HTML форми у таблицю. В нижче наведені формі дані вводяться з допомогою тегів input:
<html>
<body>
<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname" />
Lastname: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
Серверна PHP програма наступним кодом заносить надіслані в глобальний масив параметри
<?php
. . . . . . . . . . .
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
?>
Занесені дані при необхідності виводяться у код HTML сторінки. Приклад реалізації виведення даних у таблицю наведено нижче. Як і у попередніх прикладах з’єднання і вибір бази даних пропущено.
<?php
. . . . . . . . . .
$result = mysql_query("SELECT * FROM Persons");
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";
while($row= mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
Наведемо основні функції MySQL-сервера, що підтримують доступ до баз даних з РНР-програм з врахуванням параметрів, які вони приймають та повертають:
int mysql_close ([int link_identifier]) - закриває з’єднання з MySQL-сервером (пов’язаним з іменем користувача). Без вказування link_identifier використовується відносно останнього.
mysql_close() не закриває з’єднань утворених командою mysql_pconnect().
int mysql_connect ([string hostname [:port] [:/path/to/socket] [, string username [, string password]]]) - повертає додатній ідентифікатор з’єднання з MySQL при успіху і повідомлення про помилку при невдачі. mysql_connect() встановлює з’єднанння з MySQL-сервером. При відсутності параметрів за замовчуванням приймаються : host:port = 'localhost:3306', username = назва користувача, що володіє процесом на сервері, password = пусте.
Рядок назви хоста може містити номер порта, тобто "hostname:port" або шлях до сокета, тобто ":/path/to/socket" для локального хосту. Знак '@' перед функцією блокує повідомлення про помилки. Повторний виклик mysql_connect() з тими ж аргументами не утворює нового зв’єднання, а повертає ідентифікатор попереднього з’єднання. З’єднання до сервера закривається по завершенні коду програми або функцією mysql_close().(див. попередній приклад),
int mysql_create_db (string database name [, int link_identifier]) - для створення нової бази даних на сервері для вказаного ідентифікатора з’днанні..
int mysql_data_seek (int result_identifier, int row_number) - переводить вказівник рядка об’єкту виведення на вказаний номер рядка(запису). Функція mysql_fetch_row() поверне вказівник назад. int mysql_db_name (int result, int row [, mixed field]) бере як перший параметр вказівник об’єкту результату (список баз даних) з виклику функції mysql_list_dbs() і повертає назву бази даних на основі порядкового номера. При помилці повертається FALSE . Функції mysql_errno() та mysql_error() подають природу помилок. Наведемо приклад видруку списку баз даних :
int mysql_db_query (string database, string query [, int link_identifier]) виконує запит у базі даних. Якщо ідентифікатор з’єднання не вказано, функція шукає відкрите з’єднання з MySQL-сервером. При відсутності такого зв’язку вона намагається його встановити (аналогічно функції mysql_connect() без аргументів).
int mysql_drop_db (string database_name [, int link_identifier]) знищує базу даних на сервері на основі ідентифікатора з’єднання.
int mysql_errno ([int link_identifier]) повертає номер останньої помилки або 0 , якщо помилки не було. Наведемо приклад:
string mysql_error ([int link_identifier]) повертає текст помилки або пустий рядок, якщо помилки не було:
array mysql_fetch_array (int result [, int result_type]) - повертає масив позначеного рядка (запису) вбо false, якщо рядків більше нема. Функція є розширеною версією функції mysql_fetch_row(). Додатково до розміщення рядка у понумерованих елементах масиву функція розміщує дані в асоційованих індексах, використовуючи назви полів як ключі.
Якщо два і більше стовпчики мають однакову назву полів, останній стовпчик має пріоритет. Доступ до інших стовпчиків з тією ж назвою можливий за індексом стовпчика або його псевдонімом. Необов’язковий другий аргумент result_type у фунції mysql_fetch_array() є константою і приймає наступні хначення : MYSQL_ASSOC, MYSQL_NUM, або MYSQL_BOTH для характеристики типу масиву. Повертає асоційований масив позначеного рядка або false при відсутності рядків. Функція еквівалентна виклику функції mysql_fetch_array() з другим параметром MYSQL_ASSOC. Повертає асоційований масив. Для отримання числових індексів та асоційованих ключів треба використовувати функцію mysql_fetch_array().
object mysql_fetch_field (int result [, int field_offset]) - повертає об’єкт з інформацією про поля, назви яких містить запит. Якщо не задано зміщення розташування (порядок) поля, видається наступне ще не видане даною функцією.