2012-03-19 22 views
0

は、私は、これはJavaScriptを知らない私の場合だと思うが、私は神の愛のためにこれはいくつかの理由のためJavaScript内でPHP変数を使用するにはどうすればよいですか? VARSを作成し、

を動作させることはできませんが、私のJavaの警告コードを相殺します。 (多分その間違ったBC) そして、私のjava VARSが正しく設定されていません。

私は私のコメント私のSQLでは

での問題点を指摘し、私はすべての連想値ディスク「ID」との温度を有しています。 だからこれで、私のデータ構造は次のとおりです。

$array[id]; 
$array[id]=array(); 
//For every new element 
//Using while ($row = mysql_fetch_assoc($result)) 
$array[id][]="temperature"; 

//second id 
$array[id2]; 
$array[id2]=array(); 
//For every new element 
$array[id2][]="temperature"; 
$array[id2][]="temperature2"; 
$array[id2][]="temperature3"; 
$array[id2][]="temperature4"; 

私の試み(WRONG CODE): //私がダウンしてこのコードを簡素化。ここでは長いです:私は実際のインデックス「174」の代わりに、174 couldntのは、この簡易版

<?php 
$phparray=array(); 
$phparray["100"]="First Element"; 
$phparray["101"]="Second Element"; 
$phparray["102"]="Third Element"; 

$phparray["100"]=array(); 
$phparray["101"]=array(); 
$phparray["100"][]="First Element - Sub 2"; 
$phparray["100"][]="First Element - Sub 3"; 
$phparray["101"][]="Second Element - Sub 2"; 


echo $phparray["100"]; //Does not show 'First Element'. Shows Array 
echo $phparray["100"][0]; //Correctly shows sub element 
//var_dump($phparray); 


?> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title>Associative Array in PHP used in Java Test</title> 

     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
     <script type="text/javascript"> 

var index=100; 
//var index2=<?php echo $phparray[index]; ?>; //Supposed to output 'First Element' 
var joined=[<?php echo join($phparray[index], ', '); ?>]; //Supposed to join elements of '100' 

alert("hello"); //This line does not work anymore after the var index2 made above 
     </script> 
    </head> 
    <body> 

<div id="container" style="height: 500px; min-width: 600px"></div> 
    </body> 
</html> 

EDITに警告されるように参加しますですjavascriptの変数を使用するときに自分自身のバージョンでは、唯一の作品に参加私のPHPページのフルコード:

<?php 
include_once("../../config.php"); 
$conn=mysql_connect($dbhost,$dbuser,$dbpasswd) or die ('Error connecting to mysql'); 
mysql_select_db($dbname); 

ini_set('error_reporting', E_ALL); 
//ini_set('display_errors',1); 
ini_set('log_errors',1); 

$sql = "select disk_id from disk"; 
$result = mysql_query($sql); 
$ids = array(); 
$names=array(); 
$temperatures = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $ids[] = $row['disk_id']; 
    $temperatures[]=$row['disk_id']; 
    //echo "<br>".$row['disk_id']; 
} 
// 

foreach ($ids as $value) 
{ 
//echo "--START ".$value."--<br>"; 
$sql = "select * from disk_data WHERE disk_id=".$value; 
$result = mysql_query($sql); 
$dates=array(); 
    $key = array_search($value, $temperatures); 
    $temperatures[$value] = array(); 

//var_dump($temperatures); 
while ($row = mysql_fetch_assoc($result)) 
{ 
    $temps = $row['Temperature']; 
    $temp = explode("||", $temps); 
    $prehex=$temp[3]; 
    $posthex=hexdec(substr($prehex,-2)); 

    $predate=$row['create_date']; 
    $postdate =strtotime($predate)*1000; 


    $output="[".$postdate.", ".$posthex."]"; 
    //$temperatures[$key][] = $output; 
    $temperatures[$value][] = $output; 


    $dates[]=$row['create_date']; 
    //echo $row['create_date']." ".end($temperatures[$key])."<br>"; 
} 
} 

print_r(array_keys($array)); 
var_dump($temperatures); 
foreach ($ids as $value) 
{ 
    //echo $value; 
    $key = array_search($value, $temperatures); 

    //echo "Key: $key; Value: $temperatures[$value]<br />\n"; 
    $comma = join($temperatures[$value],", "); 
    echo $comma; 
    echo "\n"; 
} 



?> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title>Highstock Example</title> 

     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
     <script type="text/javascript"> 

