Auge: Trennung von PHP und HTML

Beitrag lesen

Hallo

... Eine davon wäre, dass ich eine weitere PHP-Datei einbinde, sobald $errormessage gesetzt wurde:

PHP-Datei 'errormessage.php':

if (isset($errormessage){
    echo "<p class="xy">$errormessage</p>;"
}


> HTML-Dokument:  
> ~~~php
  

> <?php include('uservalidation.php') ?>

<form id="infomaterial" action="[code lang=php]<?php echo $_SERVER['PHP_SELF']; ?>


> .....  
> <input type="submit" class="submit" value="anmelden" />  
> <!-- An dieser Stelle könnte die Fehlermeldung kommen -->  
> <p class="xy">`<?php include('errormessage.php') ?>`{:.language-php}</p>  
> </form>  
> [/code]  
> Wäre das eine vernünftige Alternative?  
  
Naja, irgendwie nicht. Das passt zwar logisch, aber ein Skript einzubinden, das nichts weiter macht, als eine Variable auf Existenz zu prüfen und bei Bejahung der Existenz mit einem HTML-Schnipsel drumrum auszugeben (siehe dein Folgeposting), ist mit Kanonen auf Spatzen geschossen.  
  
`echo (isset($errormessage)) ? '<p class="xy">'.htmlspecialchars($errormessage).'</p>' : '';`{:.language-php}  
  
... direkt im Skript wäre eine einfache Möglichkeit.  
  

> Bei dieser Variante habe ich nur die Befürchtung, dass ich am Ende immer mehr includes bekomme, dass die ganze Angelegenheit unübersichtlich wird.  
  
Mehr Includes: ja; unübersichtlicher: nein; egal, welche Form du benutzt, wenn es zu einer Entscheidung kommt, ein Stück content auszugeben oder nicht, muss sie getroffen werden. Das mit include zu machen, ist eine Möglichkeit, wenn auch nicht die Beste.  
  

> Es fällt ja öfter das Stichwort "HTML-Template". Ich weiss nicht genau, wie das funktioniert. Aber wäre das eine Lösung dafür? Ich wäre froh, wenn ich auf das zunächst verzichten könnte.  
  
Es wäre ebenfalls eine mögliche Lösung. Man legt dazu HTML-Vorlagen an, die an den relevanten Stellen Platzhalter für einzufügende Inhalte haben. Dass sich das ausschließlich für Fehlermeldungen lohnt, bezweifle ich aber. Da muss man schon größer rangehen.  
  
Eine mögliche Herangehensweise:  
  
template.tpl:  
`<p class="xy">[%fehlermeldung%]</p>`{:.language-html}  
  
PHP  
~~~php
# Anlegen der Variable  
$fehlerausgabe = '';  
  
# Bei Bedarf Template laden und ausfüllen  
if (!empty($errormessage)) {  
$fehlertemplate = file_get_contents('template.tpl');  
$fehlerausgabe = str_replace('[%fehlermeldung%]', htmlspecialchars($errormessage), $fehlertemplate);  
}  
  
# wenn vorhanden: Ausgabe der Fehlermeldung; wenn nicht, dann nicht  
echo (!empty($fehlerausgabe)) ? $fehlerausgabe : '';

Tschö, Auge

--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
Veranstaltungsdatenbank Vdb 0.3