Лабораторне заняття 12. SQL-запити на редагування інформації. Використання змінних та циклів в PHP

Мета роботи: ознайомитися з можливостями взаємодії PHP та MySQL для додавання, редагування та видалення інформації з бази даних та використання форм.

Теоретичні відомості

Мова SQL надає можливості маніпулювання даними. Використовуючи команди маніпуляції та відповідні функції PHP можна змінювати дані, додавати нові та видаляти непотрібні з таблиці.

Всі маніпуляції з додавання, зміни та видалення даних зручно проводити, використовуючи для цього спеціально створені сторінки зі сценаріями, дані на які передаються з відповідної форми, з використанням методу GET або POST.

Приклад такої форми показано нижче:

<form action="add.php" method="POST">

   <input type="text" name="name" required />

<input type="text" name="value" required />

<input type="submit" value="Додати запис">

</form>

Параметр action форми містить адресу сторінки, на яку буде відправлено дані, що будуть внесені у форму (в даному випадку – add.php). Параметр method вказує на метод відправки даних (GET або POST).

Для отримання даних від користувача використовуються поля input. Параметр type визначає тип поля (text – поле вводу тексту); name визначає ім’я поля та ім’я змінної, в яку буде записано введене значення; required робить поле обов’язковим для введення.

Для відправки даних форми використовується кнопка типу submit. При натисненні на неї перевіряється заповнення обов’язкових полів та здійснюється передача даних на вказану сторінку вибраним методом.

Для отримання переданих даних, потрібно звернутися до глобального масиву, в даному випадку $_POST:

$name = $_POST['name'];

$value = $_POST['value'];

Тепер можна сформувати запит на запис в базу даних. Для цього використовується оператор INSERT:

$query = "INSERT INTO `table1` (`name`, `value`) VALUES ('$name', '$value')"

В запиті вказується ім’я таблиці table1 та імена полів, в які будуть записані дані (name, value), а також їх значення, отримані зі змінних $name та $value. Важливо вказувати поля та дані, що в них записуються в тому ж порядку.

В результаті успішного запису – функція mysqli_query поверне true.

Для видалення записів з бази даних використовується оператор DELETE:

DELETE FROM `table1` WHERE id = 3

В запиті вказується ім’я таблиці, з якої видаляється запис та умова, за якою визначається запис для видалення (наприклад, запис, що містить значення 3 в полі id). Як і у випадку з додаванням запису до бази даних, функція mysqli_query повертає значення true в разі успіху.

Для оновлення записів в базі даних використовується оператор UPDATE:

UPDATE `table1` SET `name` = '$name', `value` = '$value'

WHERE id = 3

В запиті вказується ім’я таблиці (table1), в якій мають бути змінені дані та пари «ім’я поля = дані». Критерієм для вибору запису, який потрібно змінити слугує поле id (в даному випадку запис під номером 3).

 

Використання методу GET

Не дивлячись на те, що метод передачі даних GET є відкритим та не підходить для передачі даних на зразок паролів та інших особистих даних, є ряд задач, для яких він підходить набагато краще ніж POST.

Один з таких прикладів є використання посилань для передачі даних на іншу сторінку без використання HTML-форм. Для початку варто ознайомитися з загальним виглядом HTTP-запитами методом GET:

https://mysite.com/action.php?arg1=value1&arg2=value2

Спочатку вказується адреса PHP-сторінки, на якій буде відбуватися обробка запиту, далі ставиться знак «?», після якого перераховуються всі змінні з їх значеннями, розділені знаком «&» (в даному випадку ми маємо дві змінні – arg1 та arg2, що містять відповідно значення value1 та value2).

Так, наприклад, при отриманні списку студентів з бази даних, можна одразу сформувати для кожного з них посилання на сторінку, яка буде виводити більш детальну інформацію:

<?php

include('db.php');

$query = mysqli_query($link, "SELECT `id`, `name`

FROM `students`");

echo "<ul>";

for ($i = 0; $i < mysqli_num_rows($query); $i++) {

     $fetch = mysqli_fetch_array($query);

     echo "<li><a href=\"page.php?id=$fetch[id]\">

$fetch[name]</a></li>";

}

echo "</ul>";

?>

В наведеному вище прикладі код підключення до бази даних винесений в окремий файл (db.php), це дозволяє позбавитися необхідності прописувати один і той же код на кожній сторінці, де потрібно з’єднатися з БД. Підключити код зовнішнього файлу можна за допомогою функції include().

Далі формується запит на вибірку з бази даних імені та ідентифікатора студента (name, id) та формування списку студентів з посиланнями на їх сторінку. В якості такої сторінки виступає page.php, на якій і будуть оброблятися дані, на основі яких буде створений новий запит до БД, де міститимуться далі лише про вибраного студента. Для цього формується GET-запит, в якому передається ідентифікатор, отриманий з бази (id=$fetch[id]).

Залишається написати код для page.php, який буде отримувати дані про студента за переданим ідентифікатором та виводитиме їх на екран.

Остання зміна: Thursday 28 May 2020 23:27 PM