2012-04-20 17 views
2

私はpostgresqlデータベースを持っており、特定の列の値を照会し、各値をjavascript配列に割り当てています。今私はマップ上でこのデータを出力するjavascript関数を持っています。私は手動で配列をテストするとき(それぞれの配列インデックスを一つずつ入力する)、出力を完全に正しく返します。しかし、ループ(一度にすべてを出力したいとき)では、最初の要素の出力しか見ることができません。残りの配列は単に無視されるか、エラーがあります。私は間違いがどこにあるのか分からない。ループ内にPHP/Postgresqlクエリ値を使用したJavaScript配列の割り当て

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyC0HZ81Ea8Jy8fJ6zm6_uvPp8UhLg5mczo&sensor=true"></script> 
<script type="text/javascript" src="GeoJSON.js"></script> 
<script type="text/javascript" src="polygon.js"></script> 


<script type="text/javascript"> 

var geojson_Polygon = new Array(); 

function kaushik() 
{ 

    <?php 
     require("header.php"); 

     $connection = pg_connect($full); 

     if(!$connection) 
     { 
      pg_close($connection); 

     } 

     $result = pg_query($connection, "SELECT ogc_fid, ST_AsGeoJSON(wkb_geometry), name FROM features"); 
     if (!$result) 
     { 
      exit; 
     } 

     $i = 0;   
     while ($row = pg_fetch_row($result)) 
     { 
      echo "\n"; 
      echo "geojson_Polygon[$i] = $row[1];"; 
      echo "\n"; 
      echo "\n"; 
      $i++; 
     } 

    ?> 

    for (var j=0; j<317; j++) 
    { 
     showFeature(geojson_Polygon[j]); 
    } 


} 
</script> 
+0

あなたは何をしたいのですか...あなたはJSでPHPコードを生成していますか?これはPHPがサーバー側の言語であり、サーバー上でレンダリングされるため、私は思っても動作しませんでした。 JSはクライアント上で動作し、PHPの後にレンダリングされます。 – Tobi

+0

私はそれが動作すると確信しています。 javascriptループの最初の反復が成功したためです。その唯一の連続する反復は失敗します。 – KaushikTD

+0

@TobiはPHPのJavaScript関数を完全にレンダリングします。 –

答えて

0

私はあなたがそうでなければ値は常に

while ($row = pg_fetch_row($result)) 
    { 
     echo "\n"; 
     echo "geojson_Polygon[$i] = $row[$i];"; 
     echo "\n"; 
     echo "\n"; 
     $i++; 
    } 

をやるべきだと思う同じ

+0

大丈夫ですので、showFeature(); polygon.jsにあるjavascript関数で、(GeoJSONからGoogle Maps API形式に変換した後で)地図上にポリゴンをプロットします。これは成功です。変換とプロット。 forループはPHPの終了タグの後にしかないことに注意してください。私はPHPとJavaScriptを使用しています。データベースを照会するPHP。私はエコーを使ってJavaScriptを出力しています。 – KaushikTD

+0

@ KaushikTD多分、$ row [1]を$ row [$ i]に変更する必要があります。そうでなければ、ループの$ row [1]は常に同じです。とにかく、生成されたhtmlを投稿できますか? PostGresqlの[1]行の –

+0

は、最初の列ではなく、最初の列を参照します。 phpループは自動的にその列の行[1]内のすべてのデータを照会します。私があなたが言及したことをしたならば、私はすべての列から結果を得るでしょう、そして、私がデータを出したい特定の列ではありません。 – KaushikTD

2

あなたはJSの配列を構築されて何をしたいのか場合は、単に実行します。ここではコードは次のとおりです。

<script type="text/javascript"> 
    var data = [ <?php 

     // --- snip 
     $first = true; 
     while ($row = pg_fetch_row($result)) 
     { 
      if ($first) 
      { 
      $first = false; 
      }else{ 
      echo ','; 
      } 
      echo $row[$i] 
     } 
     // ---- snip 

    ?> ]; 
</script> 
+0

アレイは正常に構築されます。さて、私は配列を出力しようとすると問題です。私はどこに間違っているのかわからない。 – KaushikTD

+0

@KaushikTD、よく。あなたが得たアウトプットは何ですか? –

+0

snipplr.com/view/64689/javascript-array-assigned-using-php-loop – KaushikTD

0

ちょうど行をphp配列に読み込んでjsonとして割り当てます。

<script> 
... 
var geojson_Polygon = <?php echo json_encode($all_rows); ?>; 
.... 
関連する問題