Einzelnen Beitrag anzeigen

BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#3

Re: Seitenanzeige in eigenem GB

  Alt 21. Feb 2005, 09:26
Ich mach das ganze immer mitttels dieser schicken Funktion ...

Code:
function blaettern($link, $nr, $start, $showmax, $leftright) {
    /* Copyright 2002  Jens Gottfried */
    /*
        $link        enthält die URL für das Script mit sämtlichen Parametern.
                    Die zum Blättern notwendigen Parameter werden automatisch angehängt

        $nr        enthält die Gesamtanzahl der Einträge
        $start        enthält den Offset der anzuzeigenden Seite
        $showmax   enthält die Zahl der Einträge je Seite
        $leftright    enthält die Anzahl der Direktliks links bzw. rechts von der aktuellen Seitenzahl
    */

    // Wenn die Besucher selbst bestimmen sollen wieviele Einträge auf jeder Seite sichbar sind TRUE
    // sonst FALSE (empfohlen)
    $_allow_showmax_change = TRUE;

    $between = (preg_match('!.?!', $link) == 1) ? '&' : '?';
    if($_allow_showmax_change) $between .= 'showmax='.$showmax.'&';
    $between .= 'start=';

    if($nr > $showmax) {
        $firstNr = 1;
        $lastNr = $nr/$showmax;
        if($nr%$showmax != 0) $lastNr = substr($lastNr, 0, strpos($lastNr, '.'))+1;
        $thisNr = ($start/$showmax)+1;
        $firstOffset = 0;
        $lastOffset = ($lastNr-1)*$showmax;
        $prevOffset = $start-$showmax;;
        $nextOffset = $start+$showmax;
        $begin = $thisNr-$leftright;
            if($begin < $firstNr) $begin = $firstNr;
        $end = $thisNr+$leftright;
            if($end > $lastNr) $end = $lastNr;
        $beginOffset = ($begin-1)*$showmax;
        $endOffset = ($end-1)*$showmax;

        if($start > $firstOffset)
            $blatt = '[url="'.$link.$between.$prevOffset.'"]&laquo; vorherige[/url]'; else
            $blatt = '<span style="cursor: default; color: #AFAFAF">&laquo; vorherige</span>';
        if($begin > $firstNr)
            $blatt .= '[url="'.$link.$between.$firstOffset.'"]'.$firstNr.'[/url] ';

        if(($begin-$firstNr) > 1)
            $blatt .= '... ';

        $offset = $beginOffset;
        for($page=$begin; $page<=$end; $page++) {
            if($offset == $start) $blatt .= '[b]'.$page.'[/b] ';
            else $blatt .= '[url="'.$link.$between.$offset.'"]'.$page.'[/url] ';
            $offset += $showmax;
        }

        if(($lastNr-$end) > 1)
            $blatt .= '... ';

        if($end < $lastNr)
            $blatt .= '[url="'.$link.$between.$lastOffset.'"]'.$lastNr.'[/url]';
        if($start < $lastOffset)
            $blatt .= '[url="'.$link.$between.$nextOffset.'"]nächste &raquo;[/url]'; else
            $blatt .= '<span style="cursor: default; color: #AFAFAF">nächste &raquo;</span>';
    }
    else $blatt = '';

    return $blatt;
}
Benutzt wird das ganze so ... dor wo man die Option zum Blättern haben will gibt man die Funktion folgender maßen aus:

<?=blaettern($link, $nr, $start, $showmax, $leftright)?>

... die Abfrage für die Ausgabe muss um LIMIT $start, $showmax erweitert werden. Das wars auch schon. Sollte es dazu noch Fragen geben oder Probleme ... einfach posten.
Besucht auch mal meine Homepage www.r-kersten.de. Es wäre schön wenn ihr mir einen Gästebucheintrag hinterlasst.
  Mit Zitat antworten Zitat