Simplificare numerotare in Script paginare
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
adrian_ady
- Mesaje:80
Simplificare numerotare in Script paginare
Salut,
Am scriptul paginare de mai jos.
Cod: Selectaţi tot
<?
class Navigation
{
// $total_rows = total rows;
// $page = current page, if(empty($_GET['page'])) $page=1; else $page = $_GET['page'];
// $limit = number of rows per page, $limit != 0;
// $this_script = file name, it must finish with '?' or '&';
public function __construct()
{
//..
}
static function display($total_rows,$page,$limit,$this_script) // first page = 1
{
if(empty($page)) $page=1;
if($page > 1)
{
echo "<a class='LinkPage pagini' href='".$this_script."page=".($page-1)."'> « </a> ";
}
for($i=1;$i<=ceil($total_rows/$limit);$i++)
{
if($i == $page)
echo "<span class='page pagini'>".$i."</span>";
else
echo "<a href='".$this_script."page=".$i."' class='LinkPage pagini'>".$i."</a>";
}
if($page < ($total_rows/$limit))
{
echo " <a class='LinkPage pagini' href='".$this_script."page=".($page+1)."'> » </a> ";
}
}
}
?>
In prezent arata asa:
<< 1 2 3 4 5 6 7 >>
si doresc ca atunci cand paginile devin numeroase sa simplific cam asa:
<< 1 2 3 ... 6 7 >>
Ce trebuie sa modific?
MarPlo
Mesaje:4343
Salut
Pe site e o
Clasa PHP de Paginare care are si proprietate de $range (numar de link-uri afisate in jurul paginii curente). O poti folosi; iar ca idee vezi cum e facut in metoda getLinks(), partea de cod cu instructiunea for():
Cod: Selectaţi tot
for($x = ($currentpage - $this->range); $x <= ($currentpage + $this->range); $x++) {
// ...
}
- Sau incearca sa inlocuieste in scriptul tau, instructiuniea for() din functia display() cu acesta:
Cod: Selectaţi tot
$pages = ceil($total_rows/$limit);
$pct = ' ... ';
for($i=1;$i<=$pages;$i++) {
if($i == $page) echo "<span class='page pagini'>".$i."</span>";
else if($pages > 4 && $i > ($page + 1) && $i < ($pages -2)) { echo $pct; $pct = '';}
else echo "<a href='".$this_script."page=".$i."' class='LinkPage pagini'>".$i."</a>";
}
adrian_ady
Mesaje:80
Am inteles, am rezolvat asa:
Cod: Selectaţi tot
tatic function display($total_rows,$page,$limit,$this_script) // first page = 1
{
if(empty($page)) $page=1;
if($page > 1)
{
echo "<a class='LinkPage pagini' href='".$this_script."page=".($page-1)."'> « </a> ";
}
for($i=1;$i<=ceil($total_rows/$limit);$i++)
{
$pages = ceil($total_rows/$limit);
if($pages > 15)
{
if($i == $page)
echo "<span class='page pagini'>".$i."</span>";
else if(($i == ($page + 1)) AND (($i > 4) && $i < ($pages - 3)) OR ($i == 5))
echo " ... ";
else if(($i > 4) && $i < ($pages - 3))
echo "";
else
echo "<a href='".$this_script."page=".$i."' class='LinkPage pagini'>".$i."</a>";
}
else
{
if($i == $page)
echo "<span class='page pagini'>".$i."</span>";
else
echo "<a href='".$this_script."page=".$i."' class='LinkPage pagini'>".$i."</a>";
}
}
if($page < ($total_rows/$limit))
{
echo " <a class='LinkPage pagini' href='".$this_script."page=".($page+1)."'> » </a> ";
}
}