echo $begrüßung;
Du erzählst etwas anderes als du nachher als Code stehen hast.
Zu Beginn meiner Datei wird der Wert der Variable $Richtung_Nr abgefragt:
$Richtung_Nr = $_REQUEST["Richtung_Nr"];
Du fragst sie nicht ab, du weist der Variablen $Richtung_Nr den Wert des Arrayelements $_REQUEST["Richtung_Nr"] zu. Dabei interessierst du dich nicht, ob dieses Element überhaupt existiert.
Existiert die Variable noch nicht, weil die Homepage gerade erst aufgerufen wurde, so wird
ihr Wert mit "0" initialisiert:if ($Richtung_Nr == "")
$Richtung_Nr = "0";
Nun, du hast sie ja eben angelegt, also existiert sie. Nur ist ihr Inhalt nicht "" sondern NULL, weil beim vorhergehenden Abfragen der nicht existierenden Variable NULL zurückgegeben wurde. Du verlässt dich hier auf PHPs eingebauten Mechanismus der automatischen Typkonvertierung, wodurch NULL als Leerstring interpretiert wird.
Außerdem fragt man die Existenz einer Variablen mit der Funktion isset() ab. Diese kann man auch gefahrlos auf nicht existierende Variablen anwenden.
Zu deinem Verständnis: Alles was ein Request mitbringt sind keine Variablen. Der Request ist aus der Sicht eines Webservers nichts weiter als ein Haufen Text. Der Webserver extrahiert daraus einige Werte, und PHP stellt sie dir freundlicherweise in den bekannten vordefinierten Arrays zur Verfügung. Erst jetzt kann man von Variablen sprechen, da Arrayelemente unter PHP auch nichts weiter als Variablen sind.
$_REQUEST kann man nehmen, das ist aber eine Zusammenfassung aus $_GET, $_POST und $_COOKIE. Es ist eindeutiger, wenn du auf $_REQUEST verzichtest und direkt auf das spezialisierte Array zugreifst, in dem du den Wert erwartest. Du verwendest ja sicher HTML-Code, der eindeutig einen GET- oder POST-Request erzeugt oder schiebst dem Client vorher einen Cookie zu. Also lass diese Eindeutigkeit auch bei der Auswertung nicht außer Acht.
Seltsamerweise komme ich aber nie über den Wert "1" hinaus und das ist es, was ich absolut nicht verstehe,
Zum Verständnis der Arbeitsweise eines Programms ist eines der grundlegenden Hilfsmittel die Kontrollausgabe der Variablenwerte. Diese stimmen oftmals nicht mit der eigenen Vorstellung überein, wenn man sich verprogrammiert hat. Ein echo reicht in einfachen Fällen. Eindeutig wird es mit var_dump(), denn diese Funktion gibt auch den Typ einer Variablen mit aus. Bei Strukturen, wie Arrays und Objekten, hilft außerdem noch print_r(). Ein Blick in den HTML-Quellcode oder ein vorangestelltes <pre> verhilft bei diesen komplexen Variablen zu einer übersichtlicheren Darstellung.
$Aktion = $_REQUEST["Aktion"];
$Richtung_Nr = $_REQUEST["Richtung_Nr"];
$Richtung_Titel = $_REQUEST["Richtung_Titel"];
$Richtung_Genre = $_REQUEST["Richtung_Genre"];
$Richtung_FSK = $_REQUEST["Richtung_FSK"];
Abgesehen von der oben schon erwähnten Verwendung von $_REQUEST und des ungeprüften Zugriffs darauf, ist es im Prinzip eine typische Anfänger-Unart, die Inhalte der vordefinierten Arrays in andere Variablen umzukopieren. Array-Elemente unterscheiden sich in Nichts von einzelnen Variablen. Einzelne Variablen haben zudem den Nachteil, dass man ihre Herkunft nicht sofort erkennen kann. Man muss sich unnötigerweise zusätzlich merken, dass diese nichts anderes enthalten als einen Wert des Requests. Ein $_GET/$_POST/$_COOKIE ist immer sofort als Benutzereingabe zu erkennen. Die oft verwendete Ausrede, $wert ließe sich einfacher als $_GET['wert'] notieren, wird abgewiesen, eine Revision ist nicht zugelassen. :-) Ist dir die Verständlichkeit auch für die Zukunft oder deine eigene vorübergehende Bequemlichkeit lieber?
Woran liegt es, dass ich hier nicht über den Wert "1" hinauskomme und die Grafiken nicht entsprechend angepasst werden, so wie ich es angegeben habe ?
Ermittle dies mit den erwähnten Kontrollausgaben. Ebenso wichtig ist die Kontrolle aller Hinweismeldungen, die dir PHP geben kann. Per Default sind aber die Meldungen vom Typ Notice vom Error-Reporting ausgenommen. Doch beim Entwickeln sollte man darauf nicht verzichten. Notice-Meldungen geben Hinweise auf Zugriffe auf nicht vorhandene Variablen. Auch Tippfehlern kommt man so auf die Spur. Diese liefern sonst stillschweigend NULL zurück, was ja durch die automatische Typumwandlung mal als 0 mal als Leerstring interpretiert wird.
Im einfachsten Fall verwendet man die Funktion error_reporting() mit dem Parameter E_ALL. In der Entwicklungsumgebung ist es jedoch günstiger, sich den Wert in der php.ini einzustellen. Dass dies korrekt übernommen wurde kontrolliert man dann mit der phpinfo()-Ausgabe, ebenso dass display_errors auf on steht.
echo "$verabschiedung $name";