-2

i tried in many ways to do that, but i don't know exactly. I call an API to export list of products, they are printed as json, from json i decode to CSV, but my csv file aren't complete with details like name, stock, price, etc...

    <?php
// Atentie: Partea de generare hash trebuie sa fie privata
// Pentru apelarea metodelor pe mediul de test, trebuie sa va inregistrati user de API pe platforma de test https://testapp.fgo.ro
 
$codUnic = "xxxx";
$SecretKey = "xxxx";

$hash = strtoupper(SHA1($codUnic . $SecretKey ));

$url = 'https://api.fgo.ro/v1/articol/list';
$data = array(
  'CodUnic' => $codUnic,

  'Hash' => $hash,
  'NrPagina' => '1',
  'NrArticole' => '30',
  'PlatformaUrl' => 'http://exmple.ro'
 
);

// use key 'http' even if you send the request to https://...
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }

print_r(json_decode($result,1));
$jsonDecoded = json_decode($result,1);
//Give our CSV file a name.
$csvFileName = 'example.csv';

//Open file pointer.
$fp = fopen($csvFileName, 'w');

//Loop through the associative array.
foreach($jsonDecoded as $row){
    //Write the row to the CSV file.
    fputcsv($fp, $row);
}

//Finally, close the file pointer.
fclose($fp);


?>

In that way looks the JSON output:

