Сложность заключается в генерации всех статей на одной странице сервера.
Страница article.php
Создадим страницу article.php, генерирующую статьи. На ней будут отображаться статьи в зависимости от выбранной. Например, запрос последней статьи сгенерирует контент, соответствующий последней записи в базе данных.
Подготовка article.php
Скопируем index.php в article.php. Изменим заголовок (title). Для корректного отображения в поисковых системах, код установки заголовка из <head> переместим в начало файла и в конец <body>. Удалим лишний код установки заголовка из исходного места.
<!-- Пример кода, отображающего title -->
<?php
// ...код для получения заголовка из базы данных ...
$title = "Заголовок статьи";
?>
<title><?php echo $title; ?></title>
Передача ID статьи через URL
Каждая ссылка на статью должна содержать уникальный идентификатор (ID). Это позволит выбрать нужную статью из базы данных. В ссылках будем использовать GET-запрос, добавляя к URL article.php?id=N, где N — ID статьи. Например: article.php?id=3.
Получение ID статьи и выборка данных
В article.php будем использовать метод GET для получения ID статьи из URL. Добавим в функцию получения статей параметр ID.
// Пример кода для получения ID и выборки данных из БД
$id = isset($_GET['id']) ? $_GET['id'] : null;
$whereClause = $id ? "WHERE id = $id" : "";
// ...Запрос к базе данных с использованием $whereClause...
Если ID передан, запрос выберет одну статью. В противном случае, будут выбраны все статьи. Для вывода одной статьи достаточно создать одномерный массив.
Вывод статьи
После получения данных из базы данных, выведем их на странице. Так как используется обычный массив, можно напрямую вывести его содержимое. Удалим лишний код, необходимый для вывода множества статей.
Результат
Теперь, кликая по ссылкам на статьи, мы будем видеть соответствующий контент. Все статьи генерируются на одной странице article.php, что удобно при изменении дизайна или функционала.
Мы создали функционал динамической генерации страниц со статьями, используя одну PHP-страницу. Это упрощает поддержку и модификацию сайта.