2016-12-10 8 views
0

DBに接続して情報を取得しますが、この部分は正しいです。しかし、私は私のデータをJSONエンコードしたい。PHP with Json encode

これは私のコード

<?php 

    include("ayar.php"); 
    header('Content-Type: application/json'); 
    //$ad = $_POST["ad"]; 
    $ad = "USER89623476571"; 
    $bilgial = @mysql_query("SELECT * FROM KULLANICI WHERE ID_NUMARASI='$ad' ORDER BY ID ASC LIMIT 1"); 

    $oku=mysql_fetch_assoc($bilgial); 
    $metin= $oku['BAGLI_CIHAZ_ID']; 
    $yenimetin = explode(',',$metin); 

    foreach($yenimetin as $yazdir){ 
    bilgial($yazdir); 
    } 

function bilgial($kullanicisi) 
{ 

    $TERMINAL_BILGI_AL = @mysql_query("SELECT * FROM TERMINAL WHERE ID='$kullanicisi' ORDER BY ID ASC LIMIT 1"); 
    while([email protected]_fetch_assoc($TERMINAL_BILGI_AL)){ 
     $GELEN_SERIAL    = $TERMINAL_KAYITLAR["SERIALNUMBER"]; 
     $GELEN_TERMINAL_ADI   = $TERMINAL_KAYITLAR["TERMINAL_ADI"]; 
     $GELEN_SICAKLIK_T1_ALT  = $TERMINAL_KAYITLAR["SICAKLIK_T1_ALT"]; 
     $GELEN_SICAKLIK_T1_UST  = $TERMINAL_KAYITLAR["SICAKLIK_T1_UST"]; 
     $GELEN_SICAKLIK_T2_ALT  = $TERMINAL_KAYITLAR["SICAKLIK_T2_ALT"]; 
     $GELEN_SICAKLIK_T2_UST  = $TERMINAL_KAYITLAR["SICAKLIK_T2_UST"]; 
     $GELEN_SICAKLIK_T3_ALT  = $TERMINAL_KAYITLAR["SICAKLIK_T3_ALT"]; 
     $GELEN_SICAKLIK_T3_UST  = $TERMINAL_KAYITLAR["SICAKLIK_T3_UST"]; 
     $GELEN_SICAKLIK_T1   = $TERMINAL_KAYITLAR["SICAKLIK_T1_SON_DATA"]; 
     $GELEN_SICAKLIK_T2   = $TERMINAL_KAYITLAR["SICAKLIK_T2_SON_DATA"]; 
     $GELEN_SICAKLIK_T3   = $TERMINAL_KAYITLAR["SICAKLIK_T3_SON_DATA"]; 
     $GELEN_NEM_H1_ALT   = $TERMINAL_KAYITLAR["NEM_H1_ALT"]; 
     $GELEN_NEM_H1_UST   = $TERMINAL_KAYITLAR["NEM_H1_UST"]; 
     $GELEN_NEM_H2_ALT   = $TERMINAL_KAYITLAR["NEM_H2_ALT"]; 
     $GELEN_NEM_H2_UST   = $TERMINAL_KAYITLAR["NEM_H2_UST"]; 
     $GELEN_NEM_H3_ALT   = $TERMINAL_KAYITLAR["NEM_H3_ALT"]; 
     $GELEN_NEM_H3_UST   = $TERMINAL_KAYITLAR["NEM_H3_UST"]; 
     $GELEN_NEM_H1    = $TERMINAL_KAYITLAR["NEM_H1_SON_DATA"]; 
     $GELEN_NEM_H2    = $TERMINAL_KAYITLAR["NEM_H2_SON_DATA"]; 
     $GELEN_NEM_H3    = $TERMINAL_KAYITLAR["NEM_H3_SON_DATA"]; 
     $GELEN_SICAKLIK_T1_AD  = $TERMINAL_KAYITLAR["SICAKLIK_T1_AD"]; 
     $GELEN_SICAKLIK_T2_AD  = $TERMINAL_KAYITLAR["SICAKLIK_T2_AD"]; 
     $GELEN_SICAKLIK_T3_AD  = $TERMINAL_KAYITLAR["SICAKLIK_T3_AD"]; 
     $GELEN_NEM_H1_AD   = $TERMINAL_KAYITLAR["NEM_H1_AD"]; 
     $GELEN_NEM_H2_AD   = $TERMINAL_KAYITLAR["NEM_H2_AD"]; 
     $GELEN_NEM_H3_AD   = $TERMINAL_KAYITLAR["NEM_H3_AD"]; 
     $GELEN_SON_DATA    = $TERMINAL_KAYITLAR["GELEN_SON_DATA"]; 
     } 


// Json datasına çevrilecek diziyi yaratalım. 
$json = array(); 

$json["Bilgiler"][] = array( 
    'GELEN_SERIAL'=> $GELEN_SERIAL, 
    'TERMINAL_ADI'=> $GELEN_TERMINAL_ADI, 
    'SICAKLIK_T1'=> $GELEN_SICAKLIK_T1, 
    'SICAKLIK_T2'=> $GELEN_SICAKLIK_T2, 
    'SICAKLIK_T3'=> $GELEN_SICAKLIK_T3, 
    'NEM_H1'=> $GELEN_NEM_H1, 
    'NEM_H2'=> $GELEN_NEM_H2, 
    'NEM_H3'=> $GELEN_NEM_H3, 
    'SON_DATA'=> $GELEN_SON_DATA, 

    ); 

echo json_encode($json);  

} 

