Nach 10 Beiträgen neue Seite mit nächsten 10

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

  • Nach 10 Beiträgen neue Seite mit nächsten 10

    Schönen guten Abend,
    Das HABE ich:

    $dateiname="linkeintraege.txt";
    $lines=file($dateiname);
    $num=sizeof($lines);

    for ($i=count($lines)-1; $i>=0; $i--)
    {
    $zeile = explode('|', trim($lines[$i]));
    if($zeile[3]=="Thüringen"){
    echo "bla bla bla.."";

    Das WILL ich:

    Nun möchte ich, das ich für jeweils 10 bzw. 20 Datensätze aus der .txt ausgegeben werden, und wenn mehr drin sind, hätte ich gerne einen Link (wie hier im Forum) wo ich mir dann die nächsten 10 bzw 20 Datensätze anzeigen lassen kann usw. usw. usw.

    Das echo sollte ungefähr so sen:
    "vorherige 10 Beiträge|nächsten 10 Beiträge"
    oder
    "Seite 1 2 3 " so wie hier.
    Das es geht sehen wir ja hier, aber WIE??

    Habe leider noch nicht so viel Dunst hiervon, wer würde mir helfen?

    Danke

    Mit freundlichen Grüßen aus Thüringen
    Stephan

  • #2
    hmmm,

    also du liest ja alle Zeile ein, da lässt du einen Zähler mitlaufen, diesen teilst du dann durch zehn, dann hast du die Anzahl der seiten, jetzt machst du einfach eine Schleife und erzeugst links auf die selbse seite nur mit einer zusätzlichen Variable seite die du mit übergibst, diese prüfst du logischerweise dann bei jedem Aufruf und erkennst daran welche zeilen du ausgeben musst. Hier ein kleiner Codeabschnitt wie ich es meine :
    Code:
    $jupp = isset($zeigeseite);
                         if ($jupp)
                             {
                             }
                         else
                             {
                               $zeigeseite=1;
                             }
    // dieser Codeabschnitt überprüft ob eine bestimmte Seite gesetzt ist,
    ist es nicht der Fall wird die erste Seite ausgegeben
    
    $mye_count = mysql_num_rows($result);
                         if ($mye_count > 1)
                            {
    
                                 $seitengesamt = ceil(($mye_count-1)/20);
                            }
                         else
                            {
                                 $seitengesamt = 1;
                            }
                         if ($mye_count <= 0) { $leer=1; }
    
    //Ist Datenbank gestützt aber im Prinzip das selbe, 
    also mye_count ist die Anzahl der Beiträge insgesamt, 
    diese werden immer in eine Gruppe von 20 zusammengefasst, 
    ganz unten die letzte Zeile überprüft ob überhaupt Daten da sind.
    
    $tc=0;
                         if ($seitengesamt > 1)
                           {
                              $firsttopic = ($zeigeseite-1)*20+1;
                              if ($zeigeseite==$seitengesamt)
                                {
                                   $lasttopic = $mye_count;
                                }
                              else
                                {
                                   $lasttopic = $firsttopic+20;
                                }
                           }
                         if ($seitengesamt == 1)
                           {
                             $firsttopic = 1;
                             $lasttopic = $mye_count;
                           }
                         for($izaehler=$firsttopic;$izaehler<=$lasttopic;$izaehler++)
    
                            {
    
    // AUSGABE
    
    }
    
    // Hier wird errechnet welches Arrayelement das erste der zu zeigenden Seite ist 
    und welches das letzte und dann wird es mit einer Schleife ausgegeben
    Ich hoffe der Code ist einigermassen leserlich

    JoelH: Vielleicht nicht so lange Kommentarzeilen -> lieber mal umbrechen, sonst läuft die Tabelle in der Anzeige total breit.

    [Editiert von BrainBug am 26-10-2001 um 08:44]

    Kommentar


    • #3
      Packs nicht....

      Vielen Dank für den Tip
      Ich habe jetzt zwei Tage herumgedoktert,
      doch irgendwie werden immer alle Datensätze meiner .txt auf einer Seite ausgegeben.
      Wer könnte mir anhand meines o.g. Beispiel mal idiotensicher eine Beispiel nennen. Wäre sehr dankbar.
      Mit freundlichen Grüßen aus Thüringen
      Stephan

      Kommentar


      • #4
        Sorry, aber vergiß das von JoelH. Habs nur kurz überflogen, aber das ist wohl eher für die DB-Variante. Naja, vielleicht täusche ich mich auch, aber hier mal meine (kürzere) Variante:
        Code:
        $dateiname="linkeintraege.txt"; 
        $lines=file($dateiname); 
        $num=sizeof($lines); 
        
        // hier werden die Seite-vor und Seite-zurück-Links ausgegeben
        if ($liste>0) echo "<a href=\"diese_datei.php?liste=".($liste-1)."\">vorherige 10 Beiträge</a>";
        if ($liste<(ceil($num/10)-1)) echo "|<a href=\"diese_datei.php?liste=".($liste+1)."\">nächsten 10 Beiträge</a>";
        
        $x=$liste*10;
        $xi=($liste*10)+10;
        if ($xi>$num) $xi=$num;
        while ($x<$xi) {
        	$zeile = explode('|', trim($lines[$x])); // Inhalt des Eintrags XX einlesen
        	if($zeile[3]=="Thüringen"){ 
        		echo "bla bla bla...";
        		}
        	else {
        		echo "blablablablal";
        		} 
        	$x++;
        	}
        Bis dann

        Kommentar


        • #5
          Fast getroffen

          Vielen Dank, daß Du so früh deswegen augestanden bist.
          Das ist schon fast was ich wollte, aber jetzt ist der neueste Eintrag auf der letzten Seite ganz unten, anstatt auf der ersten ganz oben. Kann ich die noch umgekehrt sortieren?
          Danke
          Mit freundlichen Grüßen aus Thüringen
          Stephan

          Kommentar


          • #6
            einfach array_reverse($lines) vor der while-Schleife (=Ausgabe) benutzen.
            Mehr dazu unter http://www.php.net/manual/de/function.array-reverse.php

            Kommentar


            • #7
              Vielen Dank

              Vielen Dank Mr BrainBug,
              nun geht auch dieses.
              Danke für die schnelle Hilfe.
              Stephan
              Mit freundlichen Grüßen aus Thüringen
              Stephan

              Kommentar


              • #8
                Kein Problem Herr StefanF

                Kommentar


                • #9
                  Deine Hilfe-Mein Ergebnis

                  Hallo Mr. BrainBug,
                  gib mir mal bitte Deine Meinung zum Ergebnis unserer Zusammenarbeit.
                  Es ist das Gästebuch auf http://www.dart-deutschland.de .
                  Bis bald
                  Stephan
                  Mit freundlichen Grüßen aus Thüringen
                  Stephan

                  Kommentar


                  • #10
                    hmm, fast okay. Momentan wird noch das Vorwärtsblättern falsch angezeigt -> du hast genau 20 Einträge im Gästebuch, d.h. man muß nur einmal vorblättern, dann steht aber immer noch "Die nächsten 10" da.
                    Ich schau mir später nochmal den Code an.

                    Bis dann

                    Kommentar


                    • #11
                      hab noch Probleme

                      $anzahl = mysql_num_rows($result_reihen);
                      $pages = $anzahl/$ppp;

                      so... $ppp wurde als zulässige Zahl von Beiträgen / Seite festgelegt.
                      Code:
                      					if(!isset($page))
                      						{$page="1";}
                      					if ($anzahl > 1)
                                             {
                                                $firsttopic = ($page-1)*20+1;
                                                if ($page==$anzahl)
                                                  {
                                                     $lasttopic = $count;
                                                  }
                                                else
                                                  {
                                                     $lasttopic = $firsttopic+20;
                                                  }
                                             }
                                           if ($anzahl == 1)
                                             {
                                               $firsttopic = 1;
                                               $lasttopic = $count;
                                             }
                                           for($izaehler=$firsttopic;$izaehler<=$lasttopic;$izaehler++)
                                              {
                      						echo "$page";
                      						}
                      Wo is jetzt das Problem ?

                      er zeigt dann immer ne fette Reihe von Einsen an...
                      ich bin da aber auch noch nich richtig durchgestiegen
                      Also gut möglich, das da ganz dumme Fehler drin sind.

                      Kommentar


                      • #12
                        wat, wer bist du denn?

                        Hallo Argus, wo kommst du denn her? Bist du hier richtig oder hast du dich im Thema geirrt?

                        äh, wie dem auch sei, zu deinem Problem:

                        kann leider anhand dem Codeschnipsel nicht genau nachvollziehen, was da so passiert oder passieren soll, aber (ach, jetzt sehe ich, daß dein Skript auf Vorschlag von JoelH basiert) du darfst halt auch nicht

                        echo "$page";

                        ausgeben. Ist klar, daß da nur die Zahl (eben die 1) ausgegeben wird. An der Stelle sollte dein Eintrag bzw. dessen Ausgabe stehen.

                        Kommentar

                        Lädt...
                        X