user2484998
user2484998

Reputation: 161

How to create a JSON from table PHP

How to create a json like this in php;

[{"idorder":"34",
 "totalOrder":"55",
 "products":[{"idproduct":"5","price":"10"},{"idproduct":"4","price":"45"}]
}]

from table mysql;

+---------+-----------+--------------+
| idorder | idproduct | priceproduct |
+---------+-----------+--------------+
|       1 |         4 |           45 |
|       1 |         5 |           10 |
+---------+-----------+--------------+

my current code something.php;

    ...
$result = $conn->query($pendientesq);
$return_arr = array();
$productos = array();
$r1=$result->fetch_array();
$return_arr['idorder'] = $r1['idorder'];
$return_arr['totalOrder'] = '55';

//But now????How to create sub array with multiples products.

echo json_encode($return_arr);

Upvotes: 1

Views: 84

Answers (2)

num8er
num8er

Reputation: 19372

I don't know how Your table looks like because You've not described it.
But I got for example "orders" table with idorder,idproduct,priceproduct fields.
And wrote this code:

// $q = "SELECT * FROM orders WHERE idorder = 5"; // for single order
$q = "SELECT * FROM orders"; 
$result = $conn->query($q);
$orders = [];
while($record=$result->fetch_array()) {
  if(!isset($orders[$record['idorder']])) {
    $orders[$record['idorder']] = [];
    $orders[$record['idorder']]['idorder'] = $record['idorder'];
    $orders[$record['idorder']]['totalOrder'] = 0;
    $orders[$record['idorder']]['products'] = [];
  }

  $orders[$record['idorder']]['products'][] = ['idproduct' => $recrod['idproduct'], 
                                               'price'     => $record['priceproduct']];
  $orders[$record['idorder']]['totalOrder'] += $record['priceproduct'];
}

$orders = array_values($orders);

echo json_encode($orders);

Upvotes: 0

Suchit kumar
Suchit kumar

Reputation: 11859

you need to try something like this:

$r1=$result->fetch_array();
$return_arr['idorder'] = $r1['idorder'];
$return_arr['totalOrder'] = '55';
// suposse total products are 10

$product=10;
for($i=0;$i<product;$i++){
$return_arr['product'][] = array("idproduct"=>$i,"price"=>$i);//use your price and idproduct.
}

echo json_encode($return_arr);

Upvotes: 1

Related Questions