?> 

であり、これは結果です。

{"Bilgiler": 
[ 
    {"GELEN_SERIAL":"AGE6000010", 
    "TERMINAL_ADI":"DENEME TERM", 
    "SICAKLIK_T1":"23,8", 
    "SICAKLIK_T2":"23,9", 
    "SICAKLIK_T3":"23,8", 
    "NEM_H1":"30", 
    "NEM_H2":"29", 
    "NEM_H3":"31", 
    "SON_DATA":"2016-10-31 20:54:00"} 
    ] 
}{"Bilgiler": 
    [ 
    {"GELEN_SERIAL":"AGE6000022", 
    "TERMINAL_ADI":"Eczane", 
    "SICAKLIK_T1":"23,0", 
    "SICAKLIK_T2":"23,0", 
    "SICAKLIK_T3":"22,9", 
    "NEM_H1":"21", 
    "NEM_H2":"21", 
    "NEM_H3":"30", 
    "SON_DATA":"2016-12-10 16:58:00"} 
    ] 
} 

しかし、私はこれが欲しいです。

{"Bilgiler": 
    [ 
    {"GELEN_SERIAL":"AGE6000010", 
    "TERMINAL_ADI":"DENEME TERM", 
    "SICAKLIK_T1":"23,8", 
    "SICAKLIK_T2":"23,9", 
    "SICAKLIK_T3":"23,8", 
    "NEM_H1":"30", 
    "NEM_H2":"29", 
    "NEM_H3":"31", 
    "SON_DATA":"2016-10-31 20:54:00" 

    }, 
    {"GELEN_SERIAL":"AGE6000010", 
    "TERMINAL_ADI":"DENEME TERM", 
    "SICAKLIK_T1":"23,8", 
    "SICAKLIK_T2":"23,9", 
    "SICAKLIK_T3":"23,8", 
    "NEM_H1":"30", 
    "NEM_H2":"29", 
    "NEM_H3":"31", 
    "SON_DATA":"2016-10-31 20:54:00"} 
    ] 
} 

私はこれを行うことができます、私はPHPコードで何が変わりますか?

// previous code here 

$json = array();  
foreach($yenimetin as $yazdir) { 
    // see - each result of `bilgial` function you add to an array 
    $json['Bilgiler'][] = bilgial($yazdir); 
} 
echo json_encode($json); 

変更をbilgial機能に:変更すべきかをここで

+1

'エコーjson_encode($のJSON);'すべての結果に –

+2

を含む配列に__once__を実行すると 'mysql_'拡張機能の使用を停止する必要があります。これは廃止され、php7では削除されています。 –

答えて

1

function bilgial($kullanicisi) 
{ 

    $TERMINAL_BILGI_AL = @mysql_query("SELECT * FROM TERMINAL WHERE ID='$kullanicisi' ORDER BY ID ASC LIMIT 1"); 

    // codes here. 
    // instead of encoding every array - return it: 

    // $json = array(); // this line is useles 

    return array( 
     'GELEN_SERIAL'=> $GELEN_SERIAL, 
     'TERMINAL_ADI'=> $GELEN_TERMINAL_ADI, 
     'SICAKLIK_T1'=> $GELEN_SICAKLIK_T1, 
     'SICAKLIK_T2'=> $GELEN_SICAKLIK_T2, 
     'SICAKLIK_T3'=> $GELEN_SICAKLIK_T3, 
     'NEM_H1'=> $GELEN_NEM_H1, 
     'NEM_H2'=> $GELEN_NEM_H2, 
     'NEM_H3'=> $GELEN_NEM_H3, 
     'SON_DATA'=> $GELEN_SON_DATA, 
    ); 
} 

はさらに行く - あなたはWHERE IN SQL句を使用して一度だけあなたの関数を呼び出すことができます。

そして、私はすでに述べたように - できるだけ早く廃止予定mysql拡張を使用してを停止します。

+0

答えに感謝、今は完璧な作業 –

1

MVCスタイルのコーディングを採用することができます。 コードを作成し、別の部分を区切ります。ここで

、あなたは次のロジックを持っている:

Call SQL1 
While on SQL1 results { 
    call function 
    Call SQL2 
    While on SQL2 results { 
     get values 
    } 
    Write json values 
} 

あなたが見ることができるように、あなたはいくつかのJSON呼び出しを持つことになります。 だから、あなたが持っている必要があります。

Create finalVariable 
Call SQL1 
While on SQL1 results { 
    call function 
    Call SQL2 
    While on SQL2 results { 
     get values 
    } 
    set final values on finalVariable (return values of function ?) 
} 
Call json encode on finalVariable 

例:

<?php 
function bilgial($param) { 
    // ... 
    return [ 
    'GELEN_SERIAL' => $GELEN_SERIAL, 
    // ... 
    ] 
} 

$finalValues = []; 
foreach($yenimetin as $yazdir){ 
    $finalValues['Bilgiler'][] = bilgial($yazdir); 
} 

echo json_encode($finalValues); 
+0

答えをありがとう。 このメソッドを試してみます –