Seitenzahl zum umblättern??

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

  • Seitenzahl zum umblättern??

    Hallo zusammen,

    ich möchte bei einer bestimmten Zahl von Datensätzen diese aufteilen und dann zwischen den einzelnen Ergebnisseiten umblättern können.
    Einen Code, der mir das blättern mit Hilfe von "nächste Seite", "vorherige Seite" habe ich schon geschrieben, funktioniert auch wunderbar.

    Jetzt möchte ich aber, ähnlich wie in diesem Forum, zusätzlich die Möglichkeit haben, die Ergebnisseiten direkt anzuwählen... also [1] [2] [3]. Dabei sollten natürlich die Seitenzahlen abhängig von der Trefferzahl sein.

    Hier der Code zum umblättern:

    $result2 = mysql_query("SELECT * FROM sites WHERE accepted = 'yes' AND click_in > 0 ORDER BY click_in DESC");

    $anzahl = mysql_num_rows($result2);

    ...

    #Festlegen der Treffer pro Seite.

    if (!$offset || $offset<0) $offset = 0;
    $schritt = $ranks;


    #Navigation auf erster und letzter Seite wird nicht angezeigt.

    if (!$offset || $offset<0) {
    $offset = 0; $disabled[prev] = TRUE;
    }
    if (($offset + $schritt) >= $anzahl) {
    $disabled[next] = TRUE;
    }

    ...

    #Navigation für das Umblättern

    echo "<center><hr width='99%'><br>";

    if (!$disabled[prev]) echo '<font size=3><b>... <a href="'.$PHP_SELF.'?offset='.($offset-$ranks).'">VORHERIGE SEITE</a></b></font>';
    echo "&nbsp;&nbsp;&nbsp;&nbsp;";
    if (!$disabled[next]) echo '<font size=3><b><a href="'.$PHP_SELF.'?offset='.($offset+$ranks).'">NÄCHSTE SEITE</a> ...</b></font>';


    Wäre super, wenn mir mal jemand den Code zum umblättern posten könnte.

    Bin für jeden Tipp dankbar!

    cu
    langerxxx

  • #2
    hmm,

    PHP-Code:
    if (!$disabled[prev]) echo '<font size=3><b>... <a href="'.$PHP_SELF.'?offset='.($offset-$ranks).'">VORHERIGE SEITE</a></b></font>'
    echo 
    "    ";

    //hier bginnt mein Codeteil !

    for ($i=1;$i<=$anzahl;$i++)
     {
       echo 
    ' font size=3><b><a href="'.$PHP_SELF.'?offset='.$i.'">['.$i.']</a></b></font>';

    }
    //Ende JoelH Code

    if (!$disabled[next]) echo '<font size=3><b><a href="'.$PHP_SELF.'?offset='.($offset+$ranks).'">NÄCHSTE SEITE</a> ...</b></font>'

    Kommentar


    • #3
      jepp...

      Hallo JoelH,

      ich wollte mich natürlich nicht mit fremden Lorbeeren schmücken, falls du das damit gemeint hast.

      Der Code zum umblättern stammt natürlich nicht ganz alleine von mir, sondern wurde von mir angepasst. :-)

      Wäre trotzdem super, wenn mir jemand bei meinem Problem helfen könnte.

      cu
      langerxxx

      Kommentar


      • #4
        hmm,

        ??? Dass der Code nicht von dir war ist schon klar, aber ich hab doch meinen Code in deinen eigefügt !!! Schau mal dein erstes Posting der Code recht weit unten, da musst du meinen Code einfügen so wie beschrieben, darum hab ich auch diese Kommetare eingebaut dass du weisst wo es rein kommt.

        Kommentar


        • #5
          Thanks...

          Da hab ich ja glatt mal wieder was falsch verstanden... :-)

          Aber auf jeden Fall danke. Hab es nochmal ein wenig umgebaut, damit jeweils 15 Treffer pro Seite angezeigt werden.

          Noch eine Idee, wie man das etwas einfacher machen könnte??

          Hier der Code:

          if (!$disabled[prev]) echo '<font size=3><b>... <a href="'.$PHP_SELF.'?offset='.($offset-$ranks).'">VORHERIGE SEITE</a></b></font>';
          echo "&nbsp;&nbsp;";

          for ($i=0;$i<=$anzahl;$i=$i+15)
          {
          echo '<font size=3><b><a href="'.$PHP_SELF.'?offset='.$i.'">['.(($i/15)+1).']</a>&nbsp;</b></font>';
          }

          echo "&nbsp;&nbsp;";
          if (!$disabled[next]) echo '<font size=3><b><a href="'.$PHP_SELF.'?offset='.($offset+$ranks).'">NÄCHSTE SEITE</a> ...</b></font>';


          Danke nochmal.

          cu
          langerxxx

          Kommentar


          • #6
            Umblättern

            Hallo Leute,

            ich benutze das CMS von Netbuilder. Habe aber das Problem, das ich gerne nur 6 Abfragen pro Seite haben möchte. Leider bin ich Anfänger und habe keine Schnitte von PHP. Kann ich vielleicht meine COde hier posten und ihr unterstützt mich ein bißchen?

            Vielen Dank im vorraus. Das würde mir echt weiter helfen.

            Gruß Bulle

            Kommentar


            • #7
              Schau mal unter :
              menufooty.com
              Das Script zeigt alle Seiten an , man kann alle Seiten direkt anwählen und steuert auch die Buttons zum weiterblättern .

              Wenn dir gefällt kann ichs dir posten (ist etwas komplizierter das jetzt auf deine Variablen umzuschreiben

              cya

              Kommentar


              • #8
                Bitte posten

                Hallo!

                Wäre sehr nett wenn du den code posten könntest. Kannst du mir dann auch vielleicht beim einbauen behilflich sein? Danke im vorraus und schönes wochenende.

                TSCHAKA!

                Kommentar


                • #9
                  Mach ich - > dauert ein paar min.

                  Kommentar


                  • #10
                    Ok , ich habs mal ein bisschen geändert und kommentiert - ich hoffe du kannst herauslesen wie es funzt . wenn nich dann schreib mir nochmal was du nicht verstehst .

                    Als Beispiel hab ich mal 26 Datensätze genommen

                    PHP-Code:
                    /// Defaultwert für $nb ermitteln
                    If (!$nb) {
                        
                    $nb=0;
                    }
                    /// Datenbank Abfragen :
                        /// Abfrage aller Datensätze <--------------------------------
                        
                    $anfrage_001 "SELECT * FROM table";
                        
                    $result_001 mysql_query($anfrage_001);
                        
                    $anzahl_001 mysql_num_rows($result_001);
                        
                    /// Als Beispiel hier mal 26 gesamte Datensätze in Table -----
                        
                        /// Abfrage der Aktuell Abgefragten Datensätze 0-10 (Default Wert $nb == 0)
                        
                    $anfrage_002 "SELECT * FROM table ORDER BY datum DESC LIMIT $nb,10";
                        
                    $result_002 mysql_query($anfrage_002);
                        
                    $anzahl_002 mysql_num_rows($result_002);

                    /// Datensatzanzeige "Showing $von bis $bis"..
                        
                    $von $nb+1;                  /// $nb == 0 | Ergebnis ist 1
                        
                    $bis $anzahl_002+$nb;        /// (10+0)   | Ergebnis ist 10

                    /// Darstellung der Navigation -----------------------------------
                    echo "<div align='center'>";
                        
                    $de $anzahl_002 10;        /// 26 durch 10 = 2,6
                        
                    $nbseiten ceil($de);         /// Abrunden von 2,6 auf 2

                    /// Wenn Datensatz Anzahl (Gesamt) nicht 0 ist dann ... <-Datensatzanzeige (von bis)-------------------------------------
                        
                    If ($anzahl_001 != 0) {
                            echo 
                    "<font face='Verdana, Arial, Helvetica, sans-serif' size='1'>$anzahl_001 messages overall | showing $von to $bis | © 2002 <a href='http://www.menufooty.com'>menufooty.com</a></font>";
                        } Else {
                            echo 
                    "<font face='Verdana, Arial, Helvetica, sans-serif' size='1'>no messages were found! | © 2002 Menufooty.com</font>";
                        }
                        echo 
                    "<br>";
                        echo 
                    "<font face='Verdana, Arial, Helvetica, sans-serif' size='1'>";
                    /// ---------------------------------------------------------------------------------------------------------------------

                    /// Berechnungen zum Offset
                        
                    $nbsminus = ($nbseiten-1)*10;  /// (2 -1)*10 = 10
                        
                    $goon $nb+10;                /// Schritt zur nächsten Seite (10 + 10 = 20)
                        
                    $goback $nb-10;              /// Schritt zur vorherigen Seite (10 - 10 = 0)

                    /// Wenn $nb nicht 0 ist , dann .. (Wenn $nb == 0 ist dann ist dass die Erste Seiten und davor gibts keine Seiten :))
                        
                    If ($nb != 0) {
                            echo 
                    "<a href='guestbook.php?nb=$goback'><img src='bilder/back.gif' width='23' height='23' border='0' align='absmiddle'></a>";
                        } Else {
                            echo 
                    "<img src='bilder/no_back.gif' width='23' height='23' border='0' align='absmiddle'>";
                        }
                    /// ----------------------------------------------------------------------------------------------------------------

                    /// For Schleife zur Errechnung der Seitenanzahl Anzeige ( [1][2] ...)
                        
                    FOR ($i=0;$i<$nbseiten;$i++) {       // $nbseiten == 2
                            
                    $g $i*10;                      // $g == 0, im Zweiten durchlauf 10
                            
                    $s $i+1;                       // $s == 1 , im zweiten durchlauf 2
                        // Wenn $nb nicht gleich $g wird die Seitenzahl mit einer url unterlegt , sonst nicht <-
                            
                    If ($nb != $g) {
                                echo 
                    "[<a href='guestbook.php?nb=$g'>$s</a>]";
                            } Else {
                                echo 
                    "[<font size='3' color='red'>$s</font>]";
                            }
                        }
                        
                    /// Definition der Bedingung, unter der der "Nächste Seite Part" angezeigt werden soll --------------------
                        
                    If ($nb != $nbsminus && $anzahl_001 != 0) {
                            echo 
                    "<a href='guestbook.php?nb=$goon'><img src='bilder/goon.gif' width='23' height='23' border='0' align='absmiddle'></a>";
                        } Else {
                            echo 
                    "<img src='bilder/no_goon.gif' width='23' height='23' border='0' align='absmiddle'>";
                        }
                        echo 
                    "</font>";
                        echo 
                    "</div>"
                    Zuletzt geändert von ; 06.04.2002, 12:41.

                    Kommentar


                    • #11
                      Danke, aber ...

                      Hallo Paddy,

                      vielen Dank für das Posten deines Quelltextes, aber leider, wie erwartet, steige ich da nicht durch. Anbei siehst du nun meinen Quelltext. Ich würde mich über ein paar Tipps sehr freuen. Bin wirklich totaler "Newbie".

                      Thanks for help!

                      TSCHAKA!

                      ***********************************

                      <?
                      $limit = 100;

                      include("../../../database/root.inc");
                      include("../../../database/include/db.php");
                      if(isset($limit))

                      $select_art = mysql_query("SELECT * FROM article WHERE folder = '$bereich' ORDER BY title DESC LIMIT $limit");
                      while($result = mysql_fetch_array ($select_art,MYSQL_ASSOC))

                      {
                      $title = $result["title"];
                      $ide = $result["ide"];
                      $dat = $result["datum"];
                      $intro = $result["intro"];
                      $content = $result["content"];
                      $dat = substr($dat,0,10);
                      $dtm = explode("-",$dat);
                      $datum = $dtm[2].".".$dtm[1].".".$dtm[0];
                      $odp = mysql_query("SELECT * FROM options");
                      $odpf = mysql_fetch_array($odp);
                      $width = $odpf["iconwidth"];
                      $height = $odpf["iconheight"];
                      $stdwidth = $tablewidth-$width;
                      print("<tr>
                      <td class=left width=100>
                      <img src=\"../../../database/cgfx/$ide.gif\"");

                      if(isset($width) AND isset($height))
                      {
                      echo "width=80";
                      }
                      print(" border=0></a></td>


                      <td width=\"$stdwidth\" class=left valign=top>
                      <b>".$title."</b><br>RGB | hochauflösend | JPEG-Format <br>[ ".$content." ]
                      </td></tr>");
                      }
                      ?>
                      </table>

                      ***********************************


                      [FONT=courier new]Ich danke dir im vorraus für deine Hilfe![/FONT]

                      Kommentar


                      • #12
                        Ganz einfach

                        Du schreibst erstmal eine If schleife die das default Limit für die MysqlQuery bestimmt :

                        PHP-Code:
                        If (!$limit) {
                        $limit ;

                        Dann schreibst du die Mysql Query um :
                        $select_art = mysql_query("SELECT * FROM article WHERE folder = '$bereich' ORDER BY title DESC LIMIT $limit[COLOR=red],10[/COLOR]";

                        Dies bewirkt , das wenn $limit == 0 ist die Datensätze eins bis 10
                        angezeigt werden , wenn $limit == 10 ist werden dann die datensätze 11-20 angezeigt .

                        Das wäre das : jetzt musst du nur noch die Steuerung einbauen :
                        Erstmal ganz einfach ::
                        PHP-Code:
                        $zuruek $limit-10;
                        $weiter $limit+10;
                        echo 
                        "<a href='deineseite.php?limit=$zurueck'>Zurück</a>";
                        echo 
                        "<a href='deineseite.php?limit=$weiter'>Weiter</a>"
                        Das wäre eine ganz einfach , aber auch sehr Fehleranfällige lösung .

                        Kommentar


                        • #13
                          So jetzt mal mit Seitenzahlen (ist ein wenig mehr )
                          Als erstes musst du eine weitere MysqlQuery in dein Script einfügen , die alle Datensätze zählt :
                          PHP-Code:
                          $select_art2 mysql_query("SELECT * FROM article WHERE folder = '$bereich'");
                          $result2 mysql_query($select_art2);
                          $anzahl mysql_num_rows($result2); 
                          So jetzt hast du mit $anzahl die Gesamtzahl aller Datensätze.
                          Sagen wir mal es sind 28 . 28 datensätzte entspricht bei einem $limit == 10 also "2,8 Seiten". Kann man schlecht darstellen also muss man irgendwas ändern ->
                          Als erstes rechnest du dann :
                          $seiten_z1 = $anzahl/10; // <- 28:10 = 2,8
                          $seiten_z2 = ceil($seiten_z1) // abrunden auf 2
                          $weiter = $nb+10; // eine Seite weiter
                          $zurueck = $nb-10; // eine Seite zurück

                          Dann der erste part der Navigation : "Eine Seite zurück"
                          Wenn $limit den Defaultwert 0 hat ist das ja die erste seite und davor gibt es keine ->
                          PHP-Code:
                          If ($limit != 0) {  //wenn $limit nicht 0 ist ....
                          echo "<a href='deineseite.php?limit=$zuruek'>Zurück</a>";
                          } Else {
                          echo 
                          "zurück";

                          So das war der erste teil jetzt kommen die Seitenzahlen dazwischen - sodaß es später so ausschaut ->
                          Das wäre seite 1
                          [COLOR=blue]zurück [1][2][3] weiter[/COLOR]

                          Die Seitenzahlen errechnest du mit einer For schleife :
                          FOR ($i=0;$i<$seiten_z2;$i++) { // $seiten_z2 == 2
                          $g = $i*10; //gibt den $limit wert für die einzelen seiten an
                          $s = $i+1; //gibt die aktuelle seitenzahl an

                          If ($limit != $g) {
                          echo "[<a href='deineseite.php?limit=$g'>$s</a>]";
                          } Else {
                          echo "[<font size='3' color='red'>$s</font>]";
                          }
                          }

                          Errechnung des aktuellen Offsets
                          $nbsminus = ($seiten_z2-1)*10;

                          // das ist der "weiter part"
                          If ($limit != $nbsminus && $anzahl != 0) {
                          echo "<a href='guestbook.php?nb=$goon'</a>";
                          } Else {
                          echo "weiter";
                          }

                          Ok - am besten schreibst du mir mal die stellen per email die du nicht verstehst - dann kann ich dir vielleicht besser helfen - ich habs jetzt schon auf ein minimum gekürzt
                          (ich hoffe ich habe mich nicht verschrieben <- soll vorkommen)
                          cya

                          Kommentar


                          • #14
                            Danke, aber ...

                            Hallo Paddy,

                            ich habe es jetz mal versucht, erhalte aber für die farblich markierte Zeile eine fehlermeldung. Alles "Fett" angezeigte sind deine Codes, die ich eingepflegt habe. Wobei für mich nur die Zahlenreihe wichtig ist.

                            Was ist falsch? wie gesagt, ich bin totaler Anfänger..


                            Vielen Dank


                            <table border=0 cellpadding=8 cellspacing=0 width=448 bgcolor="#ffffff">
                            <?

                            If (!$limit)
                            {
                            $limit = 0 ;
                            }



                            include("../../../database/root.inc");
                            include("../../../database/include/db.php");
                            if(isset($limit))

                            $select_art = mysql_query("SELECT * FROM article WHERE folder = '$bereich' ORDER BY title DESC LIMIT $limit,10");
                            while($result = mysql_fetch_array ($select_art,MYSQL_ASSOC))


                            {
                            $title = $result["title"];
                            $ide = $result["ide"];
                            $dat = $result["datum"];
                            $intro = $result["intro"];
                            $content = $result["content"];
                            $dat = substr($dat,0,10);
                            $dtm = explode("-",$dat);
                            $datum = $dtm[2].".".$dtm[1].".".$dtm[0];
                            $odp = mysql_query("SELECT * FROM options");
                            $odpf = mysql_fetch_array($odp);
                            $width = $odpf["iconwidth"];
                            $height = $odpf["iconheight"];
                            $stdwidth = $tablewidth-$width;
                            print("<tr>
                            <td class=left width=100>
                            <img src=\"../../../database/cgfx/$ide.gif\"");

                            if(isset($width) AND isset($height))
                            {
                            echo "width=80";
                            }
                            print(" border=0></a></td>


                            <td width=\"$stdwidth\" class=left valign=top>
                            <b>".$title."</b><br>RGB | hochauflösend | JPEG-Format <br>[ ".$content." ]
                            </td></tr>");
                            }
                            ?>
                            </table>
                            <table border=0 cellpadding=8 cellspacing=0 width=448 bgcolor="#ffffff">
                            <tr><td class=center valign=top>
                            <?
                            $select_art2 = mysql_query("SELECT * FROM article WHERE folder = '$bereich'");
                            $result2 = mysql_query($select_art2);
                            $anzahl = mysql_num_rows($result2);

                            {
                            $seiten_z1 = $anzahl/10; // <- 28:10 = 2,8
                            $seiten_z2 = ceil($seiten_z1) // abrunden auf 2
                            $weiter = $nb+10; // eine Seite weiter [COLOR=orangered]Fehlermeldung für diese Zeile[/COLOR]
                            $zurueck = $nb-10; // eine Seite zurück

                            FOR ($i=0;$i<$seiten_z2;$i++) { // $seiten_z2 == 2
                            $g = $i*10; //gibt den $limit wert für die einzelen seiten an
                            $s = $i+1; //gibt die aktuelle seitenzahl an

                            If ($limit != $g) {
                            echo "[<a href='index.php?limit=$g'>$s</a>]";
                            } Else {
                            echo "[<font size='3' color='red'>$s</font>]";
                            }
                            }

                            Errechnung des aktuellen Offsets
                            $nbsminus = ($seiten_z2-1)*10;
                            ?>

                            </td></tr></table>

                            Kommentar


                            • #15
                              da fehlt ein [COLOR=red];[/COLOR] in der zeile davor

                              Kommentar

                              Lädt...
                              X