<?php
// Deze functie heb je nodig om de bladwijzer-functie te kunnen gebruiken.
// Deze functie staat ook http://www.phphulp.nl/php/scripts/2/1079/
    function url($replace = array(), $url = 'x') {
        // De array $geturl zetten, deze zal later alle GET waarden bevatten
        $geturl = array();

        // De URL geschikt maken, zodat deze gebruikt kan worden (als er geen URL is ingevuld, dan word de huidige URL gebruikt)
        $url = $url == 'x' ? $_SERVER['PHP_SELF'] : $url;
        $explurl = explode('?', $url);

        $url = $explurl[0];
        $url = basename($url);

        // Als de opgegeven URL hetzelfde is als de URL van de pagina waar je nu op bent, dan zullen alle GET waarden
        // ... ook weer meedoen. Als je dit ook wilt bij een URL die niet gelijk is, gebruik dan de functie: url($_GET);
        if ($url == basename($_SERVER['PHP_SELF'])) {
            global $_GET;
            $geturl = $_GET;
        }

        // Hier worden de GET variabelen uit de opgegeven link gehaalt (stel je vult pagina.php?var=8 in,
        // ... dan komt die var=8 ook weer voor in de nieuwe URL)
        if (!empty($explurl[1])) {
            $explurl2 = explode('&', $explurl[1]);
            foreach ($explurl2 as $value) {
                $explvalue = explode('=', $value);
                $geturl[$explvalue[0]] = $explvalue[1];
            }
        }

        // Hier worden alle GET variabelen die ingevuld werden als GET variabelen omgezet.
        foreach ($replace as $key => $value) {
            $geturl[$key] = $value;
        }

        // Hier dan, eindelijk de final touch: Alle GET variabelen worden aan de URL toegevoegd.
        $newurl = $url;
        foreach ($geturl as $key => $value) {
            $newurl .= !empty($key) && !empty($value) ? htmlentities(($newurl == $url ? '?' :'&').$key.'='.urlencode($value)) : '';
        }
    return $newurl;
    }
?> 

<?php
	function bladwijzer($input, $aantal, $scheiding = '-', $pagenaam = 'page', $volgorde = 'ASC', $vorigevolgende = 'regular') {
		// De variabele 'totaal' zetten
		if (is_array($input)) {
			$totaal = count($input);
		}
		else {
			$inputgedaan = mysql_query($input);
			$totaal = mysql_num_rows($inputgedaan);
		}
		// Wat belangrijke variabelen: Aantal pagina's, huidige pagina en het beginpunt van de gewenste resultatien
		$aantpages = ceil($totaal/$aantal);
		
		$nopage = $volgorde == 'ASC' ? 1 : $aantpages;
		$page = isset($_GET[$pagenaam]) ? $_GET[$pagenaam] : $nopage;
		$begin = ($page-1) * $aantal;
		$begin = $begin < 0 ? 0 : $begin;

		// De results (en een scheiding tussen sql en array)
		if (is_array($input)) {
			foreach ($input as $key => $value) {
				if ($i >= $begin && $i < ($begin+$aantal)) {
					$return['array'][$key] = $value;
				}
				$i++;
			}
		}
		else {
			$return['sql'] = mysql_query($input." LIMIT ".$begin.",".$aantal);
			if (mysql_error()) {
				error_function('MySQL', mysql_error().'<br />SQL: '.$input." LIMIT ".$begin.",".$eind, 'function_bladwijzer.php', 28);
			}
		}
		
		// De tekst bepalen voor 'Volgende' en 'Vorige'. Als je weinig ruimte hebt, zijn '«' en '»' wel handig.
		$vorigetext = 'Vorige';
		$volgendetext = 'Volgende';
		$puntjes = '...';
		if ($vorigevolgende == 'klein') {
			$vorigetext = '&raquo;';
			$volgendetext = '&laquo;';
			$puntjes = '&hellip;';
		}
		else {
			$vorigetext = 'Vorige';
			$volgendetext = 'Volgende';
			$puntjes = '...';
		}
		
		// Vorige
		$vorige = $page > 1 ? '<a href="'.url(array($pagenaam => ($page-1))).'">'.$vorigetext.'</a>' : '';
		
		// Volgende
		$volgende = $aantpages >= 1 && ($page+1) <= $aantpages ? '<a href="'.url(array($pagenaam => ($page+1))).'">'.$volgendetext.'</a>' : '';

		// Variabelen voor het inspringen (voor de $scheiding)
		$i_begin = 0;
		$i_eind = $aantpages;
		if (is_numeric($scheiding)) {
			$i_begin = $page-$scheiding;
			$i_eind = $page+$scheiding;
			if ($i_begin < 1) {
				$i_eind -= $i_begin-1;
			}
			if ($i_eind > $aantpages) {
				$i_begin -= $i_eind-$aantpages;
			}
			$vorigepuntjes = $page-$scheiding > 1 ? $puntjes : '';
			$volgendepuntjes = $page+$scheiding < $totaal/$aantal ? $puntjes : '';
		}

		// De nummering
			for ($i = $i_begin; $i <= $i_eind; $i++) {
				if ($i >= 1 && $i <= $aantpages) {
					$bladwijzer[] = $page == $i ? '<b>'.$i.'</b>' : '<a href="'.url(array($pagenaam => $i)).'">'.$i.'</a>';
				}
			}
			if (isset($bladwijzer)) {
				$return['nummering'] = $vorige.' '.$vorigepuntjes.implode(", ", $bladwijzer).$volgendepuntjes.' '.$volgende;
			}
		if ($volgorde != 'ASC') {
			if (isset($bladwijzer)) {
				$bladwijzer = array_reverse($bladwijzer);
				$return['nummering'] = $volgende.' '.$volgendepuntjes.implode(", ", $bladwijzer).$vorigepuntjes.' '.$vorige;
			}
		}
		
		$return['e - l'] = '<a href="'.url(array($pagenaam => $aantpages)).'">Last</a> - <a href="'.url(array($pagenaam => 1)).'">First</a>';
		$return['totaal'] = $totaal;
		return $return;
	}
?>