логика prev/next

Статус
В этой теме нельзя размещать новые ответы.

Kirill

Новичок
логика prev/next

При подробном просмотре элемента списка должны быть ссылки "предыдущий элемент | следующий элемент". Сделано у меня так:
Вы полняю запрос на выборку ВСЕХ записей (без лимита). В цикле проверяю, если id=current id тогда стоп (перед этим берем след.).
Вопрос, есть ли какой-нить более хороший способ определения prev/next элементов? Должно работать на Mysql => 4.1
 

Kirill

Новичок
ну с where естественно и с сортировкой :) "ВСЕХ" - я имел ввиду что без LIMIT
 

Popoff

popoff.donetsk.ua
1 2 3 4 5
Следующий после 3 - минимум среди тех элементов, которые больше 3. Перед тройкой стоит максимум среди тех, которые меньше 3.

Также, часто вместо функций min() и max() используют сортировку. Например, двойку можно было бы выбрать, если при помощи where оставить только элементы, которые меньше 3 (то есть, получится 1 и 2), отсортировать получившийся список в порядке убывания (то есть, получится "2, 1") и в получившемся списке при помощи limit оставить только самый первый элемент.
 

Kirill

Новичок
это когда простая сортировка хорошо, а в моем случае - сложная, сначала по sticky, затем по date + сортировку может менять пользователь во время сессии. поэтому не катит
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Чем Вас не устраивает?
PHP:
$q = "SELECT * FROM table";
if (isset ($_SESSION['sort'])){
   $sort = ' ASC ';
   $field = ' '.$_SESSION['sort'].' ';
}
elseif(isset ($_SESSION['rsort'])) {
   $sort = ' DESC ';
   $field = ' '.$_SESSION['rsort'].' ';
}
else{
   $sort = ' '.DEFAULT_SORT.' ' ;
   $field = ' '.DEFAULT_FIELD.' ' ;
}
if (!isset ($table_allow_field[$field])){
    $field = ' '.DEFAULT_FIELD.' ' ;
}
$q .= ' ORDER BY '.$field.' '.$sort;
 

Kirill

Новичок
да это уже все давно написано и прекрасно работает. Я хочу узнать есть ли альтернативные варианты нахождения предыдущего и следующего элепмента.
 

Фанат

oncle terrible
Команда форума
Я хочу узнать есть ли альтернативные варианты нахождения предыдущего и следующего элепмента
топик закрыт, поскольку автор не понимает, о чем спрашивает
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху