2011-07-19 8 views
0

私は電子商取引のウェブサイトに取り組んでいます。私は、この配列は、データベースを照会することによって返される行の数に応じて動的に更新することにしたい次のコードJavascriptで配列を動的に設定するには?

<script type="text/javascript"> 
    var products = 
    [ 
     {"id":"1","title":"Apple iPhone 4"}, 
     {"id":"2","title":"BlackBerry 9780 Bold"} 
    ]; 
    /*some other javascript code*/ 
</script> 

で定義されたJavaScriptの配列「製品」があります。 たとえば、データベースにクエリを行い、5行が返されたとします。この配列を5行で更新します。これを手伝ってください。私はWindowsマシン上でPHP、MySQL、Apacheを使用しています。

+1

AJAXですか、またはPHPはハードコードされた配列を含むHTMLページを返しますか? – pimvdb

+0

@pimvdb PHPはハードコードされた配列を返しています。 –

答えて

2

あなたはpush機能します:あなたは、既存の配列を有することができ、あなたは、AJAXを経由して、それを更新したいと思い、あなたがPHPで動的にこれを行うことができます可能性を考慮するためにhttp://www.w3schools.com/jsref/jsref_push.asp

var products = 
[ 
    {"id":"1","title":"Apple iPhone 4"}, 
    {"id":"2","title":"BlackBerry 9780 Bold"} 
]; 

// Let's add a new phone: 
products.push({"id":"3","title":"HTC Evo"}); 

/* 
    products now equals: 
    [ 
     {"id":"1","title":"Apple iPhone 4"}, 
     {"id":"2","title":"BlackBerry 9780 Bold"}, 
     {"id":"3","title":"HTC Evo"} 
    ]; 
*/ 

を:

<script type="text/javascript"> 
<?php foreach($phones as $phone): ?> 
    products.push({"id":"<?=$phone['id']?>","title":"<?=$phone['name']?>"}); 
<?php endforeach; ?> 
</script> 
+0

彼はPHP/MySQLからJavascript配列にデータを取得しようとしていますが、JavaScript配列をJS配列にプッシュしようとしていません... –

+0

ありがとうございます。 – AlienWebguy

+0

-1を編集後に逆にします。 –

0

データベースへの接続、製品の取得、JSONの構築を行うサーバーサイドスクリプトを作成します。そのため、クライアントからのスクリプトへのAJAX要求を行うだけですそれはすべてを返しますあなたのウェブページでの使用のためにあなたのために。

0

PHPを使用してjsonをページに直接出力することができます。

$dataは、出力したい製品が含まれていると仮定します。

<script type="text/javascript"> 
var products = <?php echo json_encode($data) ?>; 
</script> 
1

top answer to the question JSON encode MySQL resultsはあなたのためにこれをachiveできます:あなたのケースでは

$sth = mysql_query("SELECT ..."); 
$rows = array(); 
while($r = mysql_fetch_assoc($sth)) { 
    $rows[] = $r; 
} 

print json_encode($rows); 

を、

?> 
var products = <?php echo json_encode($rows); ?>; 
<?php 
との最後の行を置き換えるあなたはこのような何かをするだろうテンプレートで

は、クエリ結果でJavaScriptオブジェクトを初期化します。これは、PHPがクライアント用のJavaScriptを生成するサーバー上で実行されるため、ページがロードされる前に実行する必要があります。クライアントページのロード後に結果を取得する必要がある場合は、おそらくAJAXを使用するより複雑な解決策が必要になります。

0
products[products.length] = {..some data..}; 
products.push({..some data..}); 

または別のものが必要ですか?

関連する問題