2016-05-02 9 views
0

私は投資テーブルの行数を持っています。私はそれらのすべてを取得し、json_encodeを使用してそれらを戻す必要があります。私の問題は、それが最後の行のデータのみを返すことである。ここPHPでjson_encodeメソッドを使って行を送るには?

$('#myHref').change(function(){ 
     var value = $('#myHref').val(); 
     $.get('display_acc.php',{id:value},function(data) 
     { 
    data = JSON.parse(data); 
    $('#a').html(data.a); 
    $('#b').html(data.b); 
    }); 
     }); 

:ここ
は、私は次のスクリプトを書いたJavaScriptで私のコード

$project_code = $_GET['id'];  
$sql = "select * from investment where project_code = '$project_code'"; 
     $result = mysql_query($sql); 
     while($x1 = mysql_fetch_array($result)) 
     { $detail = $x1['detail']; 
      $sector = $x1['sector']; 
     } 
     echo json_encode(array(
      'a' => $detail, 
      'b' => $sector 
      )); 

です。私はすべての行のデータを受け取りたい。

表示する必要がありますid a and bここにenter image description here 私はそれを表示するためにテーブルを使用します。 ありがとうございます

答えて

1

結果の上にループ

$project_code = $_GET['id'];  
$sql = "select * from investment where project_code = '$project_code'"; 
    $result = mysql_query($sql); 
    $cnt=0; 
    while($x1 = mysql_fetch_array($result)) 

    { $detail[$cnt] = $x1['detail']; 
     $sector[$cnt] = $x1['sector']; 
     $cnt++; 
    } 
    echo json_encode(array(
     'a' => $detail, 
     'b' => $sector 
     )); 

とJavaScriptループ内での配列を必要とする:OPは

をexplanation--後

--editをPHP

$project_code = (int)$_GET['id']; //better put (int) before to avoid SQL Injection 
$sql = "select detail, sector from investment where project_code = '$project_code'"; //better to maintain if you set only the fields you will use 
    $result = mysql_query($sql); 
    $return = array('detail'=> array(), 'sector' => array()); //here you can put empty return array or set detail and sector key. Your choice will have impact in your front-end 

    $return['my_extra_var' ] = $my_extra_var; 
    $i = 0; 
    while($x1 = mysql_fetch_array($result)) 
    { 
     $return['table'][$i]['detail'] = $x1['detail']; 
     $return['table'][$i]['sector'] = $x1['sector']; 
     $i++; 
    } 
    echo json_encode($return); 

Javascriptを

... your ajax request ... 
data = JSON.parse(data); 
var tableData = data.table; 
$.each(tableData, function(index, value) { 
    $('#tableData').append('<tr><td>'+value.detail+'</td><td>'+value.sector+'</td></tr>'); //append row to tbody 
}); 

HTML

<table> 
    <thead> 
     <th>Details</th> 
     <th>Sector of Investment</th> 
    </thead> 
    <tbody id="tableData"> 
    </tbody> 
</table> 
+0

Thnks、私はデータベーステーブルからではない余分な変数を持っていると言います。私はdbテーブルから来ていない余分な1つの変数を渡す必要があるので、whileループの中でそれを使用することはできません。だから何をすべきか? – yank

+0

$ return ['detail'] [] = $ x1 ['detail']; 'は配列のためのものです。 – yank

+1

whileループの外側で '$ return ['my_extra_variable'] = $ my_extra_variable'を実行できます。それから、あなたのJSを 'data.my_extra_variable'で取得してください –

0

あなたは2つの要素を蓄積していないようです。

次に、すべての処理が完了したら配列をエンコードします。

+0

'your_array_name'手段?上記のコードで私の配列の名前は何ですか?私は書く方法を意味する? – yank

1

あなたはこのトリックを行う必要があります

+0

JavaScriptコードではどうすればよいですか?私は 'data = JSON.parse(data);を使用するjavascriptにsomthngを追加する必要があるのですか? ' – yank

+0

はい、javascriptでは、aの配列とbの配列を取得します。次に、適切な値を取得するために2つの配列をループする必要があります。返す値をvar_dump()を使って送信するjson構造を理解できるようにしてくださいクライアントには – scaisEdge

+0

jsで 'var_dump()'を使う方法は? – yank

関連する問題