 
Выборка по частям (запрос part)
Если в блоке очень много записей, то их желательно разбивать на части, отображая на страничке только одну часть (pagination).
Чтобы записи блока начали автоматически разбиваться на части, нужно с помощью параметра шаблона $params['part']['limit'] задать максимальное число записей в каждой части.
При этом, дополнительно в шаблон будут передаваться следующие переменные шаблона:
$part (номер выбранной части) и $numOfParts (количество частей), а также производные от них, созданные для удобства, а именно: $prevpart (номер предыдущей части), $nextpart (номер следующей части), $parts (массив с номерами всех частей по порядку).
Пример 1: c ссылками на части
parts.tdd
<?php
$types[1] = 'varchar(100)';
$types[2] = 'varchar(100)';
$types[3] = 'varchar(100)';
$params['part']['limit'] = 10;
$params['isMultiRec'] = true;
?>
parts.tpl
<?php
echo "<table>";
foreach ($tab as $dat)
echo "
<tr>
<td>{$dat['edit']}</td>
<td>$dat[1]</td>
<td>$dat[2]</td>
<td>$dat[3]</td>
</tr>
";
echo "</table>";
echo "<br>";
foreach ($parts as $p)
echo "<a href='?page=$page&block=$block&part=$p'>$p</a>";
?>
Для формирования ссылки на ту или иную часть блока служит массив $parts, в котором идет простой перебор от единицы до наибольшего номера части, равного $numOfParts.
Пример 2: c переходами на следующую и предыдущую страницу
Приведем более полный пример с навигацией между смежными частями и инактивацией ссылки на текущую часть (см. снимок). Для этого понадобится переменная $numOfParts (общее число частей).
parts.tpl
<?php
echo "<table>";
foreach ($tab as $dat)
echo "
<tr>
<td>{$dat['edit']}</td>
<td>$dat[1]</td>
<td>$dat[2]</td>
<td>$dat[3]</td>
</tr>
";
echo "</table>";
# prev
if ($part > 1)
{
$prevpart = $part-1;
echo "<a href='?page=$page&block=$block&part=$prevpart'>предыдущая</a>";
}
else
echo "предыдущая";
# next
if ($part < $numOfParts)
{
$nextpart = $part+1;
echo "<a href='?page=$page&block=$block&part=$nextpart'>следующая</a>";
}
else
echo "следующая";
# parts
echo "<br>";
foreach ($parts as $p)
{
if ($p == $part)
echo "$p";
else
echo "<a href='?page=$page&block=$block&part=$p'>$p</a>";
}
?>
В принципе, для перебора частей не обязательно использовать массив $parts – достаточно и переменной $numOfParts, так как перебор можно осуществлять от 1 до $numOfParts с помощью php-оператора for.
См. также
|