Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Seitenanzeige in eigenem GB (https://www.delphipraxis.net/40790-seitenanzeige-eigenem-gb.html)

Akut-Programming 21. Feb 2005 08:14


Seitenanzeige in eigenem GB
 
Moin Leute!!

Ich habe jetzt für die Firma in der ich arbeite ein Gästebuch geschrieben. - Soweit ist alles fertig, war ja auch nicht unbedingt der Aufwand. An einer Sache hänge ich jetzt aber noch. - Ich will das nur 10 Einträge auf der Seite angezeigt werden, sollten es mehr werden, müssen die Einträge auf mehrere Seiten verteilt werden. Also auf jeder Seite sollten maximal 10 Einträge sichtbar sein. Hat jemand ne Idee, wie ich das so geordnet aus MySQL holen kann?

Gruß,
Sascha

Sanchez 21. Feb 2005 08:19

Re: Seitenanzeige in eigenem GB
 
Hi,
Schau mal hier.
Google ist mein Freund :mrgreen:

grüße, daniel

BorlanDelphiUser 21. Feb 2005 08:26

Re: Seitenanzeige in eigenem GB
 
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.

Akut-Programming 21. Feb 2005 09:20

Re: Seitenanzeige in eigenem GB
 
Danke euch zwein!! Das von Sanchez war genau das, was ich suchte. ;)

Gruß,
Sascha


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz