Enrico: Blätterfunktion funktioniert FAST *knirsch*

Hallo,

Entschuldigt bitte, wenn ich Euch wiedermal mit meinem Blätter-Problem bemühen muss, aber bald ist es geschafft (hoffe ich)   :o)

Die Blätterfunktion funktioniert nicht, wie sie soll und es werden nun zudem auch keine Einträge mehr angezeigt.  :o)

Wo liegt der Hund begraben, der mir soviel Kopfzerbrechen bereitet ?

Gruss, Enrico

<html>
  <head>
    [...]
  </head>
  <body>
    <?php
      $datei               = file("CSV_gaestebuch_eintraege.csv");
      $anzahl_eintraege    = count($datei);
      $eintraege_pro_seite = 5;

if (!isset($aktuelle_seite))
        $aktuelle_seite = 1;
      $anzahl_seiten = ceil($anzahl_eintraege / $eintraege_pro_seite);

$anfang = $anzahl_eintraege - ($eintraege_pro_seite * ($aktuelle_seite - 1));
      $ende   = $anfang + $eintraege_pro_seite;

for ($i = $anfang; $i >= $ende ;$i--)
      {
        $zeile = $lines[$i-1];
        list($nr,$autor,$ueberschrift,$datum,$uhrzeit,$eintrag,$homepage,$email ) = explode ("|", $zeile);

echo('...');

}

if ($aktuelle_seite>1)
      {
        $i=$aktuelle_seite-1;
        echo "<a href='$PHP_SELF?aktuelle_seite=$i'>[zurück]</a>";
      }

for($i=1; $i<=$anzahl_seiten; $i++)
      {
        if ($i==$aktuelle_seite)
          echo "[$i]";
        else
          echo "<a href='$PHP_SELF?aktuelle_seite=$i'>[Seite $i]</a>";
      }

if ($aktuelle_seite<$anzahl_seiten)
      {
        $i=$aktuelle_seite+1;
        echo "<a href='$PHP_SELF?aktuelle_seite=$i'>[vor]</a>";
      }
    ?>
  </body>
