|
|
|
| Что есть:
Есть таблица с двумя колонками posts:
На странице выводится только одна строка таблицы за раз.
Например по ссылке project/?post=18 мы выводим строку с idposts=18
Задача:
Сделать ссылочки "следующий пост" и "предыдущий пост", сразу с прямыми ссылками.
Предыдущий пост -> project/?post=17
Следующий пост -> project/?post=20 (19й удален, значит мы не можем просто написать 18+1).
Вопрос:
Как поизящнее составить запрос, что бы вытащить за раз все нужные данные, включая ID предудущего и следующего поста. | |
|
|
|
|
|
|
|
для: Апельсин
(20.04.2008 в 13:06)
| | За один раз не получится, придётся два запроса выполнять... | |
|
|
|
|
|
|
|
для: Апельсин
(20.04.2008 в 13:06)
| | Ну скорее всего надо сместить немного выборку... вытаскивать предыдущий ID как основной и затем два последующих. | |
|
|
|
|
|
|
|
для: Valick
(20.04.2008 в 17:26)
| | cheops, Valick,
Большое спасибо за внимание к топику.
Вот мой вариант реализации.
// Берем откуда-то номер текущего поста
$data['idCurrent']=18;
// Вытаскиваем Id предыдущего поста и если он существует, записываем в массив
$query=mysql_query("select idposts from posts where idposts <{$data['idCurrent']} order by idposts desc limit 0,1");
$a= mysql_fetch_array($query);
if(''!==(string) $a['idposts']){
$data['idPrevious']=$a['idposts'];
}
// Этим запросом вытаскиваем текущий пост и дополнительно Id следующего поста.
$query=mysql_query("select * from posts where idposts >={$data['idCurrent']} order by idposts limit 0,2");
$sdata['postData']=mysql_fetch_array($query);
// Вытаскиваем Id следующего поста и если он существует, записываем в массив
$a= mysql_fetch_array($query);
if(''!==(string) $a['idposts']){
$data['idNext']=$a['idposts'];
}
|
Подскажите пожалуйста, насколько это правильное решение. Можно ли то же самое реализовать как-то более изящно? | |
|
|
|