tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
637
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Hektik
    Hektik Hektik ist offline Mitglied Brokat
    Registriert seit
    May 2004
    Ort
    Kleve (NRW)
    Beiträge
    300
    Hallo!

    Ich habe ein Gästebuch geschrieben und darin eine "Blätter-Navigation" eingebaut, die ich als Script vorliegen hatte. Es funktioniert alles wunderbar, nur ein kleines Problem tritt auf: Sofern der Restwert der Division von "Anzahl aller Einträge" durch "Einträge pro Seite" den Wert 0 ergibt, erzeuge ich eine weitere (unnötige) letzte Seite, die jedoch keine Einträge auflistet.

    Der Basis-Code sieht folgendermaßen aus:

    PHP-Code:
    // ich linke folgendermaßen auf das Gästebuch: index.php?navigation=guestbook

    // Wenn beim ersten betreten der Gästebuchseite die Seitenzahl nicht angegeben ist,
    // setze mir diese auf "Seite 0"

    if (!isset($_GET['page'])) { $_GET['page'] = 0; }

    // Einträge pro Seite
    $proseite=3;

    // Gesamtanzahl Einträge ermitteln
    $sql "SELECT * FROM guestbook ORDER BY id DESC";
    $result mysql_query($sql);
    $number mysql_num_rows($result);

    // Anzahl Seiten festlegen
    $seiten=floor($number/$proseite);
    $start=$_GET['page'] * $proseite;

    // entsprechende Einträge auslesen
    $sql="SELECT * FROM neue_webs ORDER BY id DESC LIMIT $start,$proseite";
    $result mysql_query($sql);
    $ende $start $proseite;
    if (
    $ende>$number) { $ende $number; } 
    Und dann noch der Code zum Blättern:

    PHP-Code:
    // RÜCKWÄRTS BLÄTTERN
        
    if ($_GET['page']>0) {
            
    $i=$_GET['page']-1;
            echo 
    "<a class=\"a10grau\" href=\"index.php?navigation=guestbook&page=$i\">« zurück</a>";
        }

    // Wenn auch zurückgeblättert werden soll, dann trenne mir vorwärts und rückwärts mit:    if ($_GET['page']<$seiten && $_GET['page']>0) {
            
    echo '     |     ';
        }

    // VORWÄRTS BLÄTTERN
        
    if ($_GET['page']<$seiten) {
            
    $i=$_GET['page']+1;
            echo 
    "<a class=\"a10grau\" href=\"index.php?navigation=guestbook&page=$i\">weiter »</a>";
        } 
    Die Ausgabe liste ich dann mit

    PHP-Code:
    while ($row mysql_fetch_assoc($result)) {
    // hier steht der CSS-Formatierungscode um die Einträge darzustellen

    Meine Frage ist nun: Wie kann ich es ermöglichen, dass eben diese letzte leere Seite nicht angezeigt wird?
    Ich habe schon diverse Sachen probiert, aber ich vermute, dass es nicht mit einer einfachen Bastelei an meinem Code selbst getan ist. Vielmehr ist es doch notwendig, auf den nichtvorhandenen Divisionsrest einzugehen, oder nicht?
    Ich habe auch schon ausgiebig gegooglet, das hat mir aber leider auch nicht weitergeholfen.

    Deswegen habe ich hier diesen Thread eröffnet und hoffe auf eine hilfreiche Antwort!
    Geändert von Hektik (22.02.06 um 17:43 Uhr)
     

  2. #2
    muhkuh muhkuh ist offline Mitglied Gold
    Registriert seit
    Mar 2003
    Ort
    bw
    Beiträge
    106
    Huhuli,

    Ich habs mir nicht ganz genau angesehen, aber mir ist diese Zeile aufgefallen

    PHP-Code:
    // Anzahl Seiten festlegen
    $seiten=floor($number/$proseite);
    $start=$_GET['page'] * $proseite
    Änder das mal ab in
    PHP-Code:
    // Anzahl Seiten festlegen
    $seiten=ceil($number/$proseite);
    $start=$_GET['page'] * $proseite
    Bei der Funktion floor() wird der Rückgabewert aufgerundet, bei ceil() abgerundet. Am besten schaust du dir die Refenz auf http://de.php.net/manual/de/function.ceil.php nochmal an.
     

  3. #3
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.119
    Blog-Einträge
    7
    Bei der Funktion floor() wird der Rückgabewert aufgerundet, bei ceil() abgerundet.
    ... es verhält sich genau umgekehrt.

    SCNR
    .
     

  4. #4
    Avatar von Hektik
    Hektik Hektik ist offline Mitglied Brokat
    Registriert seit
    May 2004
    Ort
    Kleve (NRW)
    Beiträge
    300
    Zitat Zitat von muhkuh
    Bei der Funktion floor() wird der Rückgabewert aufgerundet, bei ceil() abgerundet. Am besten schaust du dir die Refenz auf http://de.php.net/manual/de/function.ceil.php nochmal an.
    Huhuli zurück!

    Eigentlich ist es genau andersherum: floor() rundet ab (floor - der Boden) und ceil() rundet auf (to ceil - die Decke verputzen). Somit konnte dein Lösungsvorschlag von Anfang an nicht funktionieren. Ich habe es aber trotzdem einmal ausprobiert und (mit Erstaunen) festgestellt, dass sich rein gar nichts an meinem Problem ändert.


    Auf der Websuche nach "Divisionsrestwert" habe ich gefunden, dass man mit

    PHP-Code:
    $x $number%$proseite
    den Divisionsrest bestimmen kann.

    Würde mir das vllt irgendwie eher weiter helfen?
     

  5. #5
    Avatar von Hektik
    Hektik Hektik ist offline Mitglied Brokat
    Registriert seit
    May 2004
    Ort
    Kleve (NRW)
    Beiträge
    300
    ICH HABS

    Der Fehler lag am Vorwärtsblättern. Statt

    PHP-Code:
    // VORWÄRTS BLÄTTERN 
        
    if ($_GET['page']<$seiten) { 
            
    $i=$_GET['page']+1
            echo 
    "<a class=\"a10grau\" href=\"index.php?navigation=guestbook&page=$i\">weiter »</a>"
        } 
    hab ich jetzt

    PHP-Code:
    // VORWÄRTS BLÄTTERN 
        
    if ($number%$proseite == 0){$test $_GET['page']+1;}
        if (
    $test<$seiten) { 
          if (
    $_GET['page']<$seiten) {
            
    $i=$_GET['page']+1
            echo 
    "<a class=\"a10grau\" href=\"index.php?navigation=guestbook&page=$i\">weiter »</a>"
        }

    und es funktioniert.

    Wie ich vermutet habe, konnte ich es mit hilfe des Divisionsrestes lösen. Ist der Divisionsrest nun = 0 , so addiert er mir zur Seitenzahl einen dazu und das Script denkt, das wäre schon die letzte Seite
    Geändert von Hektik (23.02.06 um 00:30 Uhr)
     

Ähnliche Themen

  1. $_POST['submit'] bleibt leer beim Formular Abschicken mit submit()
    Von godfather_al im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 23.12.10, 14:13
  2. Monitor bleibt beim Starten manchmal im StandBy
    Von GartenUmgraben im Forum Hardware
    Antworten: 38
    Letzter Beitrag: 25.08.08, 18:27
  3. Vorherige Seite bleibt beim Wechsel sichtbar
    Von Fugee21 im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 09.12.07, 17:44
  4. Antworten: 16
    Letzter Beitrag: 22.10.05, 18:08
  5. seitenweise blättern -> next page leer
    Von Wolf of Doom im Forum PHP
    Antworten: 7
    Letzter Beitrag: 22.02.04, 01:00