</html>

  1. hi,

    Die Blätterfunktion funktioniert nicht, wie sie soll

    aha.

    Wo liegt der Hund begraben, der mir soviel Kopfzerbrechen bereitet ?

    zunächst einmal in deiner fehlerbeschreibung.

    gruss,
    wahsaga

    1. Hallo Wahsaga,

      Es gibt eigentlich keine Fehlerbeschreibung.

      Es wird nur die Zeichenfolge " [1] " angezeigt, sonst nichts.

      Gruss, Enrico

      1. Hallo,

        Entschuldigt bitte, wenn ich Euch wiedermal mit meinem Blätter-Problem bemühen muss, aber bald ist es geschafft (hoffe ich)   :o)

        Die Blätterfunktion funktioniert nicht, wie sie soll und es werden nun zudem auch keine Einträge mehr angezeigt.  :o)

        Wo liegt der Hund begraben, der mir soviel Kopfzerbrechen bereitet ?

        Gruss, Enrico

        <html>
          <head>
            [...]
          </head>
          <body>
            <?php
              $datei               = file("CSV_gaestebuch_eintraege.csv");
              $anzahl_eintraege    = count($datei);
              $eintraege_pro_seite = 5;

        if (!isset($aktuelle_seite))
                $aktuelle_seite = 1;

        diese if-Anweisung wird immer TRUE ergeben,

        sie ist also sehr sehr sehr flüssig ;)

        $anzahl_seiten = ceil($anzahl_eintraege / $eintraege_pro_seite);

        $anfang = $anzahl_eintraege - ($eintraege_pro_seite * ($aktuelle_seite - 1));

        ($aktuelle_seite - 1) dieser Ausdruck ergibt NULL

        man könnte auch der Einfachheit halber schreiben:

        $anfang = $anzahl_eintraege;

        noch deutlicher für einen untenstehenden Denkfehler:

        $anfang=count($datei);

        $ende   = $anfang + $eintraege_pro_seite;

        $ende=count($datei)+5;

        for ($i = $anfang; $i >= $ende ;$i--)

        anders geschrieben:

        for($i=count($datei);$i>=(count($datei)+5);$i--)

        wird 1 jemals größer sein als 6?

        {
                $zeile = $lines[$i-1];

        nanu? hast Du uns code vorenthlaten?

        wie definiert sich $lines?   O.O

        list($nr,$autor,$ueberschrift,$datum,$uhrzeit,$eintrag,$homepage,$email ) = explode ("|", $zeile);

        echo('...');

        }

        if ($aktuelle_seite>1)

        da $aktuelle_seite=1 ist, und im gesammten Programmfluß

        nicht mehr verändert wird, ergibt diese Anweisung immer FALSE

        {
                $i=$aktuelle_seite-1;
                echo "<a href='$PHP_SELF?aktuelle_seite=$i'>[zurück]</a>";
              }

        for($i=1; $i<=$anzahl_seiten; $i++)

        diese Schleife ergibt im ersten Durchlauf TRUE, dann FALSE

        anscheinend ist $anzahl_eintraege <=5

        damit ist gleichfalls $anzahl_seiten mit 1 definiert

        {
                if ($i==$aktuelle_seite)
                  echo "[$i]";

        Ausgabe: [1]

        Das ist auch exakt das, was bei Dir erscheint

        else
                  echo "<a href='$PHP_SELF?aktuelle_seite=$i'>[Seite $i]</a>";
              }

        if ($aktuelle_seite<$anzahl_seiten)
              {
                $i=$aktuelle_seite+1;
                echo "<a href='$PHP_SELF?aktuelle_seite=$i'>[vor]</a>";
              }
            ?>
          </body>
        </html>

        Anmerkungen:

        Im eigentlichen ist das alles ganz simple Lektüre und ich würde daher empfehlen mal über deine Vergabe von Variablen-namen nachzudenken:

        $aktuelle_seite
        $anfang
        $anzahl_eintraege
        $anzahl_seiten

        Persönlich bin ich ein absoluter Feind von solchen $4_Meter_Bretter_Namen. Die einzige Var, die alles in sich speichert, was Du brauchst, ist das Array $datei, der Du über verschiedenste vordefinierte Funktionen alles entlocken kannst. Das hast Du ja auch gemacht: count($datei). Für Deine Übersicht über solche scripte kann ich Dir nur empfehlen auch mit diesem Ausdruck zu arbreiten -

        count($datei) ist war und bleibt count($datei); das bischen an Resourcen ist es allemal wert

        • und diesen Ausdruck nicht in irgendwelchen Variablen ($anzahl_eintraege) verschwinden zu lassen. Parameter wie $eintraege_pro_seite schreibe Dir bitte einfach als Zahl in den Steuerfluß.

        Wie ich Deiner o. g. "Fehlerbeschreibung", die wahsaga NICHT EINFACH SO hinterfragte(!), entnehme, ist es anscheinend nicht das erste mal, daß Du PHP-Probleme durch ANDERE Hirne erledigen läßt. Auch davor sei gewarnt, denn es bringt DICH nicht weiter, sondern wird Dich bis zur Überwindung Deiner  eigenen Faulheit vom Fleiß anderer abhänig machen.

        Bsw.: Was machst Du, wenn Du mehr als eine Seite mit diesem script ausgeben mußt? Wieder wegen eines noch nicht eingefügten for() im Forum posten?

        Gruß aus Berlin!
        eddi

  2. Hallo Enrico,

    Entschuldigt bitte, wenn ich Euch wiedermal mit meinem Blätter-Problem bemühen muss, aber bald ist es geschafft (hoffe ich)   :o)

    warum bleibst du nicht in deinem 1. Thread (->[pref:t=77077&m=444534])? (ja, der Thread wird da unten auch noch gelesen - ich hätte dir da unten durchaus nochmal geantwortet)

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|