Array Wert des Inputs an Output übergeben und ausgeben

Gesperrt
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Array Wert des Inputs an Output übergeben und ausgeben

Beitrag von damian2you »

Hallo

Habe im Input ein Array, welches ich gerne im Output verwenden würde.
Leider geht es aber mit einem Inputfeld nicht:

Code: Alles auswählen

echo "<input name=\"CMS_VAR[56]\" value=\"".  $meinArray  ."\"  type=\"hidden\">";
wenn ich nun im Output CMS_VALUE[56] ausgebe, bekomme ich nur "Array"
zurück.

Code: Alles auswählen

print_r("CMS_VALUE[56]");
warum wird das Array nicht korrekt übergeben?
Muss ich es per JavaScript ins Inputfeld schreiben und nicht via Variable?

Herzlichen Dank Damian
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

Ein <input> übergibt ja nur einen String und kein Array. Probier es doch mal analog zu:

http://www.contenido.org/forum/viewtopi ... highlight=
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

hmm...bekomme aber immer (wie damals auch) eine fehlermeldung im input bereich:

Code: Alles auswählen

Parse error: syntax error, unexpected '=' in C:\WebRoot\htdocs\contenido\includes\include.tplcfg_edit_form.php(423) : eval()'d code on line 175

mit "=" ist das "=" von

Code: Alles auswählen

"CMS_VAR[56]" = serialize($newArray);
gemeint....
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

Irgendwie halte ich auch:

Code: Alles auswählen

"CMS_VALUE[56]" = serialize($newArray); 
für sinnvoller.
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

gleicher effekt:

Code: Alles auswählen

Parse error: syntax error, unexpected '=' in C:\WebRoot\htdocs\contenido\includes\include.tplcfg_edit_form.php(423) : eval()'d code on line 162
es scheint als können man so der CMS VARIABLE keinen wert zuweisen....
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

Versuch es mal mit:

Code: Alles auswählen

$serializedArray = serialize($newArray);

echo "<input name=\"CMS_VAR[56]\" value=\"".  $serializedArray  ."\"  type=\"hidden\">";
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

hmm...

also scheint prinzipell zu funktionieren:

Code: Alles auswählen

Quellcode Ausgabe Input:

<input name="C9CMS_VAR[56]" value="a:3:{i:0;s:2:"93";i:1;s:3:"110";i:2;s:3:"137";}"  type="hidden">
Jedoch bekomme ich auf der Webseite dies:
bool(false)

Keine ahnung was das bedeutet....

ich habe nun folgende Codes:

Input:

Code: Alles auswählen

$serializedArray = serialize($newArray);

echo "<input name=\"CMS_VAR[56]\" value=\"".  $serializedArray  ."\"  type=\"hidden\">";
Output:

Code: Alles auswählen

$serializedArray = "CMS_VALUE[56]";
$newItem = unserialize($serializedArray);

  var_dump($newItem);

Resultate:
Input

Code: Alles auswählen

<input name="C9CMS_VAR[56]" value="a:3:{i:0;s:2:"93";i:1;s:3:"110";i:2;s:3:"137";}"  type="hidden">
Output

Code: Alles auswählen

bool(false)
Nur wie bekomme ich nun die werte des arrays (93, 110, 137) im Output?


danke vielmals für dein support!!
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

input bereich: anstelle von

Code: Alles auswählen

$serializedArray = serialize($newArray); 
verwende mal

Code: Alles auswählen

$serializedArray = addslashes(serialize($newArray));
meiner meinung nach

Code: Alles auswählen

$newItem = unserialize($serializedArray);
liefert dann false wenn der wert schrott ist...

das addslashes im input bereich sollte das umgehen...
*** make your own tools (wishlist :: thx)
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

leider negativ...gleiches resultat...habe aber, so glaube ich, den fehler gefunden.
Wenn ich im Output nur den CMS_VALUE[56] Wert ausgebe, also ohne ihn umzuwandeln, bekomme ich nur die hälfte des Strings:

IST:
a:3:{i:0;s:2:

SOLL:
a:3:{i:0;s:2:"93";i:1;s:3:"110";i:2;s:3:"137";}

Anscheinend gibt es ein Problem mit den Anführungszeichen...wie kann ich das umgehen? Ideen?

thx
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

damian2you hat geschrieben:leider negativ...gleiches resultat...
damian2you hat geschrieben:Anscheinend gibt es ein Problem mit den Anführungszeichen...wie kann ich das umgehen? Ideen?
du must schon in die konfiguration gehen und einmal speichern...
sonst wirkt sich das mit addslashes nicht aus... behebt eigentlich genau den sachverhalt...

falls das mit dem speichern auch nicht geht -> anstelle von addslashes htmlspecialchars verwenden...
*** make your own tools (wishlist :: thx)
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

bebkomme bei beiden auf der webseite dies:


Parse error: syntax error, unexpected T_LNUMBER in C:\WebRoot\htdocs\front_content.php(792) : eval()'d code on line 1433
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

versuche statt dem addslashes mal ein urlencode / urldecode - wenn das nicht klappt evtl. mal base64_encode/_decode

das funktioniert vll. besser
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

hallo

ich glaube nicht dass es an diesen funktionen liegt.
weil wenn ich ins Inputfeld meine Werte hardcodiert reinschreibe und die Hochkommas beachte also so

Code: Alles auswählen

echo "<input name=\"CMS_VAR[56]\" value=\"a:3:{i:0;s:2:\"93\";i:1;s:3:\"110\";i:2;s:3:\"137\";}\"  type=\"hidden\">";
dann bekomme ich auf der Webseite trotzdem nur

Code: Alles auswählen

a:3:{i:0;s:2:
warum schneidet es mir bei der ausgabe den grossen teil ab?
ist eine variable auf eine anzahl von zeichen beschränkt?
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

@stese: Sorry, hats recht gehabt...so gehts:

Input:

Code: Alles auswählen

$serializedArray = urlencode(serialize($newArray));

echo "<input name=\"CMS_VAR[56]\" value=\"".  $serializedArray  ."\"  type=\"hidden\">";
Output:

Code: Alles auswählen

$serializedArray = "CMS_VALUE[56]";

$serialized_object = urldecode($serializedArray);
$newItem = unserialize($serialized_object);

print_r ($newItem);
@all: Vielen Dank für eure Hilfe, ohne euch hätte ich das nie und nimmer geschaft....und meinen Horizont massiv erweitert (-; Thx und Gruss Damian
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

das hat was mit den " zu tun - also auch das adslashes mag er nicht. sprich probiere mal bitte urlencode

die configs werden in der tabelle !PREFIX!_container_conf gesetzt - schau dir die mal an - das schaut komplett so aus, dass bei mehereren CMS_VARS diese wie eine url verknüpft werden:
50=1&51=2&52=0&
und später im oputput wieder getrennt.

die tabellenspalte ist vom typ text - sollte also genügend input verkraften
Gesperrt