Tach!
was ich genau erreichen will kann ich noch nicht sagen, aber was ich jetzt probiert habe funktionier wie ich es wollte.
Das ergibt aber ungültiges HTML. Mir scheint eher, dass du deine Ausgabe zu steuern versuchst, anhand von bestimmten Bedingungen. Und mir scheint, dass du es mal mit dem EVA-Prinzip probieren solltest. Eingabe, Verarbeitung, Ausgabe. Du holst dir zunächst deine Engabedaten - dafür ist in PHP nichts weiter zu tun, die sind ja bereits in $_POST und Konsorten zu finden. Dann verarbeitest du diese Daten, ohne dir um die konkrete Art der Ausgabe Gedanken zu machen. Erst wenn alle Daten fertig berechnet vorliegen, erstellst du die Ausgabe. Du wirst dazu vielleicht die eine oder andere Hilfsvariable benötigen, mit der du steuern kannst, ob diese oder jene Sektion in der Ausgabe erscheinen soll. Das musst du im Verarbeitungsteil berücksichtigen, solange sich diese Information nicht aus den sowieso schon vorliegenden Daten ergibt.
Zum Beispiel prüfst du eine Formulareingabe. Dabei stellst du fest, dass der Anwender Fehler gemacht hat. Du erzeugst dafür nicht sofort eine Ausgabe, sondern sammelst diese Meldungen erst einmal im Array $errors.
<?php
$errors = [];
if (fehler1)
$errors[] = 'Fehlermeldungstext 1';
if (fehler2)
$errors[] = 'Fehlermeldungstext 2';
Wenn du dann im Ausgabe-Teil angekommen bist, kannst du mit !empty($errors) entscheiden, ob du den Block für die Fehlermeldungen anzeigen musst und gehst dann mit einer Schleife über das Array, um die Meldungen auszugeben.
?>
<!doctype html>
<html>
<head>
<title>EVA-Prinzip-Beispiel</title>
</head>
<body>
<?php if (!empty($errors)): ?>
<ul>
<?php foreach ($errors as $error): ?>
<li><?=$error ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</body>
</html>
Du kannst auch im V-Teil die Entscheidung berechnen, welches Template geladen werden soll, wenn es mehrere Möglichkeiten gibt.
$entscheidung = soll_template1_verwendet_werden();
…
?>
<!doctype html>
<html>
<head>...</head>
<body>
<?php
if ($entscheidung)
include 'template1';
else
include 'template2';
?>
</body>
</html>
dedlfix.