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
V jednoduchych uvozovkach (') nemuzes pouzivat \n. To funguje jen v dvojitych. Takhle by ti melo vypsat \n;8\n;4. Jinak nevim.
jirka55
Profil
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 *
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
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
Nebude to nahodou tim <![CDATA[?

DoubleThink, pravda, na to jsem zapomnel.
jirka55
Profil
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
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
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

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: