Как задать ссылку на Следующий топик?

Есть топик, например с id=2, как задать ссылку, так чтобы она вела на следующий топик, например так id=2+1, id=2 айди топика которого просматриваем +1, чтобы на следующий топик.

20 комментариев

avatar
В коде не силен, но как вариант.

В полном топике, в самом низу выводятся переключалки вперед и назад.
1) Добавил только в топики. В фотосетах и т.п. их нету.
2) Если топик добавлен в персональный блог, в ссылке отображается лишний слэш. Как убрать — не в курсе.
3) Переключалки ведут на топик со следующим или предудыщим ID.
То есть, если шло 58 59, а 60 61 62 были удалены, то на 63 перескакивать не будет. Будет переходит на топик с id 60 и выдавать о несуществующей странице. Тоже не в курсе как поправить.
4) Хотелось бы скрывать ссылку Читать следующий топик, если я нахожусь в последнем топике.

Вот код
<a href="{$aPaging.sBaseUrl}/blog/{$oBlog->getUrl()}/{$oTopic->getId()+1}.html">Читать следующий топик →</a>
Буду очень рад, если кто-нибудь доработает (или напишет заново — неважно), так как функция полезная :)

Посмотреть как работает можно здесь http://ibamboo.ru/demo/
avatar
спасибо друг!!!
Хотелось бы скрывать ссылку Читать следующий топик, если я нахожусь в последнем топике.

да, этого тоже не хватает
avatar
Есть ручное добавление айдишника, при добавлении топика т.е. есть поле, которое нужно каждый раз заполнять, увеличивая число на 1, например если я добавил уже топик с айди 1, то при добавлении другого я в поле пишу 2 и так по возрастанию.
Помогите сделать так, чтобы данное поле заполнялось автоматически через шаблон, т.е. чтобы при добавлении нового топика брался id предыдущего и к нему прибавлялось число 1.
Например добавил уже топик, его id=2, добавляю новый топик и в поле (где ручное добавление) автоматически становится 3 (id последнего топика=2+1)
avatar
Ыы…
Есть например топки c Id's -> 1,2,3,4,5,6
И вот потом удалил топики 2,3,6
И что тогда вы там будете прибавлять-вычитать? =))

На самом деле надо сначала определиться, как топики сортируются (по какому правилу).
Id текущего топика нам известен, делаем запрос в БД для выяснения ID соседних топиков с учетом установленной сортировкой топиков, и вуаля, мы получаем Id соседей, если они есть вообще. дальше дергаем нужные данные для этих соседей и передаем в шаблон.
avatar
у меня не топики, я просто привел пример для них, чтобы понятнее было, представь, что они не удаляются у меня.
avatar
Ну так это все равно не правильно.
Ты будешь ссылаться на Id, существование которого не проверено. Это не правильно.
avatar
скорее всего, чотбы избежать проблем с удаленными топиами, правильное решение — добавить экшен/модуль/мапер/ передаем id текущего топика и в мапере запрос примерно такой
$sql = "SELECT * FROM ".Config::Get('db.table.topic')." 
	WHERE 				
		topic_id > ? 
	LIMIT 0,1";
avatar
Еще и Id предыдущего топика надо дернуть.
Что бы была навигация вперед-назад
avatar
не обязательно, примерный запрос.

$sDirectSql = '>';
$sSortSql = 'desc';
if ($sDirect == 'prev') { $sDirectSql = '<'; $sSortSql = 'asc';}
$sql = "SELECT * FROM ".Config::Get('db.table.topic')." 
        WHERE                           
                topic_id $sDirect ? 
        LIMIT 0,1
        ORDER BY topic_id $sSortSql";
А в навигации передавать next/prev напрмиер
avatar
сор LIMIT и ORDER поменять местами. Пишу сходу пожтому возможны ошибки… но смысл думаю донес
avatar
А в навигации передавать next/prev напрмиер
это типо писать новый ивент что ле? для next/prev? а на кнопки пихать урлы типа sity.ru/blog/tratata/1222/prev?
нафига? и опять таки, кнопки next/prev надо показывать в зависимости, если предыдущий или следующий материал.

надо сразу, при запросе топика узнавать соседние топики и сразу отдавать шаблону на них ссылки, ну и названия например. а если соседа нету (первый и последний топик) то возвращать null в шаблон, и он уже не будет сувать ссылку на соседа.
avatar
ну это уже детали. я лишь предложил вариант решения.
avatar
скину на пиво тому, кто поможет решить данный вопрос
Есть ручное добавление айдишника, при добавлении топика т.е. есть поле, которое нужно каждый раз заполнять, увеличивая число на 1, например если я добавил уже топик с айди 1, то при добавлении другого я в поле пишу 2 и так по возрастанию.
Помогите сделать так, чтобы данное поле заполнялось автоматически через шаблон, т.е. чтобы при добавлении нового топика брался id предыдущего и к нему прибавлялось число 1.
Например добавил уже топик, его id=2, добавляю новый топик и в поле (где ручное добавление) автоматически становится 3 (id последнего топика=2+1)
avatar
Это что еще за извращение то?
auto_increment уже не устраивает в БД?
avatar
Уже занято, т.е. в бд auto_increment можно только один раз, а у меня два вида айдишника у топика внутренний и внешний.
avatar
объяснять что и как сделано не буду, просто нужно решение данному вопросу, как описал
avatar
avatar
есть у кого-нибудь идеи?
avatar
Узнать максимальное значение id в таблице и вывести в шаблон прибавив единицу
avatar
SELECT MAX(column_id) AS column_id FROM prefix_table
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.