echo $begrüßung;
- Wie kann ich den, leider sehr langen, und damit sehr unübersichtlichen Code kompakter notieren?
Dazu müsste man den Code und seine Funktionsweise verstehen. Die dazu notwendigen Kommentare machen ihn aber erstmal noch länger. Ohne sie ist es eine immense Fleiß- und Denkarbeit, auf die ich ehrlich gesagt grad keine richtige Lust habe. Beim Drüberfliegen fiel mir auf, dass Codeteile, die gleich aussehen, immer wieder auftauchen. Das sind Kandidaten für eine Funktion. Wiederverwendeter Code (mit oder ohne geringfügige Änderungen) pflegt sich besser an nur einer Stelle, die mehrfach aufgerufen wird als am vielen Stellen, die jeweils nur einmal aufgerufen werden.
Folgende Aktionen funktionieren:
[...]
Danach ist die Auswahlliste 1 leer und in Auswahlliste 2 nur die
Option "Detail ?" zu sehen, aber keine Details.
Das ist das was du als Anwender siehst. Was siehst du als Programmierer? Welche Codeteile sind dafür verantwortlich, dass das passiert, was du als Fehlverhalten identifiziert hast. Inwieweit stimmen die Inhalte der beteiligten Variablen nicht mit deiner Vorstellung überein? Kontrollausgaben helfen beim Vergleich.
- Was muß ich bei der Werteübergaben ändern?
Wenn du den fehlerhaften Codeteil gefunden hast, dir keinen Reim drauf machen kannst, oder dir keine Lösung einfällt, das Problem zu beseitigen, dann haben erfahrungsgemäß deutlich mehr Leute Lust, sich dem Problem zu widmen. Den Fehler in einer unkommentierten Codeansammlung zu suchen macht keine Freude. Deshalb versuche bitte die fehlerhafte Stelle einzugrenzen.
Allgemeine Hinweise zu einem geringen Teil des Codes:
Die Initialisierung der Variablen am Anfang ist schon mal nicht schlecht. Ich hab aber nicht kontrolliert, ob du dabei eine vergessen hast. Wenn du konsequent alle Variablen vor dem ersten Lesezugriff mit einem (Default-)Wert versiehst, können dir unter anderem Features wie register_globals nicht gefährlich werden. Das error_reporting beim Entwickeln auf E_ALL stehen zu haben (und display_errors auf on) hilft uninitialisierte Variablen zu finden.
$Filter_1 = $_POST ["Filter_1"];
$Filter_2 = $_POST ["Filter_2"];
$Filter_3 = $_POST ["Filter_3"];
Oft gesehen und immer wieder unsinnig ist das einfache Umkopieren von GET/POST-Array-Elementen in andere Variablen. Wenn die Elemente nicht vorhanden sind ist das einer dieser eben erwähnten Lesezugriffe, der mit einer Notice geahndet wird.
$Status_Filterung = $_POST ["Status_Filterung"];
Damit ist nun eine Variable namens $Status_Filterung garantiert vorhanden, wenn auch mit einem null als Inhalt.
if (!isset ($Status_Filterung))
Dein Glück ist, dass die Funktion isset() auch bei Variablen mit dem Inhalt null ein false zurückliefert.
Was jedoch verlorenging, ist die am $_POST["..."] deutlich zu sehende Herkunft des Wertes. Ein $foo sieht harmlos aus und weist nicht unbedingt auf eine Benutzereingabe hin. Der Tippkomfort eines $foo gegenüber einem $_POST["foo"] kommt mit einer Verringerung der Übersichtlichkeit und mit jeweils einer zusätzlichen Variablen und damit einer erhöhten Komplexität daher.
An dieser Stelle beende ich meine (kurze) Analyse aus den oben genannten Gründen. Ich denke, viel Code-Wiederholung wirst du durch den Einsatz von Funktionen sparen können. Überlege dir dazu, was die Gemeinsamkeiten und was die Unterschiede der sich wiederholenden Stellen sind. Folgen die Unterschiede immer dem gleichen Schema? Ist es am Ende nur ein Wert, der variiert, dann wäre das ein Kandidat für einen zu übergebenden Parameter beim Funktionsaufruf.
Auch das EVA-Prinzip kann dir Übersichtlichkeit bringen. Konstrukte wie …
$Optionen_Filter_1 .= '<option value="' . $Array_Temp[$i] . '">' . $Array_Temp[$i] . '</option>';
… bringen zur Ausgabe gehörenden Code in den Teil der Verarbeitung. Lege zunächst ein Array mit den reinen Werten an. Erst wenn der Teil Ausgabe an die Reihe kommt, solltest du die Werte mit den zur Ausgabe gehörenden Strings zusammenbringen. Das hat den Vorteil, dass man bei Bedarf diese Werte kontrollieren kann, ohne dass bereits störender Ausgabecode mit dabei steht. Außerdem fehlt die Behandlung der Werte für den Ausgabekontext, in dem Fall HTML, wofür die Funktion htmlspecialchars() genommen werden kann/sollte.
echo "$verabschiedung $name";