Enrico: Suche nach vereinfachter Notierung von html-Angaben

Sorry, ich schon wieder ;-)

Und wieder mit der Suche nach einer Technik, von der ich nicht weiß, wie sie heisst.

Ich bin gerade dabei, eine css-formatierte Tabelle in php einzubinden, die die Einträge unseres zukünftigen Gästebuchs formatiert anzeigt.

Ich meine, mal eine Technik gesehen zu haben, die durch eine spezielle Notierung des Codes die ewige Verkettungen von html-Angaben unnötig macht, so nach dem schemenhaften Motto:

$Ausgabe = <<...

<table>
      <tr>
         <td>$Nr</td>
         <td>$Name</td>
      </tr>
   </table>

...>>;

Habe ich das so weit noch richtig in Erinnerung oder Sachen verwechselt?

Wenn nicht, wie heisst diese Notierung und wo kann ich sie nachschlagen?

Wie kürzlich und wie immer:

Vielen Dank und Gruß
Enrico

  1. Hi,

    Wenn nicht, wie heisst diese Notierung und wo kann ich sie nachschlagen?

    http://www.php.net/manual/en/language.types.string.php

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hallo ChrisB,

      super, nach "<<<EOT ... EOT" hatte ich gesucht.

      Danke :-)

      Gruß
      Enrico

      1. super, nach "<<<EOT ... EOT" hatte ich gesucht.

        Korrektur: "<<<EOD ... EOD" :-)

        Gruß
        Enrico

  2. hi,

    Wenn nicht, wie heisst diese Notierung und wo kann ich sie nachschlagen?

    http://php.net/manual/de/language.types.string.php

    Horst Link(ersatz)setzer ;-)

  3. Hallo,

    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".

    Der zugehörige Code:

    function Eintraege_aufbereiten ()
       {
          $Eintraege_html = "";

    $Dateizeiger = fopen ("Dateien/txt/Gaestebuch_Eintraege.txt", "rb");

    while (!feof ($Dateizeiger))
          {
             $Einzelne_Zeile   = fgets ($Dateizeiger);
             $Einzelne_Spalten = explode ('|', $Einzelne_Zeile);

    $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];

    if ($Homepage != "")
             {
                $Homepage = '<img class="Homepage_Nicht_angegeben" />';
             }
             else
             {
                $Homepage_URL = $Homepage;
                $Homepage     = '<a class="Homepage" href=" . $Homepage_URL . "></a>';
             }

    if ($eMail != "")
             {
                $eMail = '<img class="eMail_Nicht_angegeben" />';
             }
             else
             {
                $eMail_Adresse = $Homepage;
                $eMail         = '<a class="eMail" href=" . $eMail_Adresse . "></a>';
             }

    $Eintraege_html .= <<<EOT

    <table>
                   <tr>
                      <td>
                         <p>
                            <span>"$Nr"</span>
                         </p>
                      </td>
                      <td>"$Name"</td>
                      <td>"$Datum" ("$Uhrzeit" Uhr)</td>
                      <td>"$eMail"</td>
                      <td>"$Homepage"</td>
                   </tr>
                   <tr>
                      <td colspan="5">"$Eintrag"</td>
                   </tr>
                </table>

    EOT;

    $Eintraege_html .= "</p>";
          }

    echo $Eintraege_html;
       }

    Mir geht es hierbei in erster Linie nur mal darum, zu sehen, ob alles funktioniert, weitergehende Formatierungen etc. folgen, wenn alles wie beabsichtigt klappt.

    Liegt es an den Einrückungen, die ich der Übersichtlichkeit halber eingefügt habe oder wo liegt der Fehler?

    Warum, das konnte ich nicht herausfinden, nimmt man einmal "<<<EOD ... EOD" und ein anderes Mal aber "<<<EOT ... EOT"?

    Dankesehr :-)

    Gruß
    Enrico

    1. Hi,

      Liegt es an den Einrückungen, die ich der Übersichtlichkeit halber eingefügt habe

      Ja.
      Verflixt noch mal, warum liest du nicht *aufmerksam*, was im Manual steht?

      Warum, das konnte ich nicht herausfinden, nimmt man einmal "<<<EOD ... EOD" und ein anderes Mal aber "<<<EOT ... EOT"?

      Auch das steht im Manual.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      1. Hallo ChrisB,

        haste ja recht... war da zu ungeduldig, jetzt klappt's soweit... :-)

        Gruß
        Enrico

    2. 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!