Seite 1 von 1

Array Wert des Inputs an Output übergeben und ausgeben

Verfasst: Mi 28. Mär 2007, 11:08
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

Verfasst: Mi 28. Mär 2007, 11:16
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=

Verfasst: Mi 28. Mär 2007, 11:27
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....

Verfasst: Mi 28. Mär 2007, 11:41
von Dodger77
Irgendwie halte ich auch:

Code: Alles auswählen

"CMS_VALUE[56]" = serialize($newArray); 
für sinnvoller.

Verfasst: Mi 28. Mär 2007, 11:50
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....

Verfasst: Mi 28. Mär 2007, 12:31
von Dodger77
Versuch es mal mit:

Code: Alles auswählen

$serializedArray = serialize($newArray);

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

Verfasst: Mi 28. Mär 2007, 13:09
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!!

Verfasst: Mi 28. Mär 2007, 13:26
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...

Verfasst: Mi 28. Mär 2007, 13:32
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

Verfasst: Mi 28. Mär 2007, 13:34
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...

Verfasst: Mi 28. Mär 2007, 14:01
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

Verfasst: Mi 28. Mär 2007, 14:07
von stese
versuche statt dem addslashes mal ein urlencode / urldecode - wenn das nicht klappt evtl. mal base64_encode/_decode

das funktioniert vll. besser

Verfasst: Mi 28. Mär 2007, 14:11
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?

Verfasst: Mi 28. Mär 2007, 14:17
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

Verfasst: Mi 28. Mär 2007, 14:18
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