Лабораторная работа №2 (PHP)
Тема: Погружение в программиррование
Работаем с базой данных
Мы уже знаем, как создавать переменные, записывать и изменять значения, вставлять переменные в шаблон. Но до сих пор информацию для переменных мы придумывали сами. Давайте уже возьмём реальные данные.
База данных — сложная система, которая хранит информацию сайта в организованном виде. В нашем случае это просто PHP-файл, так как информации для хранения у нас мало.
Чтобы получить данные о товаре, воспользуемся его уникальным номером, или артикулом, который хранится в базе данных. В программировании такой номер называется идентификатором, то есть id.
В нашей базе данных есть полезные команды. Например, get_product_title поможет получить название конкретного товара. Для этого нужно указать в скобках подходящий артикул.
Например, get_product_title(25)
Команды, с помощью которых мы будем получать данные из базы, являются нашей разработкой и хранятся в базе данных, а не частью языка PHP. Поэтому вне данной базы они не работают.
Подключим базу данных в начале сценария, и полезные команды станут доступны. Затем заменим значение $title на get_product_title, а в скобках укажем номер товара.
Задание 2.1
- В файле product.php подключите на 2 строке базу данных products_db.php
- Поменяйте значение переменной $title, замените 'Люстра Леопом' на get_product_title(1)
- Посмотрите, как изменилось название товара на странице в браузере
- Поменяйте число в скобках из get_product_title(1) на 5 и посмотрите, как изменится название товара на странице
Добавляем изображения из базы данных
Название товара мы берём из базы данных, сделаем так же и с изображением товара.
Используем ещё одну команду из базы — get_img_url. Она поможет получить путь до картинки с товаром. Обратите внимание, эта команда также не является стандартной для языка PHP, а создана специально для нашего магазина.
Создадим переменную в сценарии product.php, запишем в неё информацию из базы данных и выведем эту переменную в шаблоне в атрибуте src тега <img>
Можно добавить переменную в шаблон знакомым способом, но такая запись слишком многословная:
<img src="<?php echo($img_url); ?>">
// Добавили переменную в атрибут картинки в шаблоне
В PHP есть запись короче:
<img src="<?= $img_url ?>">
// Двойные кавычки в атрибуте не удаляются
Работают эти две записи одинаково, разница только в количестве символов.
Обратите внимание,
Обратите внимание
В полной записи скрипта нужно ставить знак точка с запятой, а в сокращенной – не нужно.
Добавим изображение товара так же c помощью сокращённого формата. А в атрибут alt элемента img добавим переменную $title. Так описание фотографии будет соответствовать названию товара.
Задание 2.2
- В файле product.php после переменной $title создайте переменную $img_url
- Запишите в эту переменную get_img_url(10)
- Переключитесь в редакторе на вкладку c шаблоном components
/product_info.php - Добавьте переменную $img_url в атрибут src тега <img> с помощью сокращённой записи:
<?= $img_url ?>, при этом кавычки должны остаться. - По аналогии добавьте переменную $title в атрибут alt
Переменная id
Сейчас у нас не совпадает название товара и его фотография. Почему так произошло? Всё из-за того, что мы вручную прописывали разные артикулы в команды.
$title = get_product_title(1);
$img_url = get_img_url(10);
Как защититься от подобных ошибок?
Можно записать артикул в одно место и затем использовать его. Тут нам тоже помогут переменные.
Обычно такую переменную для хранения идентификатора называют $id.
Заведём новую переменную и запишем в неё идентификатор товара. Затем заменим цифры в командах на эту переменную. Достаточно поменять номер товара только в одном месте — в переменной, и вся информация будет соответствовать одному товару. Вероятность ошибки станет ниже.
Задание 2.3
- В файле product.php объявите переменную $id со значением 1
- Поменяйте команду get_product_title(1) на get_product_title($id)
- По аналогии поменяйте get_img_url(10) на get_img_url($id)
- Проверьте, как стала выглядеть страница с описанием товара.
- Поменяйте значение переменной $id c 1 на 7 и посмотрите, как изменятся данные на странице.
Знакомимся с командой $_GET
Мы научились задавать идентификатор в одном месте, но мы не можем каждый раз менять значение для каждого пользователя вручную. Оно должно приходить откуда-то извне. И лучший вариант — адрес, который виден в адресной строке браузера.
В адресе есть специальная часть, которая называется «параметры запроса». Параметры запроса располагаются после знака вопроса.
https://www.gloevk.ru
В данном примере у нас есть один параметр product_id, а цифра в конце этого адреса — его значение.
Получить параметр запроса можно с помощью команды $_GET, указав в квадратных скобках его название.
echo($_GET['product_id']);
// Получаем значение параметра запроса
Подробную информацию о параметрах запроса и использовании $_GET вы можете получить в учебнике (ссылка).
На следующем шаге используем $_GET['product_id'] для получения артикула товара.
Получаем данные из параметров запроса
На предыдущем шаге мы убедились, что можно получать данные из адреса. Теперь осталось подставить $_GET['product_id'] в значение переменной $id. Так мы получим артикул товара.
$id = $_GET['product_id'];
Как проверить, что наш динамический шаблон работает? Сделать это можно двумя способами.
Самый простой — ещё раз поменять значение параметра запроса в адресной строке.
Второй способ чуть дольше. У нас есть каталог, в котором у каждого товара есть ссылка. В ней уже прописан нужный адрес с правильными параметрами. Об этом позаботились наши верстальщики. Поэтому мы можем перейти на страницу каталога и щёлкнуть по любой ссылке. Браузер перейдёт на страницу этого товара, и мы увидим нужный товар.
Задание 2.4
- В файле product.php замените значение переменной $id на $_GET['product_id']
- В адресной строке поменяйте число 1 на 9
- В браузере перейдите по ссылке на страницу каталога товаров
- Щёлкните на третий товар — «Блетуб». Убедитесь, что на странице товара отображается выбранный товар.