PHP Array dauerhaft gefüllt lassen

CheeseCakeMen

Cadet 3rd Year
Registriert
Feb. 2021
Beiträge
42
Habe eine Select Box mit einer Länderliste. Nach Auswahl werden die jeweiligen Bundesländer ausgegeben. Soweit funktioniert auch alles.
Wie bekomme ich es hin, dass das Array auch nach Auswahl des Bundeslandes und nach Abschicken des nächsten Buttons erhalten bleibt.

PHP:
if(isset($_POST['selectCountryButton']) && !empty($_POST['country_id']))
    {
// hiermit wird das Array auch gefüllt wie ich möchte
        $states = fetchStates($_POST['country_id']);
    }    
    
    if(isset($_POST['selectStateButton']) && !empty($_POST['state_id']))
    {

        $districts = fetchDistrics($_POST['state_id']);

// nach dem absenden des Buttons ($_POST['selectStateButton']) ist das Array $states allerdings wieder leer        
    }
 
Indem der Button der das Formular (?) abschickt die Seite nicht komplett neulädt sondern z.B. per AJAX verarbeitet wird.
Alternativ müsste die country_id korrekt mitübermittelt werden damit das Formular wieder gleich funktioniert wie vor dem abschicken.
 
Hi...

Höchst wahrscheinlich würd' ich zur Speicherung der Daten wohl sowieso 'ne Session benutzen.
 
Natürlich sind die Daten weg. Aber nicht erst mit dem Absenden. Sie sind in dem Moment weg, wo der Server das Dokument fertig ausgeliefert hat. Erst die Anfrage an den Server erstellt die Daten neu.

Ajax ist ebenso eine Option wie die angesprochene Session (wenn man die Unterstützung dafür auf Serverseite hat oder aktivieren kann).

Ajax ist meist die bessere Option, weil sich dann der Server nichts merken muß (cf REST und Skalierbarkeit). Allerdings erfordert Ajax eine passende API. Die muß man erst entwerfen und implementieren.

Beispielsweise könnte man /ajax.php auf dem Server haben und mit Parametern Mode=x&Wert=Y aufrufen. Ajax kann immer nur die Antwort auf eine spezifische Frage liefern, wie halt „welches Bundesland gehört zu dieser ID?“; es kann aber nicht für verschiedene Anfragen gleichzeitig verwendet werden.

Protip:
1. Liste statisch ermitteln (ohne Abhängigkeit von der Eingabe)
2. Beim Ausliefern des Selects mit Option value= die ID des Bundeslandes angeben
3. Dann diese ID auf Clientseite halten und innerhalb dieser Seite nur mit Ajax arbeiten.

Das hat den Vorteil, daß nur bei tatsächlichem Bedarf mit dem Server geredet werden muß. Wenn es durch Wahl eines Bundeslandes per Select keine Daten geben muß, dann kann ich mir die Interaktion sparen. Wenn ich aber natürlich nach Auswahl des BL Information AUS diesem BL brauchen sollte: dann kann ich per Ajax diese abhängige Information unter Zuhilfenahme der eben gemachten Auswahl ermitteln.
 
  • Gefällt mir
Reaktionen: kim88
Zurück
Oben