Ознакомиться с главами 19-20 в Колисниченко Д. – Разработка веб-приложений в PHP 8. Ознакомиться с главой 11 в Никсон Р. – Создаем динамические сайты с помощью PHP, MySQL, JavaScript, CDD и HTML5, 6-е изд. Ознакомиться с главой 11 в Люк Веллинг, Лора Томсон – Разработка web-приложений с помощью PHP и MySQL (4 издание).
Обычно для хранения сведений, касающихся подключения к СУБД, создается отдельный файл.
<?php // config.php
$host = 'localhost';
$data = 'dm';
$user = 'root';
$pass = 'mysql';
$chrs = 'utf8mb4';
$attr = "mysql:host=$host;dbname=$data;charset=$chrs";
$opts =
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
Особую роль здесь играют охватывающие теги <?php и ?>, поскольку код между ними интерпретируется только как код PHP. Если обратиться к этому скрипту из браузера, то сгенерируется пустая страница, так что пользователи не получат доступ к секретным данным.
С помощью инструкции require_once можно включить config.php в любые другие PHP-файлы, которым нужен доступ к базе данных. В следующем примере создается объект PDO (PHP Data Objects – унифицированный интерфейс для работы с базами данных), представляющий соединение между PHP и сервером базы данных. Парная команда try…catch проверяет возникновение ошибки.
<?php // login.php
require_once 'config.php';
try {
$pdo = new PDO($attr, $user, $pass, $opts);
} catch (PDOException $e) {
throw new PDOException($e->getMessage(), (int)$e->getCode());
}
?>
Запрос в виде строки можно передать в метод query() объекта $pdo. Результат
<?php
$query = "SELECT * FROM `groups`";
$result = $pdo->query($query);
?>
После получения объекта $result его можно использовать для поэлементного извлечения нужных данных с помощью метода fetch().
<?php
require_once 'config.php';
try {
$pdo = new PDO($attr, $user, $pass, $opts);
} catch (PDOException $e) {
throw new PDOException($e->getMessage(), (int)$e->getCode());
}
$query = "SELECT * FROM `groups`";
$result = $pdo->query($query);
while ($row = $result->fetch()) {
echo 'id: ' . htmlspecialchars($row['id']) . '<br>';
echo 'name: ' . htmlspecialchars($row['name']) . '<br><br>';
}
?>
Создать базу данных и таблицы, в которых будет храниться информация об объектах из предыдущих лабораторных работ. В рамках данной лабораторной работы можно обойтись без нормализации и ограничиться одной таблицей.
Заполнить таблицу данными.
Создать базу данных и таблицы, в которых будет храниться информация об объектах из предыдущих лабораторных работ. В рамках данной лабораторной работы можно обойтись без нормализации и ограничиться одной таблицей. Заполнить таблицу данными.
Для начала оценим, какие данные нужно хранить в БД.

<div class="container">
<div>
<h2>Фильмы</h2>
<div class="cards_container" id="films_holder">
<div class="card">
<img src="./images/solntsei.jpg" alt="Постер фильма 'Белое солнце пустыни'" />
<div class="card_container">
<h3>Белое солнце пустыни</h3>
<p>
Советский художественный фильм в жанре истерн
<!-- Сокращено -->
</p>
<p>
<a href="">Подробнее</a>
</p>
</div>
</div>
<!-- Далее то же самое -->
Для каждого фильма здесь есть:
Название, описание и альтернативный текст к изображения будут вводиться как обычный текст. Изображение будет загружаться в виде файла в каталог images, так что хранить нужно только имя файла. Ссылка будет вести на страницу, где для каждого фильма будет находиться более подробное описание. Ссылка будет генерироваться автоматически, в неё попадет id фильма. А для подробного описания фильма нужно заготовить ещё одно поле.
В итоге в таблице о фильмах будет следующая информация:
Создать БД, таблицы, а затем заполнить их можно через phpMyAdmin (в AMPPS попасть в него можно по адресу http://localhost/phpmyadmin/). Можно подключиться к СУБД с помощью специального клиентского приложения или из консоли.
Создаём БД, нажатием на соответствующую ссылку. Далее достаточно только ввести название.

Создаём таблицу для основных объектов. В phpMyAdmin можно посмотреть, какой для этого генерируется SQL-запрос.
CREATE TABLE `films_db`.`films`
(
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR(500) NOT NULL ,
`short_description` TEXT NOT NULL ,
`description` TEXT NOT NULL ,
`poster` TINYTEXT NOT NULL ,
`poster_alt` TINYTEXT NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
В рамках лабораторной работы не требуется выполнять нормализацию и подбирать наиболее подходящие под задачу типы данных. Важно обратить внимание на то, чтобы поле id было первичным ключом (и, кроме того, с типом int и опциями: not null, auto increment). Остальные поля, скорее всего, либо числа, либо текст.
Так же, через phpMyAdmin нужно предварительно внести несколько записей, чтобы можно было начать разрабатывать страницу, где эти записи будут отображаться.
Переделать страницы из предыдущих работ так, чтобы список с объектами и подробная информация об этих объектах брались из БД.
Доработать страницу создания нового объекта так, чтобы он сохранялся в БД.
Переделать страницу с табличным представлением списка объектов так, чтобы можно было удалять объекты.
Добавить на страницу с табличным представлением списка объектов возможность редактирования конкретного объекта.