Automatische Seitenerstellung

  • Hallo!

    Ich hab ein kleines Problem wo ich nicht weiterkomme, also ich hab ein Gästebuch mit Datenbank anbindung, so sieht die abfrage aus:

    PHP
    <?php
    $abfrage = @mysql_query("SELECT * from guest order by id DESC")or die("Geht nix");
    while($eintraege = mysql_fetch_object($abfrage)) {
           /* Tabelle die alles ausliest */
    }
    @mysql_free_result($abfrage);
    @mysql_close();

    Mein Problem ist jetzt, dass das Gästebuch alles in einer Seite anzeigt und man dan mächtig scrollen muss, bzw. das laden bei mehr Einträgen länger dauert.
    Meine Frage ist also, was oder wie muss ich das machen, dass mir ein PHP Script automatisch seiten erzeugt wo z.b. 10 einträge auf einer seite sein sollen.
    Also das mit den 10 Seiten könnte ich mir noch vorstellen, dass das in der SQL Abfrage geht oder so, aber genau weiß ich das nicht...

    für Hilfe besten Danke im Voraus!!

    gruß

  • beispiel:

    SQL
    SELECT * FROM guest ORDER BY id DESC LIMIT 10

    gibt die ersten 10 einträge aus.

    SQL
    SELECT * FROM guest ORDER BY id DESC LIMIT 10,10

    gibt die nächsten 10 einträge ab position 10 aus..

    jetzt kannst du eine variable "seite" mitgeben und dann diese position ausrechnen:
    bei der seite 1 sind die einträge 1 - 10, bei seite 2 11 - 20, dann 21 - 30...

    jetzt bastelst du die eine rechnung, die dir diese zahlen zurückgibt.

    $proseite = 10;
    $seite = $_GET['seite'];
    $limit = ($seite - 1) * $proseite;

    also:
    SELECT * FROM guest ORDER BY id LIMIT $limit,$proseite

    vielleicht muss du bei limit noch +1 rechnen oder so, dass du keine einträge doppelt anzeigst.. ist nicht getestet, aber wenn du dir ein paar überlegungen in diese richtung machst hast du sicher bald die lösung ;)

  • ich nochmal, hab das mal getestet und wenn ich z.b. gb.php?seite=1 mache dann geht das mit den seiten, aber wie kann es machen, dass der die seiten automatisch erstellt, also wenn z.b. 9 beiträge nur seite 1 steht, oder bei 11 einträgen da ne seite 2 erscheint und bei 21 einträgen ne seite 3 erscheint? Ohne das ich immer einen Link ändern muss??

    gruß

  • genau, ich möchte dass sich die links automatisch erstellen, ich hab mir mal überlegt ich könnte auch einfach ein vor und zurück machen wenn ich die seitenzahl als variable geben und dann einfach +1 machenlass, dann wäre am anfang 0 also seite 1, dann 1 also seite 2 etc. ... aber dann gäbe es bloß ein vor und zurück und das könnte zur verwirrun führen wo man denn gerade ist, da bieten sich seitenzahlen doch besser an oder??

  • sorry :( ich dachte auch nicht, dass er die links selbst macht.
    ich war ein bisschen im stress und die formulierung vernachlässigt :wink:

    ich meinte: für jede seite einen link generieren.

    schon klar macht das keiner von hand :)

    also etwa so...

    Code
    for ($i=1;$i<=$anzahlseiten;$i++)
    {
      echo "<a href='gb.php?seite=$i>$i </a>";
    }

    oder ähnlich. die anzahl seiten bekommst du mit ceil($anzahleintraege/$eintraegeproseite)

    entschuldigt meine undeutliche schreibweise :wink: