Jnnbo: Linkleiste für Pager (Nach- und Verbesserungen)

Beitrag lesen

Hallo Jörg,

danke für deine Hilfe, hab es mal versucht einzubauen, aber es ist mir einfach eine Nummer zu hoch.

Mein Test sieht so aus:

define ('FTX_SHOW_PAGES', 1);
define ('FTX_PAGER_LINK_ITEM', '<a href="a-mitarbeiter3?page={{NUMMER}}"><button class="FTX_Pager">{{NUMMER}}</button></a>');
define ('FTX_PAGER_NOLINK_ITEM', '<button class="FTX_Pager">{{NUMMER}}</button>');
define ('FTX_PAGER_BETWEEN_ITEMS', "<br>\n");

define ('LIMIT', 1);

function mkButtons ($min, $max, $aktuellePage) {
    ## Erzeugt die eigentlichen Button, wird von
    ## Funktion Pager aufgerufen.
    $ar=array();
    for ($i=$min; $i<=$max; $i++) {
        # Link oder nicht?
        if ( $i != $aktuellePage ) {
            $ar[] = str_replace('{{NUMMER}}' , $i, FTX_PAGER_LINK_ITEM );
        } else {
            $ar[] = str_replace('{{NUMMER}}' , $i, FTX_PAGER_NOLINK_ITEM );
        }
    }
    return implode( FTX_PAGER_BETWEEN_ITEMS, $ar);
}

function mkPager ($anzahlPages, $aktuellePage) {
    ## Erzeugt den Pager
    $firstPage=0;
    $lastPage=$anzahlPages;

    ## erster Fall: SHOW_PAGES <= $anzahlPages
    if ( FTX_SHOW_PAGES >= $anzahlPages ) {
        return mkButtons( 1, $anzahlPages, $aktuellePage );
    }

    ## Zweiter Fall, genug Seiten:
    # Ermittellen der Mitte
    # Wenn gerade Zahl, dann links der Mitte:
    $min = $aktuellePage  - floor(FTX_SHOW_PAGES / 2 ) + 1 - FTX_SHOW_PAGES % 2;
    $max = $aktuellePage  + floor(FTX_SHOW_PAGES / 2 );

    # Es kann sein, der Ausschnitt muss gerückt werden, wenn die
    # aktuelle Seite nahe am Anfang oder Ende ist:
    while ( $min < 1 ) {
       $min ++;
       $max ++;
    }
    while ( $max > $anzahlPages ) {
       $min --;
       $max --;
    }
    return mkButtons( $min, $max, $aktuellePage );
}

$sql = "SELECT COUNT(*) AS `amount` FROM web_users";
$res = $mysqli->prepare($sql);
$res->execute();
$res->bind_result($amount);
$res->fetch();
$res->close();

$offset=0;

if (isset($_GET['page']) && $_GET['page'] > 1 ) {
    $offset = (intval($_GET['page']) - 1 ) * LIMIT;
}

$pages = ceil($amount/LIMIT);

      $sql = 'SELECT `user_id`, `user_nickname` FROM `web_users` LIMIT ' . LIMIT . ' OFFSET ' . $offset;
        
      $res = $mysqli->prepare($sql);
      $res->execute();
      $res->bind_result($user_id, $user_nickname);
       
	  while ($res->fetch())
       {
          echo $user_nickname . "<br>";
       }
      $res->close();
      
	  if ($amount > LIMIT) { 
	    
		 echo "<div class=\"pagination\">";
		  for($i=1;$i<=$pages;$i++)
		   {
			 $active = "";
	         if ($_SERVER["QUERY_STRING"] == "page=".$i): $active = "active"; endif;
			 echo mkPager(10 , 2), "\n";
		   } 
		 echo "</div>";
	  }

Die Aussage sieht so aus

Alternativ-Text