Тема: cтворення програмного проекта простої бази даних «Школа» з даними про прізвище, ім'я, успішність, забезпечення виведення даних за зазначиними критеріями.
Мета: навчити основам роботи з базами даних SQL з використанням мови програмування PHP.
Учні повинні знати:
Учні повинні мати уявлення про можливості комплексу PHP + MariaDB.
Учні повинні вміти:
Обладнання: комп'ютери зі встановленими ОС, PHP, XAMPP.
Структура уроку
Примітка. Цей урок проводять лише після успішного опанування матеріалом уроків щодо вивчення SQL і виконання усіх його практичних завдань.
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку.
2. Актуалізація опорних знань
Дати відповідь на питання і порівняти з очікуваним.
3. Вивчення нового матеріалу
Під'єднання бази даних і здійснення запиту мовою SQL з результатом у виглялі асоціативного масиву і повідомленням про можливу невдачу мовою PHP може мати такий вигляд:
<?php $link = mysqli_connect( 'localhost',// адреса локального сервера (localhost) 'root', // обліковий запис користувача базами даних '', // пароль до облікового запису користувача БД 'school'); // назва бази даних if (mysqli_connect_errno()) { printf("Сполучення немає: %s\n", mysqli_connect_error()); exit(); } // формулювання запиту мовою SQL $query = "SELECT * FROM pupils WHERE form = '11Б';"; // якщо успішно отримано результат $result if ($result = mysqli_query($link, $query)) { echo "<tt>"; echo $query; // виведення запиту echo "</tt><br><br>";// виведення порожнього рядка // виведення заголовку таблиці echo "<table border=1 cellspacing=1 cellpadding=5 align='center'>"; echo "<tbody><tr><th>Прізвище</th><th>Ім'я</th><th>Клас</th>"; echo "<th>Номер<br>особової<br>справи</th></tr>"; // перебір рядків результату у // вигляді асоціативних масивів $row while ($row = mysqli_fetch_assoc($result)) { // виведення даних запиту echo "<tr><td>"; echo $row['sename']; echo "</td><td>"; echo $row['name']; echo "</td><td>"; echo $row['form']; echo "</td><td>"; echo $row['no']; echo "</td></tr>"; } echo "</tbody></table>"; mysqli_free_result($result); // вилучення вибірки mysqli_close($link); // закриття сполучення } ?>
Тут подано весь вміст файлу php, у якому замість назв змінних $link, $query, $result, $row можуть бути довільні інші назви. Поданий вище код програми є змістовним прикладом для бази даних school, побудованої раніше у середовищі XAMPP, для якої він дає такий результат (подано з точністю до налаштувань браузера щодо шрифту):
SELECT * FROM pupils WHERE form = '11Б';Прізвище | Ім'я | Клас | Номер особової справи |
---|---|---|---|
ЛИСЕНКО | ДМИТРО | 11Б | 113 |
РУДЕНКО | ОЛЕГ | 11Б | 114 |
САВЧЕНКО | ВАЛЕРІЙ | 11Б | 115 |
ПЕТРЕНКО | ЛЕОНІД | 11Б | 116 |
ШУЛЬГА | ГАЛИНА | 11Б | 117 |
РАДЧЕНКО | ТЕТЯНА | 11Б | 118 |
КОРОЛЬ | НАДІЯ | 11Б | 119 |
ОСТАПЕНКО | ЛЮДМИЛА | 11Б | 120 |
Для отримання результату у вигляді звичайного масиву з цілочисельними індексами потрібно використати функцію mysqli_fetch_array замість mysqli_fetch_assoc. Це доцільно робити, наприклад, при виведенні наявних баз даних чи таблиць бази даних.
У визначенні під'єднання ($link у поданому вище коді) можна не вказувати базу даних. Наприклад, перед її створенням. Тоді її під'єднання можна здійснити пізніше, використавши відповідну вказівку мовою SQL.
4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу
На початку виконання завдань середовище XAMPP повинне бути активним і містити порожню базу даних school. При виконанні завдань використати демонстраційні розв'язання a, b, c завдань уроку 1 щодо SQL. Код може не містити перевірки на коректність виконання вказівок.
Завдання 1. Створити програму мовою PHP, яка засобами SQL:
виконає запити створення і під'єднання порожньої бази sghool;
виконає запити створення структури й наповнення таблиць згідно з вказівками, записаними у файлах structure.txt і data.txt (результат перевіряють засобами phpMyAdmin);
виведе у консоль назви усіх наявних баз даних;
для усіх наявних таблиць бази даних school виведе у консоль назви цих таблиць і результати запиту щодо їхньої структури у вигляді асоціативного масиву (без опрацювання запиту).
Порівняти з очікуваними кодом і виведенням.
Завдання 2. Використовуючи попередньо апробований код SQL, створити програму мовою PHP для виведення у консоль у вигляді асоціативних масивів таких даних:
всі поля з таблиці pupils про учнів 11Б класу (поле form);
всі поля з таблиці classroom про аудиторії корпусу A (поле building, латиниця), ємність яких (поле capacity) менше 24 і більше від 16 (2 варіанти);
з таблиці pupils про прізвище (поле sename) та ім'я (поле name) усіх тих записів, у яких прізвище закінчується на 'УК';
з таблиці pupils про прізвище (поле sename) та ім'я (поле name) усіх тих записів, у яких ім'я (поле name) 'Андрій' або 'Григорій';
з таблиці pupils про загальну кількість учнів;
з таблиці teachers про категорії (поле quality) та кількість учителів цієї категорії;
з таблиці teachers про категорії (поле quality) та кількість учителів цієї категорії, що перевищує 1;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку зростання оцінки;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку спадання оцінки;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку спадання оцінки лише тих, хто посів 4, 5 і 6 місце у цьому списку з підписами стовпчиків 'Прізвище' й 'Оцінка';
з таблиці courses список всіх дисциплін (поле course) і відповідну інформацію про кафедри з таблиці department у режимах;
Виконати запити й порівняти з очікуваними кодом мовою PHP і результатом.
Завдання 3. Використовуючи попередньо апробований код SQL, створити програму мовою PHP для такого:
створити віртуальну таблицю own_view усіх полів усіх записів таблиці marks, у яких оцінка (поле mark) менша ніж 7;
вивести у консоль у вигляді асоціативних масивів даних own_view.
Виконати запити й порівняти з очікуваними кодом і результатом. Зауважте: незважаючи на виключення при створенні перегляду, дані виведено правильно.
Завдання 4. Використовуючи попередньо апробований код SQL, створити програму мовою PHP для такого:
Виконати запити й порівняти з очікуваними кодом і результатом.
6. Підбиття підсумків уроку
Дати відповідь на питання і порівняти з очікуваним.
Виставлення оцінок.
7. Домашнє завдання
У разі потреби доробити завдання. Вивчити систаксис під'єднання бази даних і здійснення запиту мовою SQL з програми мовою PHP. Написати програму мовою PHP, яка:
Текст упорядкував Олександр Рудик.