#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 был первым или последним, не выводите такую ссылку.
Комментариев нет:
Отправить комментарий