Ankündigung

Einklappen
Keine Ankündigung bisher.

Seitenzahlen in PHP (MySQL) auflistung einbringen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Seitenzahlen in PHP (MySQL) auflistung einbringen

    Hallo ihr lieben.

    Ich habe eine php Tabelle die ihre daten Dynamisch aus einer My SQL Datenbank bekommt.
    Ich habe nun den Wunsch dort Seitenzahlen einzubinden.
    Am besten Soll das wie folgt aussehen:
    [<<][<][1][2][3][4][5][6][7][8][9][10]...[>][>>]
    [<<][<][1][2][3][4][5][6][7][8][9][10]...[>][>>]
    [<<][<][1][2][3][4][5][6][7][8][9][10]...[>][>>]
    [<<][<][1][2][3][4][5][6][7][8][9][10]...[>][>>]
    [<<][<][1][2][3][4][5][6][7][8][9][10]...[>][>>]
    [<<][<]...[2][3][4][5][6][7][8][9][10][11]...[>][>>]
    [<<][<]...[3][4][5][6][7][8][9][10][11][12]...[>][>>]
    (Bitte auf die Zahlenreihenfolge und die Fettmarkierung schauen)

    hier ist das Stück meiner Tabellenauflistung:

    PHP-Code:
    $sqlString "SELECT * FROM user WHERE ID <> 1 ";
    $result safe_query($sqlString);
    $countAllUsers mysql_num_rows($result);
    $schniedeltext .= "Anzahl Benutzer: ".$countAllUsers."<br>";

    $schniedelliste .= '<div z-index:2 width="100%"><table id="tabelle" width="970"><tr width="100%"><td><b>ID</b></td><td><b>USERNAME</b></td><td><b>SCHNIEDELNAME</b></td><td><b>EMAILADRESSE</b></td><td><b>CM</b></td><td><b>DATUM</b></td><td><b>IP</b></td><td><b>OPTION</b></td></tr>';
    while (
    $row mysql_fetch_assoc($result))
    {
    $detaillink '&nbsp;&nbsp;<a href="user.php?id='.$row['ID'].'"><img alt="EDIT" height="15" src="images/postediticon.png" width="15"></a>';

    $schniedelliste .= '';
    $schniedelliste .= '<tr width="100%">';
    $schniedelliste .= '<td class="row_ $i % 2;">'.$row['ID'].'</td><td>'.$row['name'].'</td><td>'.$row['schniedelname'].'</td><td>'.$row['email'].'</td>
    <td>'
    .$row['totalhits'].'</td><td>'.date("d.m.Y"$row['created']).'</td><td>'.$row['IP'].'</td><td>'.$detaillink.'</td>';
    $schniedelliste .= '</tr>';
    }
    $schniedelliste .= '</table></div>';

    $schniedeltext .= "<br>Besnutzer&uuml;bersicht:<br>".$schniedelliste 
    Hier habe ich aus einem Tutorial eine Lösung für Seitenzahlen:
    So werden die Links einmal aussehen: www.example.com/site.php?page=5

    PHP-Code:
    $count 10;
    $offset = ($_GET['page'] - 1) * $count;
    SELECT FROM tabelle LIMIT $offset$count
    $count_pages 
    ceil($count_entries $count);
    for (
    int $i 1$i <= $count_pages$i++) {
    echo 
    '[<a href="site.php?page=' $i '">' $i '</a>';
    }
    if (
    $_GET['page'] > 1) {
    echo 
    '<a href="site.php?page=' . ($_GET[page] - 1) . '">vorherige Seite</a>';
    } else {
    echo 
    'vorherige Seite';


    Da meine Tabelle am ende über $schniedelliste; ausgegeben werden und mein php script anders ist als die die ich sonst nutzte hab ich absolut kein Plan wie hier die codes für die Seitenzahl generierung eingebunden werden können.
    Meine Seiten Zahlen wie oben an zu passen würd ich hinterher erstmal selbst probieren wollen.

    Ich erhoffe mir hier das mir einer entweder so gut und einfach beschreiben kann, das ich das selbst umgesetzt bekomme, oder jemand so nett ist und es mir fertig macht
    dann seh ich ja auch wie es ging

    mfg, rommy.

  • #2
    Willkommen hier!

    Bitte für PHP-Code / Code künftig die Code-Tags verwenden, ich hol das oben mal nach.

    Was du suchst nennt sich Pagination oder Paging. Was war nochmals deine konkrete Frage?

    Fertiglösungen kannst du hier in der Scriptbörse anfragen.

    LG
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Danke fürs Edit ^^
      Ich hatte den Knopf A hier im Forum nicht für diese Funktion war genommen und ihn ignoriert ^^
      Da hab ich einfach so gemacht wie immer :P

      Also meine konkrete frage ist, ob mir da jemand bei helfen kann, das Seitenzahlen Script in meine Tabelle ein zu bauen.
      Ich bin Profi schnippler mit grenzen ^^
      Leider versuche ich seit jahren vergeblich allein klar zu kommen.
      Irgendwann brauch ich dann doch wieder hilfe.
      Dafür sehen meine Seiten dann aber doch immer recht gut aus XD

      Hat denn jemand lusst mir bei der umsetzung zu helfen?
      Also entweder jemand mag es mir schritt für schritt erklähren wie ich meine tabelle mit dem Script zusammen bekomme, oder jemand mag es mir fertig basteln
      Mir egal, hauptsache es geht nachher.
      Google hat mir nicht helfen können, zumindest nicht so das ichs allein hin bekomme.

      Postings mit diesem Thema gibts ja schon tausende, nur leider konnte mir keins helfen.
      MfG, Rommy.

      Kommentar


      • #4
        Zitat von rommy Beitrag anzeigen
        oder jemand mag es mir fertig basteln
        Man erkennt die Wertschätzung zur Arbeit des Programmierers am Wort "basteln".

        Mein Vorschlag in folgender Reihenfolge:

        1. Deutschkurs
        2. PHP Grundlagen lernen




        Kommentar


        • #5
          Also meine konkrete frage ist, ob mir da jemand bei helfen kann, das Seitenzahlen Script in meine Tabelle ein zu bauen.
          ..
          Hat denn jemand lusst mir bei der umsetzung zu helfen?
          Also entweder jemand mag es mir schritt für schritt erklähren wie ich meine tabelle mit dem Script zusammen bekomme, oder jemand mag es mir fertig basteln
          Solche globalen Anfragen sind in der Scriptbörse besser aufgehoben.

          [MOD: Verschoben von PHP-Einsteiger]
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Man erkennt die Wertschätzung zur Arbeit des Programmierers am Wort "basteln".
            Was hat das bitteschön mit Wertschätzung zu tun?
            Da ich kein Programmierer bin ist es für mich auch mehr oder weniger basteln.
            Das hat aber nichts damit zu tun das ich den Wert an der Sache nicht erkenne.
            Im Endeffeckt sind dadurch meine arbeiten sogar noch viel aufwendieger als die von Leuten die es können.

            Mal davon abgesehen, brauch ich diese Art von Antwort nicht.
            Es geht hier schließlich um ein ganz anderes Thema.
            Wenn dir die Art von jemandem nicht gefällt, musst du doch nicht überall Themenunabhängig deinen Senf dazu geben.
            Sowas macht solche beiträge einfach nur unübersichtlicher, für die die wirlich mal helfen wollen!

            Und da ich das ganze hier auch nur aus Spaß an dem ganzen mache, und sowieso was Programmiersprachen angeht nicht die hellste Birne bin, bringt mich das lernen von PHP Grundlagen auch nicht weiter.
            Das hab ich alles schon versucht...
            Bei mir reicht es eben nur zum basteln.

            Und davon auch mal abgesehen, hab ich ja hier auch nicht gesagt das mir das Jemand machen muss, sondern das ich auch dazu bereit bin es mit Hilfe selbst zu machen.
            MfG, Rommy

            Kommentar


            • #7
              Wenn Du Dir meine Beiträge durchliest, wirst Du erkennen, dass ich nicht "überall themenunabhängig meinen Senf dazu gebe".

              Du bist nicht bereit zu lernen, deswegen ist die Scriptbörse der richtige Bereich. Also kurz, was zahlst Du?


              Kommentar


              • #8
                Du bist nicht bereit zu lernen, deswegen ist die Scriptbörse der richtige Bereich. Also kurz, was zahlst Du?
                Das ich nicht bereit bin etwas zu lernen stimmt nicht... sonst hätte ich schließlich nicht dazugeschrieben das ich nicht davon abgeneigt bin das mir jemand schritt für schritt hilft.

                Kommentar


                • #9
                  Grundlegend könnte man meinen das wir hier ein Programmierer-Forum sind, in denen die ganzen "Bastler" eigentlich programmieren und nicht basteln

                  Das was du möchtest realisiert du Konkret über 2 Queries ( je Aufruf ). Ein Query das erfasst wie viele Einträge die Gesamt-Menge an Daten hat und ein weiteres um den jeweiligen Seiten-Ausschnitt abzuholen.

                  Das "begrenzen" der Seiten-Buttons ist konkret über ein range()-slicing möglich. Kein Großer Aufwand.

                  Beispielhaft implementiert man das so:

                  PHP-Code:
                  <?php

                  // Konfiguration

                  $itemsPerPage 10;
                  $gaugePadCount 3;

                  // Gesamt-Datenmenge

                  # exemplarisch, hier wird eigentlich die Anzahl der Datensätze "Gesamt" abgeholt
                  $data range(1,1000); 
                  $pages ceil(count($data) / $itemsPerPage);

                  // Ausschnitt

                  $page filter_has_var(INPUT_GET'page') ? (int) $_GET['page'] : 1;
                  $page $page <= $page;

                  # exemplarisch, hier wird der offset gesetzt und die menge limitert. 
                  # Läuft dem selben weg via LIMIT <menge> OFFSET <offset> via mysql
                  $currentData array_slice($data, ( $page ) * $itemsPerPage$itemsPerPage);

                  // Pagination

                  $before $page && $page $pages;
                  $after $page $pages 1;

                  $pagination array_filter(range($page $gaugePadCount$page $gaugePadCount), function($in) use ( $pages )
                  {
                      return 
                  $in && $in <= $pages;
                  });

                  ?><!DOCTYPE html>
                  <html>
                      <head>
                          <meta charset="utf-8">
                          <title>Pagination Demo</title>
                      </head>
                      <body>
                          <div>Data:</div>
                          <ul>
                          <?php foreach ( $currentData as $value ): ?>
                              <li><?= $value ?></li>
                          <?php endforeach; ?>
                          </ul>
                          <hr />
                          <div>Pagination:</div>
                          <ul>
                          <?php if ( $before ): ?>
                              <li style="color: silver">
                                  <a href="?page=<?= $page 1 ?>">zurück</a>
                              </li>
                          <?php endif; ?>
                          <?php foreach ( $pagination as $inPage ): ?>
                              <li style="color: <?= $page == $inPage 'red' 'blue' ?>">
                                  <a href="?page=<?= $inPage ?>"><?= $inPage ?></a>
                              </li>
                          <?php endforeach; ?>
                          <?php if ( $after ): ?>
                              <li style="color: silver">
                                  <a href="?page=<?= $page 1 ?>">vorwärts</a>
                              </li>
                          <?php endif; ?>
                          </ul>
                      </body>
                  </html>
                  [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                  Kommentar


                  • #10
                    Okay, dankeschön für deine Antwort.
                    Ich habe bereits eine Lösung gefunden meine Tabellen inhalte auf ID unterseiten zu unterteilen.
                    jedoch bekomme ich es nicht hin so [<<][<]...[2][3][4][5][6][7][8][9][10][11]...[>][>>] aussehen zu lassen.
                    Meine Seitenzahlen werden aktuell alle hintereinander weg nummeriert.
                    Momentan aber noch bis ins unendliche.
                    Was genau muss ich machen das ich das wie oben beschrieben aussehen lassen kann?

                    Kommentar


                    • #11
                      Schau doch in meinen Code oben. So eine "Gauge-Pagination" ( oder wie man das auch immer nennen will ) ist eigentlich nur eine "Range an Zahlen" von $aktuelleSeite - bis $aktuelleSeite + . Gefiltert auf mögliche Seiten.

                      Genau das macht dieser Code:
                      PHP-Code:
                      $pagination array_filter(range($page $gaugePadCount$page $gaugePadCount), function($in) use ( $pages )
                      {
                          return 
                      $in && $in <= $pages;
                      }); 
                      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                      Kommentar


                      • #12
                        Als Anhaltspunkt:

                        https://gist.github.com/chrisandchri...892bd9dd993775
                        [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                        Kommentar


                        • #13
                          Liest sich ohne PHP-Highlighting irgendwie wie nen Marvel-Comic von 1940.
                          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                          Kommentar


                          • #14
                            Da gibt es für mysql ja noch SQL_CALC_FOUND_ROWS.

                            Kommentar


                            • #15
                              Das ist mein komplesses Script was mir die Seitenzahlen erstellt.
                              Aber wie bekomme ich das jetzt so eingesetzt das ich nicht alle seitenzahlen angezeigt bekomme sondern rollierend eine bestimmte zahl?

                              PHP-Code:
                                      $seite $_GET["seite"];  //Abfrage auf welcher Seite man ist

                                      //Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
                                      
                              if(!isset($seite))
                                         {
                                         
                              $seite 1;
                                         }
                                      
                              //Einträge pro Seite: Hier 15 pro Seite
                                      
                              $eintraege_pro_seite 10;
                                      
                              //Ausrechen welche Spalte man zuerst ausgeben muss:
                                      
                              $start $seite $eintraege_pro_seite $eintraege_pro_seite;
                                      
                              //Tabelle Abfragen
                                      //Tabelle hei&szlig;t hier einfach: Tabelle
                                      
                              $abfrage "SELECT * FROM user ID $start$eintraege_pro_seite";
                                      
                              $ergebnis mysql_query($abfrage);
                                      while(
                              $row mysql_fetch_object($ergebnis))
                                      {
                                         echo 
                              $row->id."<br>"// Hier die Ausgabe der Einträge
                                      
                              }
                                      
                              $result mysql_query("SELECT ID FROM user");
                                      
                              $menge mysql_num_rows($result);


                                      
                              //Errechnen wieviele Seiten es geben wird
                                      
                              $wieviel_seiten $menge $eintraege_pro_seite;        
                                      
                                      
                              $sqlString "SELECT * FROM user WHERE ID <> 1 ORDER BY ID DESC LIMIT $start$eintraege_pro_seite";



                              // Hier ist meine Tabellenausgabe platziert...

                                     //Ausgabe der Seitenlinks:
                                      
                              $schniedeltext .= "<br/><div align="center">";
                                      
                              $schniedeltext .= "<b>Seite:</b> <a href="?id=1&seite=1"> [<<] </a>";

                                      
                                      
                                      
                              //Ausgabe der Links zu den Seiten
                                      
                              for($a=0$a $wieviel_seiten$a++)
                                         {
                                         
                              $b $a 1;

                                     
                              //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
                                     
                              if($seite == $b)
                                        {
                                        
                              $schniedeltext .= "  <b> > $b < </b> ";
                                        }
                                  
                                     
                              //Aus dieser Seite ist der User nicht, also einen Link ausgeben
                                     
                              else
                                        {
                                        
                              $schniedeltext .= " <a href="?id=1&seite=$b">[$b]</a> ";
                                        }


                                         }
                                    
                              $schniedeltext .= "<a href="?id=1&seite=$wieviel_seiten"> [>>] </a></div>";

                                      } 

                              Kommentar

                              Lädt...
                              X