Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Met_lab_PIZ_2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
318.98 Кб
Скачать
  1. Завдання до лабораторної роботи

  1. На веб-сторінці, розробленій в межах лабораторної роботи №1, засобами РНР виконати одне з таких завдань згідно варіанту:

    1. Розобити модулі формування тексту

    2. Розробити програму підрахунку голосів опитування.

    3. Розробити програму занесення даних у багатовимірні масиви

    4. Розробити програму для опрацювання зображення

    5. Розробити бібіліотеку функцій

    6. Створити фрагмент програми для читання файла у хеш

    7. Розробити програму читана та запису даних у файли.

    8. Розробити програму побудови частотного словника тексту

    9. Розробити прототип пошукового сервера

  2. На веб-сторінці, розробленій в межах лабораторної роботи №1, розробити інтерфейс користувача засобами РНР

  3. На веб-сторінці, розробленій в межах лабораторної роботи №1, створити схему програми для гри “хрестики–нулики”.

  4. На веб-сторінці, розробленій в межах лабораторної роботи №1, розробити засоби авторизації

  1. Контрольні запитання

  1. Які типи структур даних використовуються в РНР? Навести приклади.

  2. Які оператори структурного програмування використовуються у РНР? Навести приклади.

  3. Багатовимірні масиви у РНР. Навести приклади.

  4. Переваги та недоліки хеш-масивів у РНР. Навести приклади.

  5. Особливості проектування класів у РНР .

  6. Порівняльний аналіз операторів циклів у РНР.

  7. Яким способом керувати типом змінних в РНР?

  8. Порівняти класи в РНР та іншій мові ООП.

Лабораторна робота № 3 Тема: Основні функції доступу до бд Мета: Оволодіти основними функціями доступу до бд у php-програмах.

  1. Функції доступу рнр до баз даних

Для використання 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]) - повертає об’єкт з інформацією про поля, назви яких містить запит. Якщо не задано зміщення розташування (порядок) поля, видається наступне ще не видане даною функцією.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]