Enrico: Formatierte Anzeige unserer Gästebuch-Einträge

Hallo,

Ich habe Probleme mit nachfolgendem Code:

<html>
  <head>
    <link rel="stylesheet" type="text/css" href="CSS_definitionen.css">
  </head>
  <body>
    <?
      $eintraege_pro_seite = 10;
      $anzahl_eintraege    = count("CSV_gaestebuch_eintraege.csv");
      $anzahl_seiten       = ceil($anzahl_eintraege / $eintraege_pro_seite);

function navigation()
      {
        if (!isset($anfang))
          $anfang = 0;

if ($anfang > 0)
        {
          echo "<a href='PHP_gaestebuch_ausgabe.php?anfang=0'>[Erste Seite]</a>";
          $zurueck = $anfang - $eintraege_pro_seite;
          if ($zurueck < 0)
            $zurueck = 0;
          echo "<a href='PHP_gaestebuch_ausgabe.php?anfang=$zurueck'>[Zurückblättern]</a>";
        }

if ($anzahl_eintraege > $eintraege_pro_seite)
        {
          $seiten = intval($anzahl_eintraege / $eintraege_pro_seite);
          if ($anzahl_eintraege % $eintraege_pro_seite)
            $seiten++;
        }

for ($i = 1; $i <= $seiten; $i++)
        {
          $position = ($i - 1) * $eintraege_pro_seite;
          echo "<a href='PHP_gaestebuch_ausgabe.php?anfang=$position'>$i</a>";
        }

if ($anfang < $anzahl_eintraege - $eintraege_pro_seite)
        {
          $position = $anfang + $eintraege_pro_seite;
          echo "<a href='PHP_gaestebuch_ausgabe.php?anfang=$position'>[Vorblättern]</a>";
          $position = $anzahl_eintraege - $eintraege_pro_seite;
          echo "<a href='PHP_gaestebuch_ausgabe.php?anfang=$fwd'>[Letzte Seite]</a>";
        }
      }

navigation();

for($j = $seite-1; $j < $eintraege_pro_seite + $seite - 1; $j++)
      {
        [...] Ausgabe der Einträge [...]
      }

navigation();
    ?>
  </body>
</html>

--------
Probleme
--------

  1. Die Navigation ober-und unterhalb der Einträge wird nicht angezeigt.

  2. Es werden nur leere Tabellen angezeigt, obwohl drei Test-Einträg bestehen.

  3. Die Anzahl der Einträge scheint "unterzugehen", da die ganze Seite mit leeren Tabellen gefüllt wird.

Zu 2) und 3): Die Pfad-Angaben passen aber.

Was stimmt nicht ?

Gruss, Enrico

  1. Hatte ausserdem vergessen, die Datei anzugeben :o)

    $datei               = file("CSV_gaestebuch_eintraege.csv");
    $anzahl_eintraege    = count($datei)-1;

    Nichtsdestotrotz funktioniert es nicht :-(

    Gruss, Enrico

  2. Hallo Enrico,

    <?

    wenn du <?php verwendest, funktioniert dein Code auch bei short_open_tags=off - aber das nur am Rande.

    $anzahl_eintraege    = count("CSV_gaestebuch_eintraege.csv");

    in $anzahl_eintraege steht jetzt 1 drin - egal was in der csv-Datei steht. Schau dir nochmal an, was count macht (->http://de2.php.net/count) - du willst den Inhalt der Datei vermutlich erst in eine Array lesen, und mit diesem Array die Funktion count "füttern" (ich weiß aber nicht, wie deine Datei aussieht).

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

    das gibt 1 (was du ja vermutlich bei drei Testeinträgen auch erwartet hast).

    function navigation()
          {
            if (!isset($anfang))

    wo kommt $anfang her?

    $anfang = 0;

    da $anfang nicht gesetzt ist, wird $anfang hier auf 0 gesetzt.

    if ($anfang > 0)

    diese Bedingung wird nie erfüllt sein ...

    if ($anzahl_eintraege > $eintraege_pro_seite)

    ... und die auch nicht - die Variablen $anzahl_eintraege und $eintraege_pro_seite sind innerhalb der Funktion nicht bekannt. Du musst die Variablen mit global (->http://de.php.net/language.variables.scope) innerhalb der Funktion bekannt machen, oder - besser - beim Aufruf der Funktion als Parameter übergeben (lies hierzu http://de.php.net/functions).

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

    $seiten ist ebenfalls unbekannt.

    Grüße aus Nürnberg
    Tobias

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

      Sorry für die verspätete Danksagung, aber ich war arbeitsmässig "etwas" eingebunden :o)

      Ich habe jetzt eine andere Lösung erarbeitet, die fast - leider erst fast - funktioniert.

      Ich habe den Code in einem neuen Eintrag gepostet, damit er auch gelesen und mir vielleicht auch geholfen wird :o)

      Trotzdem Danke für Deine Hilfestellung.

      Gruss, Enrico