PageNav Class
Auteur: Rens - 09 juli 2005 - 14:08 - Gekeurd door: Tuinstoel - Hits: 7130 - Aantal punten: 4.58 (6 stemmen)
Ik heb even een pagina navigatie class gemaakt.
Ik heb even een paar simpele queries genomen, voor het voorbeeld.
Ze moeten natuurlijk wel aangepast worden voor eigen gebruik.
Als je nog vragen hebt, stuur maar een pm of plaats een reactie op dit script.
In het script zelf staan ook nog comments, dus het is denk ik wel duidelijk.
|
Code: |
class.PageNav.inc.php:
<?PHP
// class beginnen
class PageNav
{
// de functie die onze navigatie gaat maken
// $iPagina = pagina waarop de gebruiker zit
// $iTotaalPagina = totaal aantal paginas
// $sPagina = link naar de pagina
function nav($iPagina, $iTotaalPagina, $sPagina)
{
// nieuwe var maken, hierin komt de nav te staan
$this->sNav = "";
// kijken of er al een ? in de url staat
// als dit zo is, gebruiken we de & om nav in de url te zetten
if(ereg("[?]", $sPagina))
{
// er staat een ? in de url, dus gaan we & gebruiken
$this->sAdd = "&";
} else
{
// er staat nog geen ? in de url, dus gaan we ? gebruiken
$this->sAdd = "?";
}
// kijken of de gebruiker op de eerste pagina zit
if(($iPagina-1) > -1)
{
// nee, de gebruiker zit op een pagina hoger dan 0
$this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".($iPagina-1)."'>Vorige</A> - ";
}
// de nummering
// 1 - 2 - 3
for($i = 0; $i < $iTotaalPagina; $i++)
{
// is de huidige pagina gelijk aan &i ?
if($i == $iPagina)
{
// ja, de gebruiker zit op pagina $i
// dus maken we hier de $i bold
// de gebruiker zit immers al op deze pagina
$this->sNav .= "<b>".($i+1)."</b> - ";
} else
{
// nee, de gebruiker zit op een andere pagina
// dus we maken er een gewone link van
$this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".$i."'>".($i+1)."</A> - ";
}
}
// zit de gebruiker op de laatste pagina
if(($iPagina+1) <= $iTotaalPagina)
{
// nee, de gebruiker zit nog niet op de laatste pagina
$this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".($iPagina+1)."'>Volgende</A> - ";
}
// het laatste streepje van $this->sNav afhalen
$this->sNav = subStr($this->sNav, 0, strLen($this->sNav)-3);
// de nav teruggeven
return $this->sNav;
}
}
?>
<?PHP // class beginnen class PageNav { // de functie die onze navigatie gaat maken // $iPagina = pagina waarop de gebruiker zit // $iTotaalPagina = totaal aantal paginas // $sPagina = link naar de pagina function nav($iPagina, $iTotaalPagina, $sPagina) { // nieuwe var maken, hierin komt de nav te staan $this->sNav = ""; // kijken of er al een ? in de url staat // als dit zo is, gebruiken we de & om nav in de url te zetten if(ereg("[?]", $sPagina)) { // er staat een ? in de url, dus gaan we & gebruiken $this->sAdd = "&"; } else { // er staat nog geen ? in de url, dus gaan we ? gebruiken $this->sAdd = "?"; } // kijken of de gebruiker op de eerste pagina zit if(($iPagina-1) > -1) { // nee, de gebruiker zit op een pagina hoger dan 0 $this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".($iPagina-1)."'>Vorige</A> - "; } // de nummering // 1 - 2 - 3 for($i = 0; $i < $iTotaalPagina; $i++) { // is de huidige pagina gelijk aan &i ? if($i == $iPagina) { // ja, de gebruiker zit op pagina $i // dus maken we hier de $i bold // de gebruiker zit immers al op deze pagina $this->sNav .= "<b>".($i+1)."</b> - "; } else { // nee, de gebruiker zit op een andere pagina // dus we maken er een gewone link van $this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".$i."'>".($i+1)."</A> - "; } } // zit de gebruiker op de laatste pagina if(($iPagina+1) <= $iTotaalPagina) { // nee, de gebruiker zit nog niet op de laatste pagina $this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".($iPagina+1)."'>Volgende</A> - "; } // het laatste streepje van $this->sNav afhalen $this->sNav = subStr($this->sNav, 0, strLen($this->sNav)-3); // de nav teruggeven return $this->sNav; } } ?>
Voorbeeld:
<?PHP
// de class includen
include("class.PageNav.inc.php");
// de class starten
$cPageNav = new PageNav;
// max aantal berichten per pagina
$iMax = 5;
// checken of er een nav= in de url staat
if(IsSet($_GET['nav']) && Is_Numeric($_GET['nav']))
{
// ja, die staat er
// hier ophalen, *$iMax doen en in $iPagina zetten
$iPagina = $_GET['nav']*$iMax;
} else
{
// nee, die staat er niet
// dus niet ophalen, en *$iMax hoeft ook niet
// 0*$iMax is natuurlijk nog steeds 0
$iPagina = 0;
}
// query voor het tellen van aantal berichten
$sQueryAantal = "SELECT COUNT(id) AS aantal FROM reacties WHERE topicID=".$_GET['id'];
// query uitvoeren
if(!$rResultAantal = MySQL_Query($sQueryAantal))
{
// er is een fout in de query
echo "Error!- Kan de query niet uitvoeren!";
echo MySQL_Error()."<br />".MySQL_Errno();
} else
{
// aantal berichten in $iAantal zetten
$iAantal = ceil(MySQL_Result($rResultAantal, 0, "aantal")/$iMax);
// normale query, deze is voor de gegevens van pagina $iPagina
$sQuery = "SELECT titel FROM reacties ORDER BY id DESC LIMIT ".$iPagina.", ".$iMax." WHERE topicID=".$_GET['id'];
if(!$rResult = MySQL_Query($sQuery))
{
// de query kan niet worden uitgevoerd
echo "Error!- Kan de query niet uitvoeren!";
echo MySQL_Error()."<br />".MySQL_Errno();
} else
{
// loopje die titels e.d. weergeeft
while($aFetch = MySQL_Fetch_Assoc($rResult))
{
echo $aFetch['titel']."<br />";
}
// de navigatie echoën
echo $cPageNav->nav($iPagina, $iAantal, "forum/viewtopic.php?id=5");
}
}
?>
<?PHP // de class includen include("class.PageNav.inc.php"); // de class starten $cPageNav = new PageNav; // max aantal berichten per pagina $iMax = 5; // checken of er een nav= in de url staat { // ja, die staat er // hier ophalen, *$iMax doen en in $iPagina zetten $iPagina = $_GET['nav']*$iMax; } else { // nee, die staat er niet // dus niet ophalen, en *$iMax hoeft ook niet // 0*$iMax is natuurlijk nog steeds 0 $iPagina = 0; } // query voor het tellen van aantal berichten $sQueryAantal = "SELECT COUNT(id) AS aantal FROM reacties WHERE topicID=".$_GET['id']; // query uitvoeren { // er is een fout in de query echo "Error!- Kan de query niet uitvoeren!"; } else { // aantal berichten in $iAantal zetten // normale query, deze is voor de gegevens van pagina $iPagina $sQuery = "SELECT titel FROM reacties ORDER BY id DESC LIMIT ".$iPagina.", ".$iMax." WHERE topicID=".$_GET['id']; { // de query kan niet worden uitgevoerd echo "Error!- Kan de query niet uitvoeren!"; } else { // loopje die titels e.d. weergeeft { echo $aFetch['titel']."<br />"; } // de navigatie echoën echo $cPageNav->nav($iPagina, $iAantal, "forum/viewtopic.php?id=5"); } } ?>
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|