Array ( 
    [Result] => Array ( 
        [Total] => 3028 
        [NrPagina] => 1 
        [NrArticole] => 30 
        [List] => Array ( 
            [0] => Array ( 
                [Nume] => 02BRS10318GR BRONH 
                [PretUnitar] => 0 
                [CotaTva] => 0.19 
                [UM] => buc 
                [CodConta] => 02BRS103 
                [Stoc] => 0 
                [CodBare] => 
            ) 
            [1] => Array ( 
                [Nume] => 20-10700/0.9 
                [PretUnitar] => 176.470588 
                [CotaTva] => 0.19 
                [UM] => 
                [CodConta] => 
                [Stoc] => 0 
                [CodBare] => 
            ) 
            [2] => Array ( [Nume] => 506-08-X-BUC [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 506-08-X-BUC [Stoc] => 0 [CodBare] => ) 
            [3] => Array ( [Nume] => 8025H-R3 [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 8025H-R3 [Stoc] => 1 [CodBare] => ) 
            [4] => Array ( [Nume] => AC ALCOOLIZARE HEPATICA CU VF DESCHIS [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => VVHA32115 [Stoc] => 0 [CodBare] => ) 
            [5] => Array ( [Nume] => AC AMNIOCENTEZA CHIBA-CYTOCAN G 21 L 25 [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => VB21/25 [Stoc] => 0 [CodBare] => ) 
            [6] => Array ( [Nume] => AC AMNIOCENTEZA CHIBA-CYTOCAN G 22 L 15 [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => VVB2215 [Stoc] => 0 [CodBare] => ) 
            [7] => Array ( [Nume] => AC AMNIOCENTEZA CHIBA-CYTOCAN G 23 L 15 [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => VB23/150 [Stoc] => 0 [CodBare] => ) 
            [8] => Array ( [Nume] => AC ASPIRATIE AURICULAR 1.00 MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 11.10 [Stoc] => 2 [CodBare] => ) 
            [9] => Array ( [Nume] => AC ASPIRATIE AURICULARA 0.4MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 66500040 [Stoc] => 19 [CodBare] => ) 
            [10] => Array ( [Nume] => AC ASPIRATIE AURICULARA 0.4MM X 80 MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 66500045 [Stoc] => 27 [CodBare] => ) 
            [11] => Array ( [Nume] => AC ASPIRATIE AURICULARA 0.6 MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 11.06 [Stoc] => 4 [CodBare] => ) 
            [12] => Array ( [Nume] => AC ASPIRATIE AURICULARA 0.7MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 66500070 [Stoc] => 19 [CodBare] => ) 
            [13] => Array ( [Nume] => AC ASPIRATIE AURICULARA 0.7MMX80MM (66500072) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 30-08007 [Stoc] => 19 [CodBare] => ) [14] => Array ( [Nume] => AC ASPIRATIE AURICULARA 0.8 MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 11.08 [Stoc] => 14 [CodBare] => ) [15] => Array ( [Nume] => AC ASPIRATIE AURICULARA 1.0MMX70MM (66500100) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 30-07010 [Stoc] => 19 [CodBare] => ) [16] => Array ( [Nume] => AC ASPIRATIE AURICULARA 1.2 MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 11.12 [Stoc] => 9 [CodBare] => ) [17] => Array ( [Nume] => AC ASPIRATIE AURICULARA 1.4MMX70MM (66500140) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 30-07014 [Stoc] => 0 [CodBare] => ) [18] => Array ( [Nume] => AC ASPIRATIE AURICULARA 1.6 MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 11.16 [Stoc] => 84 [CodBare] => ) [19] => Array ( [Nume] => AC ASPIRATIE AURICULARA 2.0 MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 11.20 [Stoc] => 0 [CodBare] => ) [20] => Array ( [Nume] => AC ASPIRATIE AURICULARA 2.0MMX70MM (66500208) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 30-07020 [Stoc] => 0 [CodBare] => ) [21] => Array ( [Nume] => AC ASPIRATIE AURICULARA 2.0MMX80MM (66500200) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 30-08020 [Stoc] => 0 [CodBare] => ) [22] => Array ( [Nume] => AC ASPIRATIE AURICULARA 2.5MMX80MM (66500250) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 30-08025 [Stoc] => 0 [CodBare] => ) [23] => Array ( [Nume] => AC ASPIRATIE AURICULARA 3.0MMX100MM (66509300) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 30-10030 [Stoc] => 43 [CodBare] => ) [24] => Array ( [Nume] => AC ASPIRATIE AURICULARA 3.0MMX80MM (66500300) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 30-08030 [Stoc] => 9 [CodBare] => ) [25] => Array ( [Nume] => AC ASPIRATIE AURICULARA CU VARF ROTUND 18CM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => 26796 [Stoc] => 0 [CodBare] => ) [26] => Array ( [Nume] => AC ASPIRATIE CITOLOGICA VARF QUINCKE 20GX180 MM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => QK20180-00 [Stoc] => 0 [CodBare] => ) [27] => Array ( [Nume] => AC ASPIRATIE CITOLOGICA VARF QUINKE 18 G X 20 CM [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => QK18200-01 [Stoc] => 0 [CodBare] => ) 
            [28] => Array ( [Nume] => AC BIOPSIE BARD 18G X 20CM(PT PISTOL MAGNUM BARD) [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => UG18200-00 [Stoc] => 0 [CodBare] => ) 
            [29] => Array ( [Nume] => AC BIOPSIE OSOASA MYELOG 15 L 75 [PretUnitar] => 0 [CotaTva] => 0.19 [UM] => buc [CodConta] => VI1510/75 [Stoc] => 0 [CodBare] => ) 
        ) 
    ) 
    [Success] => 1 
    [Message] => 
)
RiggsFolly
  • 93,638
  • 21
  • 103
  • 149

1 Answers1

0

I solved it with columns list

    //Give our CSV file a name.
    $csvFileName = 'example.csv';
    
    //Open file pointer.
    $fp = fopen($csvFileName, 'w');
    
    /* 
    Get first array item , extract keys as columns 
    */
    $columns_list = array();
    foreach($jsonDecoded['Result']['List'][0] as $column=>$val){
            $columns_list[] = $column;
    }
    /* 
    Write csv columns 
    */
    fputcsv($fp, $columns_list);
    
    //Loop through the associative array.
    foreach($jsonDecoded['Result']['List'] as $row){
        //Write the row to the CSV file.
        fputcsv($fp, $row);
    }
    
    //Finally, close the file pointer.
    fclose($fp);