2014-11-25 3 views
0

Я работаю на веб-сайте, который работает как блог. В этом блоге есть статьи (я добавляю их от других администраторов), и в этих статьях есть разделы. Я хочу, чтобы, когда пользователь читает какую-либо запись, над сообщением будет две кнопки: previous article и next article. Существует база данных MySQL, который выглядит следующим образом (parent является id раздела):PHP получить следующую/предыдущую запись из MySQL

+------+-------+---------+--------+ 
| id | title | content | parent | etc... 
+------+-------+---------+--------+ 
| 1 | test1 | ...  | 2  | 
| 2 | test2 | ...  | 4  | 
| 3 | test3 | ...  | 2  | 
| 4 | test4 | ...  | 1  | 
| 5 | test5 | ...  | 2  | 
+------+-------+---------+--------+ 

Сейчас, к примеру, пользователь читает test3, и я хочу, чтобы он дал мне Идентификаторы 1 и 5, потому что test1 является предыдущая статья с такими же parent и test5 следующая статья с такими же parent.

Что мне делать, чтобы получить такой результат?

+0

http://www.artfulsoftware.com/infotree/queries.php#75 –

+1

You 're ... основывая это на 'id'? Короче: вы либо _never_ изменяете порядок (может быть действительным, но ограничиваете ваши варианты), либо вы меняете id вокруг (_very_ большой nono ...). Но: это таблица SELECT * FROM WHERE parent_id = И id < ORDER BY id DESC LIMIT 1' для предыдущей и 'SELECT * FROM table WHERE parent_id = И id> ORDER BY id ASC LIMIT 1; 'для следующего. – Wrikken

+0

Да @Wrikken, вот что я хотел! Также спасибо Дагону, это полезно. – debute

ответ

0

запрос для предыдущей статьи:

SELECT id FROM article WHERE id < currentID AND parent = 2 ORDER BY id DESC LIMIT 1 

запрос к следующей статье:

SELECT id FROM article WHERE id > currentID AND parent = 2 ORDER BY id ASC LIMIT 1 
+0

У вас было '' WHERE' два раза, и для предыдущей статьи должен быть порядок DESC, потому что когда есть 3 статьи с более низким 'id' этот текущий, он вернет первый, а не предыдущий. – debute

+0

Замените второй, где есть мальчики AND – Ragnar

+0

, вы правы, но запрос был просто образцовым сравнением двух запросов – ratlab

Смежные вопросы