<?php
/*
Copyright?
Je mag doen met dit script wat je wilt, behalve "Gemaakt door grayen" weghalen.
Wat kan dit script?
Dit is een navigatie script dat voor zowel mysql_querys en arrays worden gebruikt.
Bij dit script kan je zelf kiezen wat voor een soort navigatie je wilt
(misschien leuk als je een profielen systeem hebt, zodat mensen dat zelf kunnen kiezen).
Hoe te gebruiken?
$iExact_totaal: Het aantal items, met behulp van bijv mysql_num_rows of count.
$iNav: Welk navigatie je wilt gebruiken, de mogelijkheden zijn:
1 = alleen volgende, vorige, eerste, laatste.
Eerste - Vorige - Midden stuk - Volgende - Laatste
2 = een dropdown menu.
<< < [1] > >>
|2|
|3|
2 of hoger = menu voor veel pagina's.
Eerste - Vorige - [1-4] - 5 - 6 - 7 - 8 - [9 - 12] - Volgende - Laatste
$iMax_items: Hoeveel items er per pagina moeten worden weergegeven.
$sLink: De url hierin moet je ergens [nav] plaatsen en dat is alles,
dus als we bij item nr 5 zijn dan kan het bijv dit zijn:
index.php?pagina=foto&id=[nav] = index.php?pagina=foto&id=5
index.php?nav=[nav] = index.php?nav=5
$iQuery: Of het een mysql_query of een array is, dit moet omdat mysql_querys met LIMIT werken
0 = array
1 = query
$iHuidig: Bij welke navigatie pagina we nu zijn. Altijd $_GET['gekozen tekst voor [nav]'],
dus bijvoorbeeld bij:
index.php?pagina=foto&id=[nav] = $_GET['id']
index.php?nav=[nav] = $_GET['nav']
Voorbeeld:
$iExact_totaal = mysql_num_rows(mysql_query("SELECT * FROM tabel_naam"));
$iNav = 2;
$iMax_items = 10;
$sLink = "index.php?pagina=forum/topic&nav=[nav]";
$iQuery = 1;
$iHuidig = $_GET['nav'];
$aNavigatie = navigatie($iExact_totaal, $iNav, $iMax_items, $sLink, $iQuery, $iHuidig);
if(isset($aNavigatie)){
$qtopic = mysql_query("SELECT * FROM tabel_naam LIMIT ".$aNavigatie['begin'].", ".$aNavigatie['eind']) or die('Error on line '.__LINE__.' : ' . mysql_error());
}
if(isset($qtopic)){
while($topic = mysql_fetch_assoc($qtopic)) {
wat je wilt doen met de gekozen items...
}
if(isset($aNavigatie['navigatie'])){
echo $aNavigatie['navigatie'];
}
Gemaakt door Grayen
*/
function navigatie ($iExactTotaal, $iNav, $iMaxItems, $sLink, $iQuery, $iHuidig){
/* Hoofdconfiguratie */
$iLinksRechts = 4;
$iPerKeer = 4;
/* Basis variablen berekenen */
if($iHuidig < $iMaxItems){
$iHuidig = $iMaxItems;
}
elseif($iHuidig > $iExactTotaal){
$iHuidig = $iExactTotaal;
}
$iHuidig = ceil($iHuidig / $iMaxItems); $iMax = ceil($iExactTotaal / $iMaxItems); $sNav = '';
/* Navigatie: Eerste - Vorige - Midden stuk - Volgende - Laatste */
if($iNav == 1){
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].'0'.$aLink[1].'">Eerste</a> - ' : 'Eerste - ');
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].(($iHuidig - 1) * $iMaxItems).$aLink[1].'">Vorige</a> - ' : 'Vorige - ');
$sNav .= '[midden]';
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].(($iHuidig + 1) * $iMaxItems).$aLink[1].'">Volgende</a> - ' : 'Volgende - ');
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].($iMax * $iMaxItems).$aLink[1].'">Laatste</a>' : 'Laatste');
$aNav = explode('[midden]', $sNav); $aReturn['vorige'] = $aNav[0];
$aReturn['volgende'] = $aNav[1];
$aReturn['navigatie'] = $aNav[0].$aNav[1];
}
/* Navigatie: Dropdown */
if($iNav == 2){
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].'0'.$aLink[1].'">Eerste</a> - ' : 'Eerste - ');
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].(($iHuidig - 1) * $iMaxItems).$aLink[1].'">Vorige</a> - ' : 'Vorige - ');
$sNav .= '<form method="post" action="" style="margin: 0; padding: 0; display: inline;"><select onchange="window.location=\''.$aLink[0].'\' + this.value + \''.$aLink[1].'\'">';
for($i = 1; $i <= $iMax; $i ++){
$sNav .= '<option'.($i == $iHuidig ? ' selected="selected"' : '').' value="'.($i * $iMaxItems).'">'.$i.'</option>';
}
$sNav .= '</select></form> - ';
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].(($iHuidig + 1) * $iMaxItems).$aLink[1].'">Volgende</a> - ' : 'Volgende - ');
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].($iMax * $iMaxItems).$aLink[1].'">Laatste</a>' : 'Laatste');
}
/* Navigatie: Eerste - Vorige - 2 - 3 - 4 - 5 - Deze pagina - 7 - 8 - 9 - 10 - Volgende - Laatste */
if($iNav == 3){
$iLinks = $iHuidig - $iLinksRechts;
if($iLinks < 1){
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].'0'.$aLink[1].'">Eerste</a> - ' : 'Eerste - ');
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].(($iHuidig - 1) * $iMaxItems).$aLink[1].'">Vorige</a> - ' : 'Vorige - ');
for($i = 1; $i < $iHuidig; $i++){
$sNav .= '<a href="'.$aLink[0].($i * $iMaxItems).$aLink[1].'">'.$i.'</a> - ';
}
}
else {
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].'0'.$aLink[1].'">Eerste</a> - ' : 'Eerste - ');
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].(($iHuidig - 1) * $iMaxItems).$aLink[1].'">Vorige</a> - ' : 'Vorige - ');
for($i = $iLinks; $i < $iHuidig; $i++){
$sNav .= '<a href="'.$aLink[0].($i * $iMaxItems).$aLink[1].'">'.$i.'</a> - ';
}
}
$sNav .= '<strong>'.$iHuidig.'</strong> - ';
$iRechts = $iHuidig + $iLinksRechts;
if($iRechts > $iMax){
for($i = $iHuidig + 1; $i <= $iMax; $i++){
$sNav .= '<a href="'.$aLink[0].($i * $iMaxItems).$aLink[1].'">'.$i.'</a> - ';
}
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].(($iHuidig + 1) * $iMaxItems).$aLink[1].'">Volgende</a> - ' : 'Volgende - ');
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].($iMax * $iMaxItems).$aLink[1].'">Laatste</a>' : 'Laatste');
}
else {
for($i = $iHuidig + 1; $i <= $iRechts; $i++){
$sNav .= '<a href="'.$aLink[0].($i * $iMaxItems).$aLink[1].'">'.$i.'</a> - ';
}
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].(($iHuidig + 1) * $iMaxItems).$aLink[1].'">Volgende</a> - ' : 'Volgende - ');
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].($iMax * $iMaxItems).$aLink[1].'">Laatste</a>' : 'Laatste');
}
}
/* Navigatie: Eerste - Vorige - [1-4] - 5 - 6 - 7 - 8 - [9 - 12] - Volgende - Laatste */
if($iNav == 4){
$iOffset = ceil($iHuidig / $iPerKeer); $iOffsetMax = ceil($iMax / $iPerKeer); $iBegin = $iOffset * $iPerKeer - $iPerKeer + 1;
$iEind = $iOffset * $iPerKeer;
if($iEind > $iMax){
$iEind = $iMax;
}
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].'0'.$aLink[1].'">Eerste</a> - ' : 'Eerste - ');
$sNav .= ($iHuidig > 1 ? '<a href="'.$aLink[0].(($iHuidig - 1) * $iMaxItems).$aLink[1].'">Vorige</a> - ' : 'Vorige - ');
if($iOffset > 1){
$iVorige = ($iOffset - 1) * $iPerKeer - $iPerKeer + 1;
$sNav .= '<a href="'.$aLink[0].($iVorige * $iMaxItems).$aLink[1].'">['.$iVorige.' - '.(($iOffset - 1) * $iPerKeer).']</a> - ';
}
for($i = $iBegin; $i <= $iEind; $i++){
$sNav .= ($i == $iHuidig ? '<strong>'.$i.'</strong> - ' : '<a href="'.$aLink[0].($i * $iMaxItems).$aLink[1].'">'.$i.'</a> - ');
}
if($iOffset < $iOffsetMax){
$iVolgende = ($iOffset + 1) * $iPerKeer - $iPerKeer + 1;
$sNav .= '<a href="'.$aLink[0].($iVolgende * $iMaxItems).$aLink[1].'">['.$iVolgende.' - '.(($iOffset + 1) * $iPerKeer).']</a> - ';
}
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].(($iHuidig + 1) * $iMaxItems).$aLink[1].'">Volgende</a> - ' : 'Volgende - ');
$sNav .= ($iHuidig < $iMax ? '<a href="'.$aLink[0].($iMax * $iMaxItems).$aLink[1].'">Laatste</a>' : 'Laatste');
}
/* Navigatie afronden */
$aReturn['begin'] = $iHuidig * $iMaxItems - $iMaxItems;
$iEind = $iHuidig * $iMaxItems;
if($iNav != 1){
$aReturn['navigatie'] = $sNav;
}
if($iQuery == 1){
$aReturn['eind'] = $iMaxItems;
}
else {
if($iExactTotaal < $iEind){
$aReturn['eind'] = $iExactTotaal;
}
else {
$aReturn['eind'] = $iEind;
}
}
return($aReturn);
}
?>