Практическое занятие № 22
Тема: «Вывод полей таблиц базы данных на страницу»
Цель работы: приобретение навыков работы с базами данных, использования запросов для формирования динамических страниц.
Краткие теоретические основания выполнения задания
Практика по работе с БД в PHP
Пусть в базе данных есть такая таблица workers:
id | name | age | salary |
1 | Коля | 23 | 400 |
2 | Вася | 24 | 500 |
3 | Петя | 25 | 600 |
Давайте выведем ее в таком виде в браузер.
Для этого средствами PHP нам надо сформировать следующий HTML код:
id |
name |
age |
salary |
1 |
Коля |
23 |
400 |
2 |
Вася |
24 |
500 |
3 |
Петя |
25 |
600 | Каким образом мы это сделаем: часть HTML кода мы наберем вручную, а часть за нас сформирует
PHP.
Вручную мы наберем статическую часть HTML ‐ тег table и первую tr с заголовками таблицы. А вот собственно ряды таблицы пусть сформирует PHP, взяв данные из БД.
Наберем статическую часть HTML кода и подготовим в нем место для вставки PHP:
id |
name |
age |
salary |
//тут будет PHP код, который сформирует эту часть таблицы
Наш PHP код должен отправить запрос к базе данных, достать массив работников, затем сформировать из него соответствующее количество tr и td.
Давайте достанем все работников из таблицы workers и запишем их в массив $data (пусть подключение к БД выполнено где‐то выше, не будем его записывать для краткости):
id |
name |
age |
salary |
$query = "SELECT * FROM workers";
$result = mysqli_query($link, $query) or die(
mysqli_error($link) );
for ($data = []; $row = mysqli_fetch_assoc($result); $data[] =
$row);
?
var_dump($data);
Полученный нами массив будет выглядеть так:
[
['id' = '1', 'name' = 'Коля', 'age' = '23', 'salary' = '400'],
['id' = '2', 'name' = 'Вася', 'age' = '24', 'salary' = '500'],
['id' = '3', 'name' = 'Петя', 'age' = '25', 'salary' = '600'],
]
Давайте переберем его циклом foreach, сформировав при этом tr и td:
id |
name |
age |
salary |
$query = "SELECT * FROM workers";
$result = mysqli_query($link, $query) or
die(mysqli_error($link));
for ($data = []; $row = mysqli_fetch_assoc($result); $data[] =
$row);
$result = '';
foreach ($data as $elem) {
$result .= '
'; $result .= '
' . $elem['id'] . ' | '; $result .= '
' . $elem['name'] . ' | '; $result .= '
' . $elem['age'] . ' | '; $result .= '
' . $elem['salary'] . ' | ';
$result .= '
'; }
echo $result;
?
Наша задача решена. Если запустить этот код (не забыв про подключение к БД), то на экран выведется соответствующая таблица.
При этом, конечно же, наша HTML таблица будет формироваться из тех данных, которые есть в текущий момент в БД. То есть если там будет больше записей ‐ то и в браузере будет выведено больше записей.
Оборудование, материалы
Персональный компьютер с установленной ОС. Текстовый редактор Notepad++ или аналогичный. Open Server.
Порядок выполнения задания
Повторите материал предыдущего практического занятия.
Убедитесь, что задание выполнено и содержимое таблицы базы данных корректно выводится на страницу. Удалите из кода вывод на страницу содержимое массива $data с помощью var_dump
Изучите краткие теоретические основания выполнения задания к данному практическому занятию.
Добавьте код вывода содержимого таблицы на страницу index.php, убедитесь в его работоспособности.
Скопируйте страницу index.php с именем index2.php, модифицируйте код страницы index2.php таким образом, чтобы шапка таблицы формировалась автоматически, заголовки столбцов должны соответствовать именам полей таблицы.
Модифицируйте код страницы index2.php таким образом, чтобы на страницу выводились все поля таблицы, независимо от из количества (используйте вложенные циклы).
Задание для самостоятельного решения:
Создайте базу данных MySQL с таблицей students, содержащей поля "id", "name", "surname" , "age", "interests" , "telephone".
Заполните таблицу "students" несколькими записями.
Напишите PHP-скрипт, который подключается к базе данных и выводит все записи из таблицы "students" в виде HTML-таблицы.
Ресурсы и ссылки
http://new.code.mu/ru/php/book/practice/1/