Лабораторна робота №16, Доступ до даних через web-інтерфейс
Код роботи: 729
Вид роботи: Лабораторна робота
Предмет: Web-програмування
Тема: №16, Доступ до даних через web-інтерфейс
Кількість сторінок: 1
Дата виконання: 2015
Мова написання: українська
Ціна: 150 грн
Хід роботи
У даній лабораторній роботі ви навчитесь підключати базу даних Mysql до сайту, а також довідаєтеся, яким образом можемо управляти даними через web -інтерфейс (тобто через браузер).
На даний момент у вас повинна бути створена база даних «school», що включає таблицю «user». Таблиця повинна містити п'ять полів:
У ході заняття ви створите php -файл, який з назвою user.php . Він повинен мати наступну структуру:
код для підключення до бази даних (лістинг 1);
код для видалення запису в базі даних (чому код для видалення перебуває до виводу обговориться пізніше) (лістинг 5);
форма для введення значень у базу даних (лістинг 2);
код для додавання запису в базі даних (лістинг 3);
код для висновку значень на екран (лістинг 4);
Підключення бази даних
Для того, щоб додавати інформацію в базу даних необхідно спочатку сторінки (наприклад, після тегу < body > додати наступні рядки php -коду:
Лістинг №1
Перший рядок за допомогою функції mysql _ connect () створює об'єктну змінну $db. Функція має два параметри ім'я «хоста» де розташовується база даних, а другий ім'я користувача, що має право на з'єднання з базою (root – це користувач створюваний системою, що й має максимальні права). У другому рядку відбувається підключення до конкретної бази даних.
Наведені рядки будуть коректно працювати на локальному комп'ютері, якщо у вас установлений Denver, але при спробі перенести ваш сервіс на віддалений сервер відбудеться помилка, адже там база буде розташовуватися в іншому місці, права користувача також набудовує адміністратор і він вам не дасть прав адміністратора, виходить, ці два рядки прийде міняти. Причому міняти у всіх php -файлах даних, що використовують підключення до бази. Має сенс винести ці чотири рядки в окремий файл, назвати його connect.php а в основному php -файлі зробити посилання:
Це не помилка, для файлу, що зберігає підключення до бази даних краще використовувати розширення php. Уся справа в тому, що якщо ви використовуєте розширення .inc, браузер буде сприймати його як текстовий файл і якщо зловмисник набере в рядку адреси connect.inc він одержить ім'я бази даних і паролі до неї. Зміст php - файлу, буде приховано, сервер у відповідь на запит згенерує порожню html - сторінку.
Створення форми для введення даних
Для того, щоб ви могли заповнювати дані необхідно створити форму (лістинг 2).
Лістинг №2
Як видно з коду, дані вводяться в п'ять полів і при натисканні на кнопку «додати» змінні форми передаються в той же самий файл user. php .
Додавання даних у таблицю
Лістинг №3
Змінна «add» буде передана у файл user.php разом з іншими змінними і якщо це відбудеться, виконується чотири дії:
З форми будуть витягнуті всі змінні (у наведеному фрагменті вони передавалися методом GET).
Створюється строкова змінна $sql_add, що містить sql-запит. У ньому замість значень полів використовуються імена витягнутих змінних, у яких зберігається ім'я користувача, логін і т.д.. Кожна змінна взята в апострофи.
За допомогою функції mysql_query() виконується sql-запит. Аргументом цієї функції є рядок із запитом.
Друкується повідомлення про додавання нового користувача.
Виведення даних з таблиці на екран
Припустимо, що ви прагнете вивести на екран список зареєстрованих користувачів. При цьому не потрібно, виводити персональну інформацію, логін, пароль, досить тільки імена і електронні адреси. Для виводу даних можна використовувати наступний код (лістинг 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].
Видалення даних з таблиці
Код для видалення даних з таблиці (лістинг 5) необхідно розташувати до коду виводу користувачів на екран. Справа в тому, що коли людина натисне посилання «вилучити», відбудеться перезавантаження файлу user . php і дані повинні бути вилучені з таблиці раніше, чим буде виконаний sql -запит на вибірку даних.
Лістинг №5
Програмний код виконується в тому випадку, якщо у файл передається змінна $act. У наведеному коді формується текстовий рядок з sql -запитом. Далі цей запит виконується за допомогою вже відомої функції mysql_query().
Отриманий програмний код недосконалий. Перелічимо головні недоліки:
Ви можете реєструвати того самого користувача багаторазово, дані будуть заноситися в таблицю, змінюючи тільки поле id _ user .
Ви можете реєструвати порожніх користувачів, адже в програмному коді немає перевірки.
Відсутня можливість змінювати введені дані.
Усі ці недоліки можна досить легко усунути, і це буде одним із практичних завдань.
Практичні завдання:
Створіть php -файл, який може додавати, видаляти/змінювати значення в базі даних «Клієнти».
Внесіть зміни в php -код, щоб програма перевіряла, чи введене ім'я користувача, його логін і тільки в цьому випадку вносила дані в таблицю.
(*) Створіть модифікований php -файл, у якому виправлені перераховані вище недоліки.
Питання для самоконтролю
1. Чому зручніше підключення до бази даних виводити в зовнішній файл і підключати його за допомогою функції include()?
2. Для чого при виводі даних використовується цикл While?
3. Чому код на видалення даних потрібно вставляти в початок сторінки?
4. Які нові функції ви вивчили в лабораторній роботі?