Hallo zielscheibe,
ich würde Dir vorschlagen, dass Du den PHP Code am Anfang der Seite konzentrierst, und aus PHP heraus keine echo Ausgaben machst (den Tipp hast Du ja schon anderswo bekommen). PHP verleitet zwar dazu, Code und HTML bunt zu mischen, aber Du tust Dir damit keinen Gefallen. Und Funktionen aufzurufen, die ECHOs machen, führt am Ende zu einer völligen Unklarheit, wo nun Ausgaben erfolgen. EIGENTLICH verwendet man immer zwei PHP Dateien: Eine als HTML-Template, die sich NUR um die Ausgabe kümmert, und eine als Logik-Block, die die erforderlichen Daten berechnet und überhaupt kein HTML enthält. Die Code-Datei bindet die Template-Datei per include ein, wenn alle für das Template benötigten Daten berechnet sind. Für einfache Übungen geht es auch in einer Datei; aber Fachlogik und HTML-Aufbau solltest Du trotzdem trennen. Das gehört einfach so.
Setze zu Beginn eine Variable $preisAusgabe auf FALSE, und wenn $_GET['ok'] kommt, dann führst Du deine Berechnung durch. Das Ergebnis speicherst Du z.B. in einer Variablen $endPreis, und du setzt $preisAusgabe auf TRUE. Wichtig: (1) sprechende Variablennamen, (2) Variablen haben EINEN Zweck (also: $endPreis auf -1 setzen, um anzuzeigen dass keine Ausgabe erfolgen soll, geht gar nicht).
DANN kommt dein HTML Block, und hinter deiner Table kannst Du dann kurz ins PHP zurückkehren um zu entscheiden ob Du den Ausgabeblock bringen musst oder nicht:
</table>
<?php if ($preisAusgabe): ?>
<div class='ergebnis'>Der Endpreis beträgt: <?= number_format($endPreis,2,",","") ?> Euro</div>
<?php endif; ?>
</body>
</html>
Ich habe hier die alternative Syntax für Kontrollstrukturen verwendet, die ist bei einem solchen Hin- und Herschalten zwischen HTML und PHP besser lesbar.
Häufiges Umschalten zwischen HTML und PHP kostet Dich keine Performance. Der PHP Interpreter verarbeitet ohnehin die ganze Datei...
Rolf
sumpsi - posui - clusi