dedlfix: Suche nach vereinfachter Notierung von html-Angaben

Beitrag lesen

Hi!

hmmm, habe jetzt versucht, die Ausgabe der Tabelle für unsere Gästebuch-Einträge über "<<<EOT ... EOT" umzusetzen, bekomme aber die Fehlermeldung "Parse error: syntax error, unexpected $end".

Syntax-Fehler werden in der Regel irgendwann nach ihrer eigentlichen Ursache gemeldet. Um diese dann zu finden, kann man schrittweise Blöcke entfernen und schauen, ob der Fehler weg ist - dann ist er in dem Block - oder mit anderen Blöcken fortfahren.

$Dateizeiger = fopen ("Dateien/txt/Gaestebuch_Eintraege.txt", "rb");
         $Einzelne_Zeile   = fgets ($Dateizeiger);
         $Einzelne_Spalten = explode ('|', $Einzelne_Zeile);

Warum nimmst du nicht das CSV-Format? Die zugehörigen Funktionen fgetcsv() und fputcsv() arbeiten auch dann richtig, wenn Anwender deine Trennzeichen (| und Zeilenumbruch) in ihrem Text verwenden.

$Nr       = $Einzelne_Spalten [0];
         $Name     = $Einzelne_Spalten [1];
         $Datum    = $Einzelne_Spalten [2];
         $Uhrzeit  = $Einzelne_Spalten [3];
         $Eintrag  = $Einzelne_Spalten [4];
         $eMail    = $Einzelne_Spalten [5];
         $Homepage = $Einzelne_Spalten [6];

Welchen Sinn hat das Umkopieren? Wenn du das nur machst, um mit den sprechende Variablennamen ein wenig Dokumentation zu haben, so kannst du die Bedeutung stattdessen auch in einen Kommentar schreiben.

$Homepage_URL = $Homepage;
            $Homepage     = '<a class="Homepage" href=" . $Homepage_URL . "></a>';

$eMail_Adresse = $Homepage;
            $eMail         = '<a class="eMail" href=" . $eMail_Adresse . "></a>';

Du verwendest weder die URL noch die E-Mail-Adresse separat weiter, also kannst du auch hier eine Kopiererei sparen. Wichtiger wäre eine Beachtung des Kontextwechsels (immer noch der häufigste Programmierfehler).

<span>"$Nr"</span>
                  <td>"$Name"</td>
                  <td>"$Datum" ("$Uhrzeit" Uhr)</td>
                  <td>"$eMail"</td>
                  <td>"$Homepage"</td>

Sieht das nicht etwas komisch aus, wenn all deine Ausgegebenen Werte mit Anführungszeichen auf der Seite erscheinen?

$Eintraege_html .= <<<EOT
         EOT;

Eine Alternative dazu wäre, für größere Textstücke den PHP-Modus ?> zu verlassen. <?php Allerdings musst du ihn dann für Variablen wieder eröffnen. Da du aber noch den Kontextwechsel berücksichtigen musst und die Heredoc-Syntax zwar Variablen aber keine Funktionsaufrufe unterstützt, ist das PHP-Verlassen hier gegenüber der Heredoc-Syntax im Vorteil.

Lo!