#php #mysql
Добрый день, имеем таблицу с id новостей:
id |
5 |
7 |
15 |
20 |
И запрос:
$query = "select * from articleviews order by articleid desc limit 1";
$results = mysql_query($query,$connection) or die(mysql_error());
$lastid = mysql_fetch_array($results);
//Previous link
$previousid = $_GET['id']-1;
if ($previousid < 1) {
$previous = "";
} else {
$previous = '/article.php?id='.$previousid;
}
//Next link
$nextid = $_GET['id']+1;
if ($nextid > $lastid['id']) {
$next = "";
} else {
$next = '/article.php?id='.$nextid;
}
Но в итоге в ссылку вставляются только id по порядку от открытой новости.
Например, на новости, у которой id 15, предыдущая ссылка будет на новость с id 14,
а не 7. Помогите вывести существующие id на новости.
Ответы
Ответ 1
select (select id from articleviews where id < ? order by id desc limit 1) as prev, (select id from articleviews where id > ? order by id limit 1) as nextОтвет 2
Вам придется запросить идентификаторы следующей и предыдущей записей при помощи отдельных запросов. Идентификатор предыдущей записи: SELECT articleid AS previousid FROM articleviews WHERE articleid < $lastid ORDER BY articleid DESC LIMIT 1 Идентификатор следующей записи: SELECT articleid AS nextid FROM articleviews WHERE articleid > $lastid ORDER BY articleid DESC LIMIT 1Ответ 3
Воспользуйтесь запросом: select min(id) as prev,max(id) as next from ( select id from articleviews where id>=(select coalesce(max(id),?) from articleviews where id < ?) order by id limit 3 ) A В место ? надо привязать ваш текущий ID. На выходе в массиве результатов сразу лежат prev и next. Если полученные переменные равны текущему ID или NULL - значит заданный ID был первым или последним, не выводите такую ссылку.
Комментариев нет:
Отправить комментарий