$(function() { 
    var seriesOptions = [], 
     yAxisOptions = [], 
     seriesCounter = 0, 




     //names=[<?php echo join($ids, ', '); ?>], 
     names=["174"], //Above code works. BUT only using ID 174 to test 
     values=[<?php echo join($temperatures["174"], ', '); ?>], //Supposed to be ALL data. But temp 174 
     colors = Highcharts.getOptions().colors; 
    //alert(values); 

    $.each(names, function(i, name2) { 
//alert(seriesOptions.length); 
alert(name2.toString()); //Works.... 
var values=[<?php 
echo join($temperatures[name2], ', '); ?>]; //Doesnt work 
//alert(values); 
console.log(values); 
//document.write(values); 


      seriesOptions[i] = 
      { 
       name: name2, 
       data:values 

      }; 

      // As we're loading the data asynchronously, we don't know what order it will arrive. So 
      // we keep a counter and create the chart when all the data is loaded. 
      seriesCounter++; 

      if (seriesCounter == names.length) 
      { 
       createChart(); 
      } 

    }); 



    // create the chart when all data is loaded 
    function createChart() { 

     chart = new Highcharts.StockChart({ 
      chart: { 
       renderTo: 'container' 
      }, 

      rangeSelector: { 
       selected: 0 
      }, 

       title: { 
        text: 'Test Performance Data', 
        style: {   
       margin: '10px 100px 0 0' // center it 
       }   
     }, 


      yAxis: { 
      title: {text:'Temperature (°C)'}, 
       labels: { 
        formatter: function() { 
         return this.value + ''; 
        } 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 2, 
        color: 'silver' 
       }] 
      }, 

      plotOptions: { 
      line: { 
       gapSize: 0 
      }, 
       series: { 
        //compare: 'percent' 
       } 
      }, 

      tooltip: { 
       pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>', 
       yDecimals: 2 
      }, 

      series: seriesOptions 
     }); 
    } 

}); 
     </script> 
    </head> 
    <body> 
<script type="text/javascript" src="../js/highstock.js"></script> 
<script type="text/javascript" src="../js/themes/gray.js"></script> 
<div id="container" style="height: 500px; min-width: 600px"></div> 
    </body> 
</html> 
+3

Java!= JavaScript ...生成されたHTMLを投稿できますか?また、そのようなJavaScript/PHPを混在させることはできません。 –

答えて

4

PHPとJavaScriptを混在させることはできません。 JavaScript変数はPHPでは解析されません。
index$indexまたは100は、あなたのコードはまだ引用符を欠場だろう変数に置き換えた場合であっても。

は、代わりに以下を使用します。

var joined={"100":["First Element - Sub 2","First Element - Sub 3"],"101":["Second Element - Sub 2"],"102":"Third Element"}; 

これをしようとする前に、あなたはvar index = 100;後の行に無効なコメントを削除することを確認してください。

<script type="text/javascript"> 
var index=100; 
var array = <?php echo json_encode($phparray); ?>; 
var joined = array[index]; 

最後の行は次のように出力します。それ以外の場合は、PHPの警告がコードを無効にされ、生成することができます。クライアントのブラウザで生成されたコードで

var index=100; 
//var index2=PHP Notice: Use of undefined constant index - assumed 'index' in /tmp/t.php on line 29 
PHP Notice: Undefined index: index in /tmp/t.php on line 29 
+0

ありがとう!私はプロセスがどのように動作するかを理解しています。 json_encodeを使用しようとすると、プログラムはその行で停止します。 var array = <?php echo json_encode($ phparray); ?>; は と表示されます。var array = となり、プログラムが停止します。どんな考え? – CREW

+0

@CREWエラーが生じましたか? –

1

見て、あなたはそれがこのようになっていることを見つけることができます:

var joined = [First Element - Sub2, Second Element etc.....] 

ノートあなたの挿入された文字列の周りに引用符がありません。あなたは、これらの変数が内に埋め込まれている全体<script>ブロックを殺すJavascriptの構文エラーを作成しました。

ロブWは、上記に言及したように、あなたの任意のテキストのうち、有効なJavaScriptを生成するために)(json_encodeを使用する必要があります。あなたはjavascriptの何かを生成するPHPを得て、そのような変数に記入する場合は特に、(json_encodeを使用した場合の一般的なルールとして

、) - それは離れて頭痛のこれらの種類をしておこう。

1

そのは、ブラウザでレンダリングやJavaScriptが実行される前に、PHPは、Webページに、サーバ側と意志の出力にその内容を実行します。 (PHPが実行されているときには、それが定義されていないという理由で "インデックス"が何であるか分かりません)

私はあなたのPHPをjavascriptに移動して、しかし、それはあなたがページ内で好きです。あなたはJavaScriptでこれだけのラインに沿って気にいらを追加:PHPは、その後、javascriptを読み取ることができるJSONとしてその配列を、印刷になります

var my_array_in_js = <?php echo json_encode($phparray); ?>; 

は、しかし、あなたがしたいです。特定のインデックスを読むだけで

alert(my_array_in_js[index]); 
関連する問題