2016-05-02 5 views
0

Ich habe die Anzahl der Zeilen in Investitionstabelle. Ich muss alle von ihnen abrufen und sie zurück senden mit json_encode.
Hier ist mein CodeWie senden Sie Zeilen mit json_encode Methode in PHP?

$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 
      )); 

In Javascript ich folgendes Skript geschrieben:

$('#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); 
    }); 
     }); 

Hier mein Problem ist, dass es nur die Daten der letzten Zeilen zurückgibt. Ich möchte Daten aller Zeilen erhalten.

Ich muss id a and b hier anzeigen enter image description here Ich verwende Tabelle, um es anzuzeigen. Vielen Dank im Voraus

Antwort

1

Dies sollte den Trick:

--edit nach OP

explanation-- 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, eine Sache erwähne ich nicht, dass ich eine extra Variable habe, die nicht aus der Datenbanktabelle stammt. Ich meine, ich muss extra eine Variable übergeben, die nicht von db-Tabelle kam, so dass ich es nicht innerhalb der while-Schleife verwenden kann. Also was soll ich tun. – yank

+0

Genau wie '$ return ['detail'] [] = $ x1 ['detail'];' ist für array, Was soll ich tun, um eine weitere Variable zurückzugeben. – yank

+1

Sie können '$ return ['my_extra_variable'] = $ my_extra_variable', außerhalb der While-Schleife. Dann bekommen Sie in Ihrem JS mit 'data.my_extra_variable' –

0

Es sieht so aus, als würden Sie die beiden Elemente nicht akkumulieren. Versuchen Sie etwas wie folgt:

Dann codieren Sie Ihr Array, wenn alles fertig ist.

+0

'your_array_name' bedeutet? Was ist dann der Name meines Arrays im obigen Code? Ich meine, wie man schreibt? – yank

1

Sie müssen Arrays in Ihrer Schleife

$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 
     )); 

und in JavaScript-Schleife über das Ergebnis

+0

Was soll ich in JavaScript-Code tun? Ich meine, muss ich Somthng in Javascript hinzufügen, wo ich 'data = JSON.parse (Daten); ' – yank

+0

Ja, in Javascript erhalten Sie jetzt ein Array für ein und ein Array für b dann sollten Sie über die beiden Array für den richtigen Wert zu bekommen .. Versuchen Sie var_dump() den Wert Sie echo, so dass Sie die JSON-Struktur, die Sie senden können zu Client – scaisEdge

+0

Wie kann ich 'var_dump()' in js verwenden? – yank