Automatische Seitenerstellung im Gästebuch

  • Hi liebe Leutz!

    Wie folgt siehts aus:

    Hab ne Homepage mit Gästebuch erstellt, mit SQL anbindung, mittlerweile sind über 120 Einträge in dem GB, leider alles in einer seite, ist viel zu Scrollen :( ... was ich gerne machen würde, dass das GB automatisch nach 10 Einträgen eine Seite erstellt.

    Leider weiß ich nicht wie das geht, zerbreche mir schon lange daran den Kopf. Meine erste überlegung war, dass die SQL Abfrage schonmal maximal 10 datensätze ausgeben soll, dann müsste ja Seite 1 stehen, gibt es mehrere Datensätze müsste dann ne Seite 2 angezeigt werden die dann dieDatensätze 11-20 anzeigt, dann ne Seite 3 von 21-30 usw. ... leider scheitere ich mit meinen schwachen SQL Kenntnissen an der SQL Abfrage.

    Kann mir da vlt jemand helfen?? Wäre sehr Geil!!

    Gruß Mülla

  • thema wurde schon x-mal behandelt. deshalb kurze antwort: prinzipiell is das richtig, was du denkst. ich geb dir die idee, programmiern musst selbst ;)
    du zählst die einträge deiner db, dividierst sie durch 10 --> du weißt wieviel seiten du hast. dann beginnst du bei seite 1 mit den einträgen 1 - 10 (mit LIMIT 1,10) und machst einen link auf seite 2 (3,4,...) der so aussieht: gästebuch.php?limit_unten=11&limit_oben=20 und mit diesen angaben erstellst du dann die zweite seite (LIMIT $limit_unten,$limit_oben). fertig

    bei spezielleren problemen wieder melden!

    mfg

  • mit .txt datein is das noch einfacher. du hast einen array mit allein einträgen und im link steht von welcher arrayzahl bis zu welcher er anzeigen soll (seite.php?anf=0&end=9)
    und dann einfach:
    [php:1:19ffb07068]<?php
    for ($i = $_GET['anf']; $i <= $_GET['end']; i++) {
    echo $array[$i];
    #und weitere ausgaben
    }
    ?>[/php:1:19ffb07068]

  • hi, hab das bisher geschafft:

    PHP
    <?php
    $abfrage = @mysql_query("SELECT count(id) as summe from gbook");
    	while($sum = mysql_fetch_object($abfrage)) {
    		$seiten = $sum->summe/10;
    
    
    		}
    echo "Seiten: $seiten";				
    ?>

    so hätte ich nun nur die Seitenzahl insgesamt da stehen, jetzt weiß ich nicht wie ich das machen soll, dass der die einzelnen links erstellt.

    meine eigentlich Abfrage sieht momentan so aus:

    Code
    Select * from gbook order by id desc Limit 1,10

    hab mir überlegt z.b bei der 0 als $limit_unten und die 10 als $limit_oben, da die 0, später ne 11,d ann ne 21 ist usw, also immer 9 kleiner als das limit oben könnte man doch auch einfach sagen

    Code
    $limit_unten = $limit_oben-9;


    oder? Nur ich weiß nicht wie ich die gesamte Seitenzahl in Zusammenhang mit der Limit_oben bringe, irgendwie versteh ich das nicht ganz.

    Über weitere Hilfe würd ich mich freuen :)

    gruß

  • Hab auch ein GB geschrieben! Hier mal der Quellltext


    [php:1:96a06fc317]<?php
    $anz_soll=10; // Anzahl der Maximal anzuzeigehden Beiträge (manuel einstellbar)
    $max = mysql_num_rows($eintrag);
    $seiten=ceil(mysql_num_rows($eintrag) / ($anz_soll));

    if(empty($seite)) $seite=$seiten;
    if(empty($seite)) $seite=1;


    $max_anz=$anz_soll*$seite; // dynamische berechnung der unteren und
    $tmp = $max_anz-$anz_soll; // oberen Grenze der anzuzeigenden Einträge

    for($x=$max_anz; $x>$tmp; $x=$x-1) { // Kopfschleife die die Einträge im GB anzeigt und mit dem letzten beginnt
    If($x<=$max){ // Nur wenn der Eintrag auch vorhanden ist (d.h. wenn die Laufvariable x nicht größer ist als
    // die anzahl der Einträge dann wird nur der Eintrag angezeigt
    include("inc/tabelle.php"); // Einfügen vom Tabellenaufbau aus der Datei "tabelle.php" im Ordner "inc"
    echo "
    ";
    } // ENDE der bedingten Anweisung (If($x<=$max))
    } // Ende der Schleife die die Einträge anzeigt
    ?>
    <table border="0" width="90%" align="center">
    <tr>
    <td align="center">
    <?
    for($x=$seiten; $x>0; $x=$x-1) { // Kopfschleife die Seiten als Links anzeigt

    if(($x)==$seite){
    echo " [ ' . $x . ' ] ";
    }

    else{
    echo " [ $x ] ";
    }
    } // Ende der Kopfschleife die die Seiten als Links anzeigt
    ?>
    </td>
    </tr>
    </table>[/php:1:96a06fc317]