Publikováno v sekci PHP v
aktualizováno
Každý potřebuje stránkovat jakýkoliv výstup. Všude na netu jsou kvanta stránkovacích skriptů. Většině začátečníků postačí výpis číselné řady (čísílek), ale co tehdy pokud jich je moc?
Napíšou na diskusní forum, že potřebují aby se měnil střed čísílek, a někdo zkušenější napíše, vždyt je to jen pár podmínek, nic co bys nevymyslel. Ano je to tak, ale někomu to může dělat problémy, a proto jsem napsal velmi jednoduchý skriptík, který je dělá to co může začátečník potřebovat. Udělá odkaz na první a poslední číslo v číselné řadě a upravuje dynamický střed podle vybraného čísla. Ke svému správnému fungovaní potřebuje předat pole 4 parametrů, viz ukázka. Ať slouží.
Na ukázku stránkování se můžete podívat zde
<?php
/**
* Strankovani s promenlivym stredem
*
* @param array $options pole slouzici k nastaveni hodnot ktere funkce vyzaduje viz priklad
* @date 28-12-2009
* @author Roman Janko <admin@rjwebdesign.net>
*
**/
$options = array(
'rows_total' => 100,
'offset' => 7,
'interval' => 4,
'url' => '?url=1&',
);
echo pagingBlock($options);
/** ---------- nastaveni ---------- */
function pagingBlock($options = array())
{
$html = '';
$pages_total = ceil($options['rows_total'] / $options['offset']);
$interval = $options['interval'];
$actual_page = empty($_GET["s"]) ? 1 : $_GET["s"];
$url = $options['url']; //"?url=1&";
/** ---------- fix proti URL hacku ---------- */
if ($actual_page < 0)
$actual_page = 1;
if ($actual_page > $pages_total)
$actual_page = $pages_total;
/** ---------- co budeme ukazovat, interval ---------- */
$show = array();
for ($i = $actual_page - $interval; $i <= $actual_page + $interval; $i++)
{
if ($i > 0 && $i <= $pages_total)
$show[] = $i;
}
/** ---------- zacatek rady ---------- */
if ($actual_page - $interval == 2)
{
$html .= "<a href='".$url."s=1'>1</a> ";
}
if ($actual_page - $interval > 2)
{
$html .= "<a href='".$url."s=1'>1</a> ... ";
}
/** ---------- dynamicky stred ---------- */
for ($i = 1; $i <= $pages_total; $i++)
{
if (in_array($i, $show))
{
if ($i == $actual_page)
{
$html .= " <strong>$i</strong> ";
}
else
{
$html .= "<a href='".$url."s=$i'>$i</a> ";
}
}
}
/** ---------- konec rady ---------- */
if ($actual_page + $interval + 1 == $pages_total)
{
$html .= " <a href='".$url."s=".$pages_total."'>".$pages_total."</a>";
}
if ($actual_page + $interval + 1 < $pages_total)
{
$html .= " ... <a href='".$url."s=".$pages_total."'>".$pages_total."</a>";
}
/** ---------- vystup ---------- */
return $html;
}
?>