Перейти к содержимому


Модуль :) навигации в "обсуждениях"


  • Вы не можете ответить в тему
Сообщений в теме: 21

#21 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 15 May 2014 - 04:29 PM

проверьте корректно ли это

Раз работает - значит корректно :). А алгоритмическая красота это уже вопрос второй.

или предложите более изящное решение.

Честно говоря, надо вообще эту функцию переписать нафиг :).
Судя по использованию функции mysql_result (которой я отродясь не пользовался) я этот код откуда-то выдрал целиком.
Я уже писал свой вариант навигатора для чего-то, он поизящнее. Если на забуду - причешу для дискуссий и выложу.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#22 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 15 May 2014 - 08:31 PM

Я уже писал свой вариант навигатора для чего-то, он поизящнее. Если на забуду - причешу для дискуссий и выложу.

Причесал. Даже проверил :). Выкладываю.

function disc_getNavigation($list,$productID)
{
define(DISC2PAGE, 3); // Messages limit on page
$messages = db_fetch_assoc(db_query("SELECT count(*) AS count FROM ".DISCUSSIONS_TABLE." WHERE productID=".$productID));
if ($messages['count'] > DISC2PAGE)
{
$pagecount = ceil($messages['count']/DISC2PAGE);
$list = max((int)$list,1);
$start = DISC2PAGE*($list-1);
$url = "product_".$productID.".html&discuss=yes";
$firstPage = "<a href='".$url."'>&lt;&lt;&lt;</a>&nbsp;&nbsp";
$nav = "<br><center>";
if ($list == 1) $nav .= "<span style='color:grey'>&lt;&lt;&lt;&nbsp;&nbsp;&lt;&lt;</span>";
elseif ($list == 2) $nav .= $firstPage."<a href='".$url."'>&lt;&lt;</a>";
else $nav .= $firstPage."<a href='".$url."&list=".($list-1)."'>&lt;&lt;</a>";
$nav .= "&nbsp;&nbsp";
$n = 1;
for ($i=0; $i<$messages['count']; $i+=DISC2PAGE)
{
$nav .= ($i==$start)?("<b>".$n++."</b>"):("<a href='".$url.($n>1?("&list=".$n):"")."'>".$n++."</a>");
$nav .= "&nbsp;&nbsp";
}
if ($list == $pagecount) $nav .= "<span style='color:grey'>&gt;&gt;&nbsp;&nbsp;&gt;&gt;&gt;</span>";
else $nav .= "<a href='".$url."&list=".($list+1)."'>&gt;&gt;</a>&nbsp;&nbsp;<a href='".$url."&list=".$pagecount."'>&gt;&gt;&gt;</a>";
$nav .= "</center><br>";
return array($nav,$start,DISC2PAGE);
}
return array("",0,DISC2PAGE);
}


функцию all_getNavigation переделываем аналогичным образом.

PS. Навигатор будет чуть другой.
1. ссылки на первую и предыдущую страницы на первой странице дизаблятся (серенькие), а не пропадают. Аналогично и на последней странице для следующей/последней.
2. выводится список ВСЕХ страниц, а не текущая плюс-минус две.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)