За последние 24 часа нас посетили 17728 программистов и 1687 роботов. Сейчас ищет 1181 программист ...

Не правильно выводится предыдущее видео

Тема в разделе "PHP для новичков", создана пользователем leshiy, 28 июл 2014.

  1. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Вот код выводящий следующее и предыдущее видео в категории активного ролика: где id=номер ролика, а cat=номер категории и все работает нормально, вот только если активный ролик допустим id=50, а следующий id=65 и предыдущий id=40 то при переходе на id=65 предыдущий так и остается id=40 а не id=50.
    Можно это как нибудь подправить?
    Код (Text):
    1.         $result = mysql_query("
    2. SELECT
    3.   d.*, c.`tit`,
    4.   IF(DATE(d.`date`) = CURDATE(), 'СЕГОДНЯ', IF(DATE(d.`date`) = CURDATE()-INTERVAL 1 DAY, 'ВЧЕРА', d.`date`)) AS `date`
    5. FROM
    6.   `date` AS d
    7. LEFT JOIN
    8.   categories AS c ON c.idd = d.cat
    9. WHERE
    10.   (SELECT cat FROM `date`WHERE id=$id ) = d.cat
    11.   AND d.id > $id ORDER BY
    12.   d.id ASC
    13. LIMIT 1",$db);
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    как-то сложно у тебя )))
    "предыдущий" это запись из той же таблицы с максимальным X, меньшим чем текущий X
    "следующий" это запись из той же таблицы с минимальным X, большим чем текущий X

    переведи это буквально в синтаксис SQL и будет тебе безошибочный ответ
    https://www.google.ru/search?q=mysql+get+previous+and+next+record+id
     
  3. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Да.
    На странице с активным роликом 2 идентичных кода и для следующего и для предыдущего с разницей
    AND d.id > $id следующее
    AND d.id < $id предыдущее
    Это как?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    первые же результаты гуглессылки дают годные ответы. что именно тебе непонятно?

    Добавлено спустя 12 минут 49 секунд:
    осталось добавить для них условия "минимальный" и "максимальный". справишся?
     
  5. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Нет помоги.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    первая ссылка из поисковой выдачи:
    WHERE x > $current ORDER BY x ASC LIMIT 1 — сортировка по возрастанию, берем первую запись — это минимальное значение x, большее чем текущее значение — получается следующая запись (если она существует).

    аналогично обратное условие "<" + сортировка "DESC" — это будет максимальное значение x, меньшее чем текущее значение — то есть предыдущая запись (если она существует).
     
  7. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Спасибо все разобрался.