Как создать JSON из таблицы PHP

1

Как создать json, как это в php;

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

из таблицы mysql;

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

мой текущий код something.php;

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

//Но теперь???? Как создать вспомогательный массив с многократными продуктами.

echo json_encode($return_arr);
  • 0
    Сначала создайте многомерный массив, затем закодируйте его в json.
  • 0
    var_dump ($ r1); Какой контент?
Показать ещё 1 комментарий
Теги:
mysqli

2 ответа

1

вам нужно попробовать что-то вроде этого:

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

Я не знаю, как выглядит ваш стол, потому что вы его не описали.
Но я получил, например, таблицу "заказы" с полями idorder, idproduct, priceproduct.
И написал этот код:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню