Лабораторна робота №10, Доступ до даних через web-інтерфейс
Код роботи: 1226
Вид роботи: Лабораторна робота
Предмет: Сучасні інтернет-технології
Тема: №10, Доступ до даних через web-інтерфейс
Кількість сторінок: 1
Дата виконання: 2016
Мова написання: українська
Ціна: 150 грн
Хід роботи
Завдання 1. Створіть php-файл, який назвіть user.php. Він повинен мати наступну структуру:
код для підключення до бази даних (лістинг 1);
код для видалення запису в базі даних (чому код для видалення перебуває до висновку ми обговоримо пізніше) (лістинг 5);
форма для введення значень у базу даних (лістинг 2);
код для додавання запису в базі даних (лістинг 3);
код для висновку значень на екран (лістинг 4);
Завдання 2. Підключення бази даних
Для того, щоб додавати інформацію в базу даних необхідно спочатку сторінки (наприклад, після тегу < body > додати наступні рядки php -коду:
Лістинг №1
Перший рядок за допомогою функції mysql _ connect () створює об'єктну змінну $db. Функція має два параметри ім'я «хоста» де розташовується база даних, а другий ім'я користувача, що має право на з'єднання з базою ( root – це користувач створюваний системою, що й має максимальні права). У другому рядку відбувається підключення до конкретної бази даних.
Наведені рядки будуть коректно працювати на локальному комп'ютері, якщо у вас установлений Denver, але при спробі перенести ваш сервіс на вилучений сервер відбудеться помилка, адже там база буде розташовуватися в іншому місці, права користувача також набудовує адміністратор і він вам не дасть прав адміністратора, виходить, ці два рядки прийде міняти. Причому міняти у всіх php -файлах даних, що використовують підключення до бази. Має сенс винести ці чотири рядки в окремий файл, назвати його connect.php а в основному php -файлі зробити посилання:
<? include ("connect.php"); ?>
Це не помилка, для файлу, що зберігає підключення до бази даних краще використовувати розширення php. Уся справа в тому, що якщо ви використовуєте розширення .inc, браузер буде сприймати його як текстовий файл і якщо зловмисник набере в рядку адреси connect.inc він одержить ім'я бази даних і паролі до неї. Уміст php - файлу, буде приховано, сервер у відповідь на запит згенерує порожню html - сторінку.
Завдання 3. Створення форми для введення даних
Для того, щоб ми могли заповнювати дані необхідно створити форму (лістинг 2).
Лістинг №2
Як видне з коду, дані вводяться в п'ять полів і при натисканні на кнопку «додати» змінні форми передаються в той же самий файл user. php .
Завдання 4. Додавання даних у таблицю
Лістинг №3
Змінна «add» буде передана у файл user.php разом з іншими змінними і якщо це відбудеться, виконується чотири дії:
З форми будуть витягнуті всі змінні (у наведеному фрагменті вони передавалися методом GET).
Створюється строкова змінна $sql_add, що містить sqlпзапит. У ньому замість значень полів використовуються імена витягнутих змінних, у яких зберігається ім'я користувача, логін і т.д.. Кожна змінна взята в апострофи.
За допомогою функції mysql_query() виконується sqlпзапит. Аргументом цієї функції є рядок із запитом.
Друкується повідомлення про додавання нового користувача.
Завдання 5. Висновок даних з таблиці на екран
Передоповімо, що ми прагнемо вивести на екран список зареєстрованих користувачів. При цьому нам не потрібно, виводити персональну інформацію, логін, пароль, досить тільки імені й електронної адреси. Для висновку даних можна використовувати наступний код (лістинг 4).
Лістинг №4
Наведений фрагмент самий складний. Для більш легкого сприйняття ми розбили його на три частини.
У першій частині створюється текстова змінна $sql_select, у якій формується sqlпзапит на вибірку даних із сортуванням по полю «user_name». Зверніть увагу, в sqlрзапиті перераховані не всі, а тільки три поля, які нас цікавлять у вибірці. Після функція mysql_query() виконує цей запит, і результат затягає в змінну $result. Можна уявити собі, що в цій змінній зберігається не одне значення, а таблиця значень!
Рис. 1 - Схема витягу даних з таблиці
У другій частині за допомогою функцій mysql _ num _ rows () уважається кількість записів витягнутих з таблиці. Аргументом функції є змінна $result . Отриманий результат виводиться на екран.
У третій частині обрані дані виводяться на екран. Для цього змінна $result розбивається на рядки. Кожний рядок містить дані про один запис таблиці. Доти поки така розбивка можлива (використовується цикл while) кожна строку за допомогою функції mysql_fetch_array() розбивається на окремі значення й кожне значення заноситься в масив $row[] (рис.1).
Тепер ми можемо виводити значення на екран. Зверніть увагу, на два моменти:
1. Для створення посилання необхідно використовувати тег <a href="/…">…</ a>. Але в символу лапок усередині функції print () своя робота – обмеження текстового рядка, який необхідно виводити на екран. Тому в наведеному лістингу перед лапками в тегу < a > використовується символ «зворотний слеш». Він маскує лапки html -тегу усередині текстового рядка.
2. Дії по видаленню даних з таблиці перебуває в тому ж самому файлі user.php. Тому разом з адресою сторінки в тегу <a> передається дві змінні act (тип дії) і id_user (ідентифікатор користувача, що віддаляється). Значення ідентифікатора береться з масиву $row[id_user].
Завдання 6. Видалення даних з таблиці
Код для видалення даних з таблиці (лістинг 5) необхідно розташувати ДО коду висновку користувачів на екран. Справа в тому, що коли людина натисне посилання «вилучити», відбудеться перезавантаження файлу user . php і дані повинні бути вилучені з таблиці раніше, чим буде виконаний sql -запит на вибірку даних.
Лістинг №5
Програмний код виконується в тому випадку, якщо у файл передається змінна $act. У наведеному коді формується текстовий рядок з sql-запитом. Далі цей запит виконується за допомогою вже відомої функції mysql_query().
Отриманий програмний код недосконалий. Перелічимо головні недоліки:
Ви можете реєструвати того самого користувача багаторазово, даний будуть заноситися в таблицю, змінюючи тільки поле id _ user .
Ви можете реєструвати порожніх користувачів, адже в програмному коді немає перевірки, а чи ввела людей обов'язкова поля.
Відсутня можливість змінювати введені дані.
Усі ці недоліки можна досить легко усунути, і це буде одним із практичних завдань.
Практичні завдання:
Створіть php-файл, який може додавати, видаляти/змінювати значення в базі даних «Клієнти».
Внесіть зміни в php-код, щоб програма перевіряла, чи введене ім'я користувача, його логін і тільки в цьому випадку вносила дані в таблицю.
(*) Створіть модифікований php-файл, у якому рахувались перераховані вище недоліки.
Питання для самоконтролю
1. Чому зручніше підключення до бази даних виводити в про зовнішній файл і підключати його за допомогою функції include()?
2. Для чого при висновку даних використовується цикл While?
3. Чому код на видалення даних потрібно вставляти в початок сторінки?
4. Які нові функції ви довідалися в цьому уроці?