Лабораторна робота на тему Доступ до даних через web-інтерфейс
« НазадЛабораторна роботаТема: Доступ до даних через web-інтерфейс Мета: навчитись підключатись до бази даних, створювати форму для введення і виведення даних
У даній лабораторній роботі ви навчитесь підключати базу даних Mysql до сайту, а також довідаєтеся, яким образом можемо управляти даними через web -інтерфейс ( тобто через браузер). На даний момент у вас повинна бути створена база даних «school», що включає таблицю «user». Таблиця повинна містити п'ять полів: id_user (лічильник) user_name (текст) user_login (текст) user_password (текст) user_e-mail (текст) user_info (текст великого обсягу) У ході заняття ви створите php -файл, який з назвою user.php . Він повинен мати наступну структуру: - код для підключення до бази даних (лістинг 1); - код для видалення запису в базі даних (чому код для видалення перебуває до виводу обговориться пізніше) (лістинг 5); - форма для введення значень у базу даних (лістинг 2); - код для додавання запису в базі даних (лістинг 3); - код для висновку значень на екран (лістинг 4);
Підключення бази даних Для того, щоб додавати інформацію в базу даних необхідно спочатку сторінки (наприклад, після тегу < body > додати наступні рядки php -коду: Лістинг №1 Перший рядок за допомогою функції mysql _ connect () створює об'єктну змінну $db. Функція має два параметри ім'я «хоста» де розташовується база даних, а другий ім'я користувача, що має право на з'єднання з базою ( root – це користувач створюваний системою, що й має максимальні права). У другому рядку відбувається підключення до конкретної бази даних. Наведені рядки будуть коректно працювати на локальному комп'ютері, якщо у вас установлений Denver, але при спробі перенести ваш сервіс на віддалений сервер відбудеться помилка, адже там база буде розташовуватися в іншому місці, права користувача також набудовує адміністратор і він вам не дасть прав адміністратора, виходить, ці два рядки прийде міняти. Причому міняти у всіх php -файлах даних, що використовують підключення до бази. Має сенс винести ці чотири рядки в окремий файл, назвати його connect.php а в основному php -файлі зробити посилання: <? include ("connect.php"); ?>
Створення форми для введення даних Для того, щоб ви могли заповнювати дані необхідно створити форму (лістинг 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. Можна уявити собі, що в цій змінній зберігається не одне значення, а таблиця значень! У другій частині за допомогою функцій 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. Які нові функції ви вивчили в лабораторній роботі? З повагою ІЦ "KURSOVIKS"! |