Как при нажатии на кнопку перейти к следующему id?

У меня есть страница, где выводятся все записи из базы:

<?php foreach ($posts as $post) : ?>
<a href="/project?post_id=<?= $post['id'] ?>">
<h1><?php echo $post['title'] ?></h1>
</a>
<?php endforeach; ?>


При нажатии на какую-то ссылку происходит переход к конкретной записи:

function get_post_by_id($post_id)
{

    global $link;

    $sql = "SELECT * FROM projects WHERE id = " . $post_id;

    $result = mysqli_query($link, $sql);

    $post = mysqli_fetch_assoc($result);

    return $post;
}


<?php
$post_id = $_GET['post_id'];
$post = get_post_by_id($post_id);
?>

<div>
<h1><?= $post['title'] ?></h1>
<p><?= $post['description'] ?></p>
<a href="/project?post_id="><button">Назад</button></a>
<a href="/project?post_id="><button>Вперед</button></a>
</div>


В каждой записи есть две кнопки: "Вперед" и "Назад". Мне нужно чтобы при нажатии на кнопку "Вперед" происходил переход к следующей записи в базе (id идут не попорядку, нп: 1,5,6,8,12)

Как это сделать?
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
Keanor
@Keanor
Ведущий разработчик
В первую очередь прочитать про SQL Injection, если вы этот сайт опубликуете то кто угодно вам все что угодно с вашей БД сможет сделать.

Получить идентификаторы предыдущих и следующих записей нужно отдельными запросами.

Для получения следующей записи запрос вида:
SELECT * FROM projects WHERE id > " . $post_id . " ORDER BY id ASC LIMIT 1";


Для получения предыдущей записи запрос вида:
SELECT * FROM projects WHERE id < " . $post_id . " ORDER BY id DESC LIMIT 1";
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
anton_reut
@anton_reut
Начинающий веб-разработчик
Как это сделать?

Выбрать из базы ID который БОЛЬШЕ текущего ID, ЛИМИТ 1.
Для того чтобы получить предыдущую запись тоже самое но МЕНЬШЕ.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы