Blätterfunktion

sipoh

Erfahrenes Mitglied
Hallo,

ich habe mir eine einfache Blätterfunktion geschrieben und würde gern eure Kritik, Meinung etc. erfahren.

PHP:
<style>

a.page {width:20px; line-height:20px; float:left; margin-right:5px; text-align:center; font-size:9px; font-family:verdana; border:1px solid #aaa}
a.page:hover {width:20px; line-height:20px; float:left; margin-right:5px; text-align:center; font-size:9px; font-family:verdana; color:#fff; border:1px solid; background:#aaa}

span.display {display:block;};

</style>

<?php


function page($array, $expl, $page){
       
 if(is_array($array)) {
	
	// Anzahl der Elemente im Array gesamt
	$anz = count($array);

	// leere Arrays löschen
	for($i = 1; $i <= $anz; $i++) if(!$array[$i]) unset($array[$i]);

	// ARRAY nach x-Anzahl splitten
	$split = array_chunk($array, $expl);
	
	// Anzahl der entstandenen Teile
	$splitteile = count($split);

	// Ausgabe
	if(!isset($page)) $page = 0; // Wenn keine Seite dann 0
	
	if(is_array($split[$page])) {
		
		foreach($split[$page] AS $key => $value) $output .= '<span class="display">'.$value.'</span>';

		// Ausgabe Seitennavigation
		if($splitteile > 1) {
			for($i = 1; $i <= $splitteile; $i++) {
			$seite = $i-1;
			$navi .= '<a href="index.php?page='.$seite.'" class="page">'.$i.'</a>'."\n";
			}

		};

	} else {

		return '<a href="index.php">array['.$page.'] existiert nicht</a>';

	}
	
	return $navi.'<br/><br/>'."\n".$output."\n".'<br/><br/>'."\n".$navi;
	 
 } else {

	 return "Fehler. Kein Array vorhanden.";

 }

}


###########################################################

// Testausgabe schaffen
for($i = 1; $i <= 10; $i++) $objekt[$i] = "value".$i;

// Ausgabe
echo page($objekt, 3, $_GET['page']);



?>
 
Beim Loopen für leere Elemente des Arrays hast du einen Fehler:

PHP:
    // leere Arrays löschen
    for($i = 1; $i <= $anz; $i++) if(!$array[$i]) unset($array[$i]);
Wenn du mit $i = 1 anfängst, vergisst du das erste Element, in PHP gehen Arrays von "0" bis "Elementzahl - 1". Also sollte es eher so aussehen:
PHP:
    // leere Arrays löschen
    for($i = 0; $i < $anz; $i++) if(!$array[$i]) unset($array[$i]);
 
Zurück