Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalt einer Datei in Seiten teilen

Einklappen

Neue Werbung 2019

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

  • Inhalt einer Datei in Seiten teilen

    Wie kann ich von einer .txt datei den Inhalt in Seiten teilen?
    Ja, es ist eine .txt datei und nicht MySQL und das geht auch nicht mit MySQL da es ein gameserver ist der bans in einer .txt file schreibt und ich diese teilen möchte.
    Es sollen 1000 bans per seite sein, die soll dann ungefähr so aussehen:

    [1] [2] usw.


  • #2
    Seite 1 = Eintrag 0 bis 1000
    Seite 2 = Eintrag 1000 bis 2000
    ..

    Beim zeilenweisen Auslesen der Datei, mit fgets() oder mit file() kannst du einfach prüfen, ob der aktuelle Durchlauf im Wertebereich der aktuell anzuzeigenden Seite liegt oder nicht.
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      Kannst du mir das bisschen genau erklären, oder nen Beispiel geben?
      Ich beschäftige mich seit erst 3 Tagen intensiv mit PHP.

      Kommentar


      • #4
        Beispiele kannst du dir selber suchen, wie man eine Datei ausliest, wie man Paging umsetzt und so weiter. Auch das Handbuch ist da sehr hilfreich!

        Kommentar


        • #5
          Wenn du mit php blätterfunktion googelst dann findest du sehr viele Codebeispiele.
          PHP-Code:
          if ($var != 0) {
            
          $var 0;

          Kommentar


          • #6
            Das ist richtig, ich habe auch zuvor sehr viel gesucht, aber habe nur Ergebnisse, auch Tutorials gefunden, wo die MySQL Datenbanken Inhalte geteilt haben in Seiten.
            Für eine .txt Datei finde ich nichts.

            Kommentar


            • #7
              Das mag sein. Das Prinzip bleibt aber gleich.
              Wenn die Datei 1000 Zeilen hat, und du willst pro Seite 10 Zeilen anzeigen, dann musst du auf Seite 1 die Zeilen 1 bis 10, auf Seite 2 die Zeilen 11 bis 20 usw ausgeben.
              Da es keine Möglichkeit gibt, in einer Datei direkt ab Zeile 11 zu lesen, musst du immer die komplette Datei lesen und die Zeilen, die du grade brauchst da ausgeben.
              Dazu gibt es keine fertigen Scripte - da musst du eins der Beispiele anpassen.
              PHP-Code:
              if ($var != 0) {
                
              $var 0;

              Kommentar


              • #8
                PHP-Code:
                <?php
                $lines 
                file("datei.txt"); // Datei zeilenweise auslesen
                $lineCount count($lines); // wieviele Zeilen insgesamt?
                $pageEntries 1000// wieviele Einträge pro Seite?
                $pages ceil($lineCount $pageEntries); // wieviele Seiten insgesamt?
                $page = isset($_GET["page"]) ? $_GET["page"] : 1// page-Parameter entgegennehmen
                $page max(1min($pages$page)); // page-Parameter auf gültige Seiten einschränken

                $minEntries = ($page 1) * $pageEntries// Bereich eingrenzen (Untergrenze der aktuellen Seite)
                $maxEntries $page $pageEntries// Obergrenze (exklusive)
                for ($i 0$i $lineCount; ++$i) { // Zeilenweise durchlaufen
                  
                $isCurrent $minEntries <= $i && $i $maxEntries// aktuellen Eintrag anzeigen?
                  
                if (!$isCurrent) {
                    continue; 
                // nicht? dann überspringen
                  
                }
                  echo 
                $line"<br />"// oder eben ausgeben
                }
                echo 
                '<hr />';
                // Paginator ausgeben (alle gültigen Seiten)
                for ($p 1$p <= $pages; ++$p) {
                  echo 
                '<a href="?page=' $p '">' $p '</a>';
                }
                ?>
                so in etwa (ungetestet)

                Wie eben schon angedeutet, du musst ja nur die aktuelle Seite irgendwie entgegennehmen und prüfen, ob beim Zeilendurchlauf dieser der Seite entspricht.
                "Mein Name ist Lohse, ich kaufe hier ein."

                Kommentar


                • #9
                  Noch als Verbesserungsvorschlag: Wenn man über den Seitenbereich raus ist sofort die Schleife beenden. Gibt ja keinen Grund mehr weiter zu machen.

                  Kommentar


                  • #10
                    Richtig. Weiterhin muss man ja nicht auf file() setzen und alle Zeilen einlesen, sondern nur bis zur relevanten Stelle. Mit fopen() und fgets() sollte das relativ fix gehen. Wenn $maxEntries erreicht ist, kann man aussteigen und die Datei schließen. Bei tausenden Einträgen kann das sicherlich etwas an Performance herausholen.
                    "Mein Name ist Lohse, ich kaufe hier ein."

                    Kommentar


                    • #11
                      Danke Chriz, dein Beispiel hat super geklappt
                      Ich bin sogar schon am überlegen, wenn ich mal viele Seiten habe, wie ich es machen kann dass nicht alle Seiten angezeigt werden, sondern nur die letzten und die nächsten drei Seiten, zum Beispiel:

                      ... [4] [5] [6] [7] [8] [9] ...

                      Kommentar


                      • #12
                        Reines Matheproblem. Das eigentlich Problem ist, dass Du im Normalfall die Anzahl der Seiten bzw. Einträge nicht kennen wirst.
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar

                        Lädt...
                        X