|
 9.7 Кб |
|
| При выводе большого списка принято его разбивать на страницы с определенным количеством строк на каждой (например, по 10 строк). При этом возникает необходимость оперативного выбора конкретной страницы списке. Если список большой, то часть страниц пропускается (скриншот).
Как это осуществить? | |
|
|
|
|
|
|
|
для: Владимир55
(25.11.2012 в 13:39)
| | тут чистая математика
например всего страниц 20, надо показать первые 5 и последние 5
формируем ссылки 1, 2, 3, 4, 5 и 20-4, 20-3, 20-2, 20-1, 20
___
при формировании ссылок с количеством сообщений принцип тот же
например со [115-125] ... [290-300], только математики чуть побольше | |
|
|
|
|
|
|
|
для: Valick
(25.11.2012 в 13:46)
| | Спасибо!
А то я предположил, что мудрый РНР мог что-нибудь предусмотреть и на этот случай. | |
|
|
|
|
|
|
|
для: Владимир55
(25.11.2012 в 14:05)
| | Как правило, предусматривается, но уже на уровне FrameWork-ов и CMS. | |
|
|
|
|
 9.7 Кб |
|
|
для: Valick
(25.11.2012 в 13:46)
| | Всеж таки, непонятно, как реально составить условия вывода.
Предположим, что имеется 12 строк с названиями групп товаров и 990 названий товаров. Всего 1002 строки, которые надо вывести по 10 на странице.
Изначально выводим:
1 2 3 4 5 6 7 8 9 10 ... 101
Посетитель кликает на 9 и должно получиться, как в скриншоте.
Как описать эти условия вывода, чтобы перейти к реализации алгоритма? | |
|
|
|
|
|
|
|
для: Владимир55
(29.11.2012 в 11:02)
| | код вырезан из рабочего проекта. заменить - запросы, ссылки на страницу, картинки-стрелки
комментарии есть, если иметь ввиду, что meta - это ПОСЛЕ, а prin - ДО, то код вполне читаем.
разбиение делается блоками ДО и ПОСЛЕ текущей страницы, в данном случае - блок=5, можно
поменять. есть ссылки на первую и последнюю страницу. если что не так, спрашивайте, помогу.
я сделала вывод по 2 результата на страницу ($on_page) только для наглядности, можно менять.
<?
if (!isset($_GET["start_from"]) || $_GET["start_from"]=="") $start_from=0;
else $start_from = $_GET["start_from"];
$find_page_test = mysql_query("select id from ".$db_prefix."partners ") or die(mysql_error());
$abc = mysql_num_rows($find_page_test); /// all records
$on_page = 2;
// primer zaprosa pri yslovii nalichia $start_from i $on_page!!!!!!
//$users_query = mysql_query("select *, title_comp as title_comp from ".$db_prefix."partners LIMIT $start_from, $on_page") or die(mysql_error());
/// tyt idet vivod rezul'tatov zaprosa
?>
<? if ($abc > $on_page) {?>
<table>
<tr>
<? $count_pages = ceil($abc / $on_page); /// skol'ko stranic
$block = 5; /// skol'ko ssilok
$prin = $start_from - 5; /// chislo ssilok DO
if (($prin < 0) && ($start_from > 1))
{
$pred = $start_from - 1;
echo "<td><a href='?start_from=".$pred."'><img src='images/prev.gif' border=0 width=12 height=12 hspace=4 alt=''></td>"; /// kartinka - strelka
for ($i = $start_from - 1; $i > 0; $i--)
{$nomer = $start_from-$i;
echo "<td><a href='?start_from=".$nomer."'>".$nomer."</a></td>";
}
}
if (($prin > 0) && ($start_from > 1))
{
$pred = $start_from - 1;
echo "<td><a href='?start_from=".$pred."'><img src='images/prev.gif' border=0 width=12 height=12 hspace=4 alt=''></a></td>";
for ($i = $block - 1; $i >= 1; $i--)
{$nomer = $start_from-$i;
echo "<td><a href='?start_from=".$nomer."'>".$nomer."</a></td>";
}
}
if ($start_from > 0) echo "<td><b>".$start_from."</b></td>"; // tek.stranica
$meta = $start_from + 5; /// chsislo ssilok POSLE
if (($meta > $count_pages) && ($start_from < $count_pages))
{
$sled = $start_from + 1;
for ($i = $start_from+1; $i <= $count_pages; $i++)
{$nomer = $i;
echo "<td><a href='?start_from=".$nomer."'>".$nomer."</a></td>";
}
echo "<td><a href='?start_from=".$sled."'><img src='images/next.gif' border=0 width=12 height=12 hspace=4 alt=''></a></td>";
}
if (($meta < $count_pages) && ($start_from < $count_pages))
{
$sled = $start_from + 1;
for ($i = $start_from + 1; $i < $start_from + 5; $i++)
{$nomer = $i;
echo "<td><a href='?start_from=".$nomer."'>".$nomer."</a></td>";
}
echo "<td><a href='?start_from=".$sled."'><img src='images/next.gif' border=0 width=12 height=12 hspace=4 alt=''></a></td>";
}
?>
</td>
</tr> </table>
<!-- end paging -->
<?}?>
|
| |
|
|
|