Autor | Zpráva | ||
---|---|---|---|
jirka55 Profil |
V PHP získám proměnou, jejímž obsahem je číslo. Jeho části pak používám pro vykreslení grafu amChart v javascriptu. Kód vypadá zjednodušeně takhle:
<html> <body> <script type="text/javascript" src="http://r-stro.eu/amcharts/ampie/swfobject.js"></script> <div id="flashcontent"> <strong>You need to upgrade your Flash Player</strong> </div> <?php $a = "84253684569584"; //zdrojová informace $E = SubStr ($a, 0, 1); // první dato pro graf $I = SubStr ($a, 1, 1); echo $E; // zobrazí 8 echo $I; // zobrazí 4 ?> <script type='text/javascript'> //<![CDATA[ var so = new SWFObject('http://r-stro.eu/amcharts/ampie/ampie.swf', 'ampie', '520', '400', '8', '#FFFFFF'); so.addVariable('path', 'http://r-stro.eu/amcharts/ampie/'); so.addVariable('settings_file', encodeURIComponent('http://r-stro.eu/amcharts/ampie/ampie_settings.xml')); so.addVariable("chart_data", "<?php echo '\n;$E\n;$I';?>"); //nezobrazí nic. Když $E nahradím osmičkou a $I' čtyřkou, funguje so.write('flashcontent'); //]]> </script> </body> </html> Nefungujou záměny typu '<?=, print, alert, atd. ani funkce místo $data. Nefunguje ani převod skriptu do PHP a generování skriptu pomocí echo. Věděl by někdo, čím to může bejt? jirka |
||
jogurt Profil |
#2 · Zasláno: 14. 1. 2009, 02:44:51
V jednoduchych uvozovkach (') nemuzes pouzivat \n. To funguje jen v dvojitych. Takhle by ti melo vypsat \n;8\n;4. Jinak nevim.
|
||
jirka55 Profil |
#3 · Zasláno: 14. 1. 2009, 23:15:20
Dík moc. Bohužel to není ono - v uvozovkách to opravdu není - a vypsání \n;8\n;4 mi právě problém nedělá.
Co fakte nejde je <? echo $E ?>). Nechápu to: $E v části PHP obsahuje číslo a v js obsahuje Null. To je prostě fakt. Správnost skriptu si dycky ověřím tím, že $E nahradím ručně nějakýmn číslem - a začne to fungovat. Prosím věnuj ještě chvilku, jestli to třeba není tím, že mám REGISTER GLOBALS OFF, a jestli řešení není v použití proměnné s GET Ještě jednou dík j |
||
DoubleThink Profil * |
#4 · Zasláno: 14. 1. 2009, 23:23:58
V jednoduchých uvozovkách se neparsují nejen escape-sekvence ale ani proměnné. PHP skript na řádku 20 bude mít výstup \n;$E\n;$I.
|
||
keeehi Profil |
#5 · Zasláno: 14. 1. 2009, 23:37:43 · Upravil/a: keeehi
jogurt
bohužel nemohu s tebou souhlast. Výstup bude \n;$E\n;$I ale to je detail. Ani jedno nebude správně fungovat. jirka55 takhle je to snad správně (na řádku 20) <?php echo("\n".$E."\n".$I);?> tvoje nahrazení funguje protože se do výstupu dostanou ty čísla co potřenuješ. příklad $a = 6; echo 'číslo $a je sudé.'; // toto vypíše: číslo $a je sudé. echo "číslo $a je sudé."; // toto vypíše: číslo 6 je sudé. echo "číslo ".$a." je sudé."; // toto vypíše: číslo 6 je sudé. takže 2. a 3. řešní fungují správně. Já používám to třetí, protože je prý rychlejší. |
||
jirka55 Profil |
...ne a ne fungovat. Je mi to líto.
Cíl je ale jednodušší. Netřeba se starat o složitost ("\n".$E."\n".$I) - Úplně stačí dostat so skriptu $a. Třeba takhle: <html> <body> <script type="text/javascript" src="http://r-stro.eu/amcharts/ampie/swfobject.js"></script> <?php $a = 6; ?> <script type='text/javascript'> //<![CDATA[ so.addVariable("chart_data", <?php echo $a;?>); so.write('flashcontent'); //]]> </script> </body> </html> Cíl je zprovoznit <?php echo $a; ?> jirka Moderátor Mistr: Kód se do diskuse vkládá přes tlačítko . To jen pro jeho větší přehlednost (nejen kvůli rádcům).
|
||
jogurt Profil |
#7 · Zasláno: 16. 1. 2009, 01:40:13 · Upravil/a: jogurt
Nebude to nahodou tim <![CDATA[?
DoubleThink, pravda, na to jsem zapomnel. |
||
jirka55 Profil |
#8 · Zasláno: 16. 1. 2009, 08:09:34
To nevím. V téhle diskusi jsem jen pasívním přijímatelem a testovatelem návrhů. Co bychm měl zkusit udělat s //<![CDATA[ ?
j |
||
_es Profil |
#9 · Zasláno: 16. 1. 2009, 09:01:11
jirka55
Chyba bude niekde inde, skús dať ako prvý príkaz v scripte alert(<?php echo $a;?>); Ak to zobrazí hodnotu $a, tak bude chyba asi v tom prvom scripte. |
||
jirka55 Profil |
#10 · Zasláno: 16. 1. 2009, 09:18:32
Vyřešeno.
Děkuju všem moc. _es: ten alert(<?php echo $a;?>); ještě vyzkouším co to dělá, ale obecně koho to zajímá, tak moje chyba byla několikanásobná: i) v js musí bejt so.addVariable("chart_data", "<?php echo $data;?>"); čili před < a za > musí bejt dvojitá uvozovka ii) když tam ale dovnitř nacpu '\n;'.$E.'\n;'.$I; tal se proměnný neparsujou takže je potřebí nejdřív <? $data = '\n;'.$E.'\n;'.$I; ?> a pak v js "<?php echo $data;?>" iii) navíc jsem měl blbě nastavený adresáře pro swfobject.js Jestě jednou dík. jirka |
||
Časová prodleva: 15 let
|
0