dedlfix: PHP-Aufbau Formular

Beitrag lesen

echo $begrüßung;

Beschreibe bitte zunächst einmal dein Problem so, dass es ein Außenstehender verstehen und nachvollziehen kann. Am besten wäre ein auf das Minimum verkürztes Beispiel der beteiligten Dateien.

Es ist immer noch nicht vollständig nachvollziehbar. Es fehlt das zu deiner Frage passende Problem. Es sind keine [%foo%]s in deinen Texten zu sehen, die ersetzt werden sollen. So weiß ich immer noch nicht ganz genau, wann sie nun in welcher Form vorliegen.

$page = preg_replace("~[%top%]~",$docTop, $page);

[%foo%] ist kein Muster sondern nur ein einfacher String. Somit brauchst du auch keine aufwändige Mustererkennungsfunktion zu verwenden, sondern kannst mit einfachen Stringersetzungsfunktionen (str_replace() oder strtr()) arbeiten.

echo "$formular_temp";

Anführungszeichen um Variablennamen ohne weiteren Text sind überflüssig.

$formular_temp = file_get_contents('formular.txt');
       if (empty($_POST)) {//keine Daten gesendet --> lade leeres Formular

Dein eigentliches Problem ist, dass du Eingabe, Verarbeitung und Ausgabe nicht trennst sondern munter miteinander mischst. So kommst du in die Bredouille, dass du noch Eingabewerte verarbeiten musst, aber da schon auf Zeichenfolgen der Ausgabe Acht geben musst. Zum Auswerten von Formulardaten braucht man allein das $_POST-Array. Der HTML-Text vom Formular ist dabei nicht notwendig. Sammle alle beim Auswerten der Eingabedaten aufgetretenen Fehlermeldungen in einer geeigneten Struktur. Ermittle alle weiteren Daten, die für die Ausgabe benötigt werden, und erst wenn du alles zusammenhast, erzeuge die Ausgabe und arbeite dabei die Daten ein. Das kann durchaus auch mit Suchen und Ersetzen in einem aus einer Datei geladenen Templates geschehen.

Mein Ausgangsproblem war, dass in der index.php der Quelltext von check.php anstatt dem Formular ausgegeben wurde.

Für mich stellt es sich nun so dar, dass in der check.php PHP-Verarbeitung stattfindet und das Ergebnis ein Text ist, der zu ersetzende Platzhalter enthält. Man kann das auf zwei Arten lösen, sofern du keine grundlegende Strategieänderung aufgrund meiner obigen Ausführung willst. Zum einen kann man die Ausgabe puffern, zum anderen kann man von vorn herein seinen auszugebenden Text in einer Variable sammeln. In beiden Fällen kann man nun noch Stringverarbeitung vornehmen, bevor man alles ausgibt.

echo "$verabschiedung $name";