Hallo zusammen,
leider habe ich mich bis jetzt nicht object literals auseinandergesetzt.
Ich habe ein mehrdimensionales Array $kaufhaus['Artikel'][$i], $kaufhaus['bild'][$i], $kaufhaus['ZText'][$i] und $kaufhaus['breite'][$i].
Damit will ich mit dw_tooltip.js eine JavaScript Objektvariable füllen. Für dw_tooltip muss das Ganze dann so aussehen:
Zunächst habe ich gedacht ich müsste das PHP-Array in JS-Array umwandeln und dann in einer For-Schleife so formatieren, dass dann im Quellcode so dasteht.
Jetzt habe ich 'ne ganze Menge über Obejekt Literale und Arrays gelesen, krieg es aber einfach nicht umgesetzt.
Der Ansatz mit aus http://www.php.de/javascript-ajax-un...n-fuellen.html fand ich ganz hilfreich:
und leuchtet mir ein, aber mir erscheint das ganze sehr viel komplizierter, da ich ja auch die Namen der Eigenschaften (caption,img, ..). mit einbauen muss, Lücken im Array[$i] beachten muss usw.
$dw = {};
und dann. Ich kann ja wahrscheinlich nicht mit echo 'L'.$i...; vorgehen und wenn, dann muss ich ja wahrscheinlich $dw .'L'.$i.caption = $kaufhaus['Artikel'][$i]; oder sowas zusammenbasteln.
und kann ich das dann einfach mit <?php echo in JavaScript ausgeben?
Wäre für den ein oder anderen Tip dankbar, bevor ich wahnsinnig werde. Hab's jetzt so gelöst. geholfen haben letztendlich https://wiki.php.net/rfc/objectarrayliterals und bedingt auch http://www.phpied.com/javascript-sty...terals-in-php/. Jetzt hab' ich das gemacht:
so kriege ich den ganzen summs in die objekt-variable $tooltip. Ich möchte ja in javascript dann einfach:
schreiben. Kann ich da mit preg_replace arbeiten, um aus:
[ROTZE]
a:35:{i:1;O:8:"stdClass":1:{s:2:"L1";O:8:"stdClass ":4:{s:7:"caption";s:108:"Dreirad für Kinder bis 6 Jahre";s:3:"img";s:45:"http://www.php.de/images/Tooltip/Dreirad-rot200_2-w500-h500.jpg";s:3:"txt";s:17:"GS-geprüft";s:1:"w";i:220;}}i:2;O:8:"stdClass":1:{s:2 :"L2";O:8:"stdClass":4:{s:7:"caption";s:108:"Fahrr ad für Kinder bis 8 Jahre";s:3:"img";s:37:"http://www.php.de/images/Tooltip/Fahrrad- rot200_2.jpg";s:3:"txt";s:25:"20", Für Mädchen und Jungs";s:1:"w";i:220;}}i:3;O:8:"stdClass":1:{s:2:" L3";O:8:"stdClass":4:{s:7:"caption";s:108:...
[/ROTZE]
sowas
rauskriege oder gibt es da eine andere empfohlene Vorgehensweise?
Ääh, kann auch so (und das wird es wahrscheinlich auch) aussehen:
Danke vorab.
leider habe ich mich bis jetzt nicht object literals auseinandergesetzt.
Ich habe ein mehrdimensionales Array $kaufhaus['Artikel'][$i], $kaufhaus['bild'][$i], $kaufhaus['ZText'][$i] und $kaufhaus['breite'][$i].
Damit will ich mit dw_tooltip.js eine JavaScript Objektvariable füllen. Für dw_tooltip muss das Ganze dann so aussehen:
Code:
... dw_Tooltip.content_vars = { L1: { caption: ' Dreirad für Kinder bis 6 Jahre', img: 'images/Dreirad.gif', txt: 'praktisches Dreirad mit mit Ladefläche', , w: 220 }, L2: { caption: ' Fahrrad für Kinder bis 8 Jahre', img: 'images/Fahrrad.gif', txt: 'Fahrrad in rot 24"', w: 220 },... } </script>
Jetzt habe ich 'ne ganze Menge über Obejekt Literale und Arrays gelesen, krieg es aber einfach nicht umgesetzt.
Der Ansatz mit aus http://www.php.de/javascript-ajax-un...n-fuellen.html fand ich ganz hilfreich:
Code:
var foo = {}; foo.bla = 5; var key = 'bar'; foo[key] = 6; /* ergibt { bla : 5 , bar : 6 } */
$dw = {};
und dann. Ich kann ja wahrscheinlich nicht mit echo 'L'.$i...; vorgehen und wenn, dann muss ich ja wahrscheinlich $dw .'L'.$i.caption = $kaufhaus['Artikel'][$i]; oder sowas zusammenbasteln.
und kann ich das dann einfach mit <?php echo in JavaScript ausgeben?
Wäre für den ein oder anderen Tip dankbar, bevor ich wahnsinnig werde. Hab's jetzt so gelöst. geholfen haben letztendlich https://wiki.php.net/rfc/objectarrayliterals und bedingt auch http://www.phpied.com/javascript-sty...terals-in-php/. Jetzt hab' ich das gemacht:
PHP-Code:
for($i=1;$i<=123;$i++) {
if (isset($kaufhaus['Artikel'][$i])) {
$kaufhaus['Tooltext'][$i] = $kaufhaus['ZText'][$i]!="" ? $kaufhaus['ZText'][$i]."<br/>".$kaufhaus['ABeschr'][$i] : $kaufhaus['ABeschr'][$i];
$tooltip[$i] = (object)array( "L".$i => (object)array("caption" => $kaufhaus["Artikel"][$i], "img" => $kaufhaus["Bild"][$i], "txt" => $kaufhaus["Tooltext"][$i], "w" => (int)$kaufhaus["breite"][$i] ),);
}
}
Code:
dw_Tooltip.content_vars =<?php echo serialize(tooltip); ?>;
[ROTZE]
a:35:{i:1;O:8:"stdClass":1:{s:2:"L1";O:8:"stdClass ":4:{s:7:"caption";s:108:"Dreirad für Kinder bis 6 Jahre";s:3:"img";s:45:"http://www.php.de/images/Tooltip/Dreirad-rot200_2-w500-h500.jpg";s:3:"txt";s:17:"GS-geprüft";s:1:"w";i:220;}}i:2;O:8:"stdClass":1:{s:2 :"L2";O:8:"stdClass":4:{s:7:"caption";s:108:"Fahrr ad für Kinder bis 8 Jahre";s:3:"img";s:37:"http://www.php.de/images/Tooltip/Fahrrad- rot200_2.jpg";s:3:"txt";s:25:"20", Für Mädchen und Jungs";s:1:"w";i:220;}}i:3;O:8:"stdClass":1:{s:2:" L3";O:8:"stdClass":4:{s:7:"caption";s:108:...
[/ROTZE]
sowas
Code:
{ L1: { caption: ' Dreirad für Kinder bis 6 Jahre', img: 'images/Dreirad.gif', txt: 'praktisches Dreirad mit mit Ladefläche', , w: 220 }, L2: { caption: ' Fahrrad für Kinder bis 8 Jahre', img: 'images/Fahrrad.gif', txt: 'Fahrrad in rot 24"', w: 220 },... }
Ääh, kann auch so (und das wird es wahrscheinlich auch) aussehen:
Code:
{L1:{"caption":"DreiradfürKinderbis6Jahre","img":"images/Dreirad.gif","txt":"praktischesDreiradmitmitLadefläche",w:220},L2:{"caption":"FahrradfürKinderbis8Jahre","img":"images/Fahrrad.gif","txt":"Fahrradinrot24","w":220},...}
Kommentar