Gästebuch - 10 Einträge, dann neue Seite - wie?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gästebuch - 10 Einträge, dann neue Seite - wie?

    Hallo!

    Wie schaffe ich es, dass jeweils nur 10 Einträge vom Gästebuch angezeigt werden (gespeichert in MySQL), dann ein Link auf eine weitere Seite erscheint, und die Einträge 10-20 angezeigt werden???

    Geht das mit LIMIT 0,10 ???

    Aber wie wird dann auf die neue Seite verwiesen, und wie ändern sich die LIMIT Werte???

    Über Hilfe sehr dankbar....

    Marc

  • #2
    Ja, das geht mit LIMIT und ja, die Werte dafür müssen sich bei jedem Aufruf ändern.

    Du übergibst einfach an jeden Aufruf von deinem Gästebuch die Variable page. Daraus berechnest du dir die Limit werte

    PHP-Code:
    // Wenn keine Seite übergeben wurde, fangen wir bei 0 an
    IF (!isset($_GET['page'])
      
    $_GET['page'] = 0;

    $pro_seite 10;

    $start $_GET['page'] * $pro_seite;
    $end $start $pro_seite;

    $limit "LIMIT " $start "," $end
    Angefangen bei Seite 0 erhältst du LIMIT 0,10,
    für Seite 1 gibt es LIMIT 10,20 usw.

    Normalerweise fängt man bei Seite 1 an anstatt bei Seite 0, aber da musst du halt an der richtigen Stelle 1 abziehen, ich hab das mal weggelassen, damit der Code übersichtlich bleibt und du siehst, was dahinter steckt

    Und für Links musst du prüfen, ob du mehr Einträge hast, als pro Seite angezeigt werden, und dann ausrechnen, wie viele Seiten du brauchst und die einzelnen Links ausgeben (gb.php?page=X), ist ja nicht so schwer.
    hopka.net!

    Kommentar


    • #3
      Ist es nicht so, dass der zweite Wert beim LIMIT immer 10 bleibt?
      Also...

      Seite 0: LIMIT 0,10
      Seite 1: LIMIT 10,10
      Seite 2: LIMIT 20,10
      usw

      Ansonsten würde man bei Seite 1 20 Einträge erhalten.

      Kommentar


      • #4
        @Hopka

        Ich danke dir !!! - hätte da aber noch ein paar Fragen.

        Was bedeutet das
        PHP-Code:
        IF (!isset($_GET['page'])
            
        $_GET['page'] = 0
        genau? Das funktioniert bei mir nämlich nicht.
        Ich hab das jetzt durch
        PHP-Code:
        $page 
        ersetzt. Dann funktioniert das. Zumindest was das LIMIT angeht.
        Oder war das nicht so toll?

        Aber wie ich die neuen Seiten erstellen soll, ist mir immer noch ein Rätsel.
        (gb.php?page=X), ist ja nicht so schwer.
        Doch, ist es - leider!
        Das mit page=X die Seitenvariablen für die einzelnen Seiten erstellt werden, ist mir klar. Aber wie kann ich die Seiten den Einträgen zuordnen?
        Also Seite 1 = Einträge 0-10 ... Seite 2 = Einträge 10-20 u.s.w. und das auch noch abhängig von der Anzahl der Einträge...

        Leider finde ich bei SelfPHP auch nix vernünftiges, ich weiß auch nicht, wonach ich suchen soll...

        Kommentar


        • #5
          *narf* Ja, Powerplay hat Recht. So muss das heißen:
          PHP-Code:
          // Wenn keine Seite übergeben wurde, fangen wir bei 0 an
          IF (!isset($_GET['page'])) // <-- da fehlte nur ein )
            
          $_GET['page'] = 0;

          $pro_seite 10;

          $start $_GET['page'] * $pro_seite;  // <-- hier muss auch was geändert werden !!

          $limit "LIMIT " $start "," $pro_seite
          Das if (!isset ..... bewirkt, dass wenn kein wert für page über die URL übergeben wurde (also nicht script.php=page=X), dann wird ein Wert dafür festgelegt.

          Wenn du jetzt wissen willst, wie viele Seiten du brauchst, musst du erstmal zählen, wie viele Einträge du hast (COUNT()), dann musst du diese Anzahl durch die Anzahl der Einträge pro Seite teilen und das Ergebnis aufrunden (ceil).
          Die Ausgabe der einzelnen Links regelst du mit einer Schleife (for) und zwar so, dass am Ende Links rauskommen die auf gb.php?page=1; gb.php?page=2; gb.php?page=3 usw. zeigen. Von den Seitenzahlen auf die Werte für das LIMIT rechnet das Script (siehe oben) automatisch.

          Dass du $page = 0 geschrieben hast war nicht gut, weil dann ja, egal, was du übergibst, dieser wert immer mit 0 überschrieben wird. Wenn dich dass mit $_GET['page'] verwirrt, kannst du statt dessen überall $page verwenden, geht im Normalfall genau so gut.
          hopka.net!

          Kommentar


          • #6
            Hier noch die genaue Beschreibung für isset...

            http://ch2.php.net/manual/de/function.isset.php

            Kommentar


            • #7
              Ja, vielen Dank Euch beiden!

              Hat ein wenig gedauert, aber mitlerweile läut´s.
              So sieht´s aus:
              PHP-Code:
                              if (!isset($_GET['page'])) {
                                
              $_GET['page'] = 0
                              }
                              
              $proseite 10 ;
                              
              $seiten $anzahl $proseite ;
                              
              $minlimit $_GET['page'] * $proseite ;
                              
              $newer $_GET['page'] - 1;
                              
              $older $_GET['page'] + 1;

                              echo 
              "<table width=\"55%\" align=\"center\" border=\"5\" cellpadding=\"5\" cellspacing=\"1\"><tr><td align=\"center\" background=\"images/back_de.jpg\">" ;

                              if(
              $_GET['page'] > "0") {
                                  echo 
              "<a href=\"guestbook.php?page=".$newer."\"><b>« neuere Eintr&auml;ge «</b></a>" ;
                              }

                              echo 
              "&nbsp;<b>insg. ".$anzahl." Eintr&auml;ge</b>&nbsp;" ;
                              
                              if(
              $anzahl $_GET['page'] + $proseite) {
                                  echo 
              "<a href=\"guestbook.php?page=".$older."\"><b>» &auml;ltere Eintr&auml;ge »</b></a>" ;
                              }
                              
              $abfrage = @mysql_query("SELECT * FROM gbook ORDER BY id DESC LIMIT ".$minlimit.",".$proseite."")or die("Konnte den SELECT-Befehl nicht ausf&uuml;hren!!!");
                              while(
              $eintraege mysql_fetch_object($abfrage)) { 
              Ist das okay? Es läuft auf jeden Fall...

              Bleibt nur noch das Problem mit den Seitenzahlen.
              Seite X von Y soll ausgegeben werden. $_GET['page'] ist aber auf "0" gesetzt. Auf "1" setzen geht aber auch nicht. Ich hab´s mit $_GET['page']+1 versucht, war wohl nicht so schlau. Habt Ihr da noch eine Idee? Dann lass ich Euch auch in Ruhe...
              ...Seite 1 an anstatt bei Seite 0, aber da musst du halt an der richtigen Stelle 1 abziehen...
              wieso abziehen? nicht addieren?
              Zuletzt geändert von DivX; 13.07.2003, 05:27.

              Kommentar


              • #8
                Original geschrieben von DivX
                wieso abziehen? nicht addieren?
                Wenn deine Links Seite 1 als kleinste Seite haben, dann musst du in deinem Script immer $_GET['page'] = $_GET['page']-1; machen, weil du zum rechnen als erste Seite nunmal 0 brauchst.

                Zu deinem Seite X von Y soll ausgegeben werden:
                PHP-Code:
                $seiten_gesamt ceil ($anzahl $proseite);
                echo 
                "Seite " $_GET['page'] . " von " $seiten_gesamt
                hopka.net!

                Kommentar


                • #9
                  Sorry, aber das versteh ich immer noch nicht...

                  PHP-Code:
                  $seiten_gesamt ceil ($anzahl $proseite);
                  echo 
                  "Seite " $_GET['page'] . " von " $seiten_gesamt
                  Ist klar...
                  Aber...
                  ...wenn ich $_GET['page'] = $_GET['page']-1; mache, dann rechne ich doch an dieser Stelle
                  PHP-Code:
                  $minlimit $_GET['page'] * $proseite ;
                  $newer $_GET['page'] - 1;
                  $older $_GET['page'] + 1
                  mit dem negativen Wert von $_GET['page'].

                  Ich hab vielleicht einen Denkfehler aber müsste an dieser Stelle
                  PHP-Code:
                  $seiten_gesamt ceil ($anzahl $proseite);
                  echo 
                  "Seite " $_GET['page'] . " von " $seiten_gesamt
                  nicht einfach nur $_GET['page'] um 1 erhöht werden?

                  Weil jetzt bekomm ich als Ausgabe:
                  Seite 0 von 3
                  Wenn $_GET['page'] an dieser Stelle +1 gesetzt wird, dann wär´s doch
                  Seite 1 von 3
                  und das wär doch richtig?!

                  Kommentar


                  • #10
                    Also ich hab´s hinbekommen...

                    ICH DANKE EUCH!

                    Grüße aus Düsseldorf,
                    Marc

                    Kommentar

                    Lädt...
                    X