• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

gästebuch einträge mehrseitig darstellen

Status
Für weitere Antworten geschlossen.

sunflexm

Neues Mitglied
hi,

mein gästebuch ist fast funktionsfaehig, mich stört nur momentan das alle einträge auf einer seite dargestellt werden. wie schaffe ich es, ab jedem 4ten eintrag eine neue seite zu erstellen ( 1 - 2 - 3 > >>).

gbook
 
Nabend,
Es gibt da in SQL die LIMIT clause.
Ein Beispiel:
Code:
SELECT
    *
FROM
    whatever
WHERE
    where clause
LIMIT
    0,4
So werden dann die Einträge 1-4 angezeigt (Wie so oft beginnt die Zählung bei 0). Die Zahl vor dem Komma ist also der Starteintrag, die Zahl dahinter die Anzahl der Beiträge, die angezeigt werden sollen. Sie wird also gleich bleiben, während sich die vor dem Komma ändert.
Ich hatte mal vor langer Zeit eine Klasse dafür geschrieben:
PHP:
class paging {
    var $epp;
    var $currunt;
    var $rsl;
    var $orows;
    var $pages;
    var $pagni;
    function paging($query, $epp, $current, $qstring) {
        $this->epp = $epp;
        $this->currunt = $current = (is_numeric($current))?$current:1;
        $this->qstring = $qstring;
        $query = preg_replace("#(SELECT)#i","$1 SQL_CALC_FOUND_ROWS",$query);
        $this->rsl = mysql_query($query." LIMIT ".($current-1)*$epp.",".$epp) or die(mysql_error());
        $bla = mysql_query("SELECT FOUND_ROWS()");
        $this->orows = mysql_result($bla,0);
        $this->pages = ceil($this->orows/$this->epp);
        $this->pagni = $this->makepages();
        $this->erg = $this->saywhat();
    }
    function makepages() {
        $bla = "<ul class='listpaging'>\n";
        if($this->currunt != 1)
            $bla .= "<li><a title='Erste Seite' href='?".$this->qstring."&amp;page=".(1)."'>&lt;&lt;</a></li>\n";
        if($this->currunt-1 > 0)
            $bla .= "<li><a title='Vorherige Seite' href='?".$this->qstring."&amp;page=".($this->currunt-1)."'>&lt;</a></li>\n";
        for($i=1; $i<=$this->pages; $i++) {
            $bla .= "<li>";
            if($this->currunt != $i)
                $bla .= "<a title='$i. Seite' href='?".$this->qstring."&amp;page=$i'>";
            $bla .= $i;
            if($this->currunt != $i)
                $bla .= "</a>";
            $bla .= "</li>\n";
        }
        if($this->currunt+1 <= $this->pages)
            $bla .= "<li><a title='Nächste Seite' href='?".$this->qstring."&amp;page=".($this->currunt+1)."'>&gt;</a></li>\n";
        if($this->currunt != $this->pages)
            $bla .= "<li><a title='Letzte Seite' href='?".$this->qstring."&amp;page=".($this->pages)."'>&gt;&gt;</a></li>\n";
        $bla .= "</ul>\n\n";
        $bla .= "<br clear='all' style='clear:both' />";
        $bla = str_replace("&amp;page=1","",$bla);
        return $bla;
    }
    function saywhat()
    {
        $blabla = ($this->currunt-1)*$this->epp+1;
        if($blabla + ($this->epp-1) > $this->orows)
            $bubu = $this->orows;
        else 
            $bubu = $blabla+$this->epp-1;
        return $blabla." - ".$bubu." von ".$this->orows." Ergebnissen";
    }
}
Sie wird so aufgerufen:
$paging = new paging ("Deine SQL Query",
(Einträge pro Seite),
$_GET['page'],
"String der den Links vorangestellt werden soll");
Rückgabe:
PHP:
$paging->rsl // Das MySQL-Result der Query
$paging->pagni // Paging als Liste
$paging->orows // Anzahl der Beiträge insgesamt
$paging->erg // Ergebnis der Form: 1 - 4 von 4 Ergebnissen
Ob die Klasse gut ist, kann ich dir nicht sagen, aber für mich hat sie erstmal gereicht...

Gruß
Voodoo
 
Zuletzt bearbeitet:
Noch eine Frage: Wenn du bei LIMIT 0,4 Schreibst nimmt der dann ab Stelle null vier Stück oder nimtm der Stelle null bis vier? dann müsstest du ja 0,3 schreiben.

Gruß Corvulus
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben