| 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: 17 let
|
|||
0
. To jen pro jeho větší přehlednost (nejen kvůli rádcům).