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

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

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

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

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

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 » Mi 28. Mär 2007, 12:31

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

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: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 28. Mär 2007, 13:26

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

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: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 28. Mär 2007, 13:34

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

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

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

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

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

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