• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] JSON aufschlüsseln und neu anordnen

terra75

Member
Moin zusammen und schöne Weihnachten !

Ich stehe grade irgendwie auf dem Schlauch und benötige mal eure Hilfe.

Ich habe hier ein, aus einem Formular bestehendes Array. Übergabe mittels JS $(form).serialize().

Code:
order_firstname=test&order_lastname=user&order_mail=&order_clientnr=&DAY_0112=Essen+1&DAY_0212=Essen+1&DAY_0312=Essen+1&DAY_0412=Essen+1&DAY_0712=Essen+1&DAY_0812=Essen+1&DAY_0912=Essen+1&DAY_1012=Essen+1&DAY_1112=Essen+1&DAY_1412=Essen+1&DAY_1512=Essen+1&DAY_1612=Essen+1&DAY_1712=Essen+1&DAY_1812=Essen+1&DAY_2112=Essen+1&DAY_2212=Essen+1&DAY_2312=Essen+1&DAY_2412=Essen+1&DAY_2812=Essen+1&DAY_2912=Essen+1&DAY_3012=Essen+1&DAY_3112=Essen+1

Dieses möchte ich gerne an eine PHP Datei via Ajax übergeben. Soweit wäre es klar. data: $(form).serialize(),

Jetzt möchte ich es mir aber doch einfacher machen und das ganze Array so umstricken, das es sauber formatiert an das PHP Script übergeben werden kann. Soll heißen, das alle DAY_ Keys separat in das Array umgewandelt und eingetragen werden sollen.

Code:
[0]
 -> [order_firstname] = [...]
 -> [order_lastname] = [...]
 -> [order_mail] = [...]
 -> [order_clientnr] = [...]
    -> [DAY]
       -> [0112] = [Essen 1]
       -> [0212] = [Essen 1]

Sprich, ich müsste in PHP nur die Anzahl an Einträge in DAY auslesen und könnte die dann weiterschicken.

Nur wie stricke ich das vorhandene Array um, das ich zum unterem Ergebnis komme.
Ja, alle KEYs mit DAY_ erfassen und separieren. Aber wie?

Lieben Gruß,

Terra
 
Zuletzt bearbeitet:
Auch schöne Weihnachten!
Am bequemsten sind solche Sachen doch als normaler HTTP Request zu übertragen, wie beim <form>. Wenn das per AJAX gehen soll empfiehlt sich zur Stringifizierung m. E. FormData() und das kann dann in PHP mit dem gewohnten $_POST eingelesen werden.
 
Moin,

Vielleicht habe ich mich falsch ausgedrückt. Wie ich Informationen von PHP an JS und zurück übertrage, ist mir klar.

Ich möchte nur unter JS das Json Array umwandeln, das alle DAY_ Einträge in ein weiteres UnterArray geschoben werden um damit besser arbeiten zu können.

Gruß, Terra
 
Für das Verschieben sollten die Daten aber in eine Variable vorliegen, sonst würde es sehr aufwendig. JSON ist ja nur ein Text-String. Diesen in eine Variable zu schieben geht mit JSON.parse()
Das sollte das Gesuchte sein.

Wichtig: das taugt nicht zur Übergabe an PHP! Dafür ist JSON die beste Variante. Du kannst keine JS Variablen/Objekte an PHP übergeben. Zwischen Browser und Server läuft das nicht.
 
Soooo,

bin nochmal ganz tief in mich gegangen und habe mal die grauen Zellen angestrengt und so mit eine Lösung gefunden.

Prinzipiell ist es ja erstmal egal, wie man die Informationen an das PHP Script übergibt. In meinen Fall war ich mal so frei und hab $_REQUEST verwendet um beide Varianten erstmal zu besitzen. So mit konnte ich direkt am PHP Script testen.

Übergeben wird direkt in der URL folgendes: (NUR ZUM TESTEN!)
Code:
sendmail.php?mail=bestellung&order_lastname=kevin&order_mail=&order_clientnr=&DAY_0112=Essen+1&DAY_0212=Essen+1&DAY_0312=Essen

Die Lösung meines Problems sieht in PHP wie folgt aus.
PHP:
		$data = $_REQUEST;

		foreach ($data as $key => $value) {
			if (substr( $key , 0, 4) == 'DAY_') {
								
			$data['day'][substr( $key , -4, 4)] = $value;
			unset ($data[$key]);	

			}
		}

Ob es jetzt sauber Programmiert ist, stell ich einfach mal in Frage. Vielleicht sieht jemand in dem kurzen Script Verbesserungsbedarf und darf es dann hier posten ;)

Ausgabe:
Code:
Array
(
    [mail] => bestellung
    [order_lastname] => kevin
    [order_mail] => 
    [order_clientnr] => 
    [day] => Array
        (
            [0112] => Essen 1
            [0212] => Essen 1
            [0312] => Essen 1
            [0412] => Essen 1
            [0712] => Essen 1
            [0812] => Essen 1
            ....

Also, genau das, was ich wollte. So mit kann ich jetzt den SubArray "day" ohne großen Probleme bearbeiten, egal welche Daten als Key dort drin stehen. (sind ja immer andere)

Trotzdem, vielen Dank!

Terra
 
War trotz alledem aber keine Frage zu JS. Daten bleiben trotzdem eine Textwurst. Erst PHP löst das auf. Das ist hoffentlich auch hängen geblieben.
 
Zurück
Oben