Привет и извините за мой английский.Анализ данных от mysql до json с PHP
Я хочу проанализировать данные из таблицы mysql в JSON с помощью PHP. В моей таблице есть 2 столбца: 'reg', 'base', который представляет регион и базу в этой области. Пример:
reg base
KIE KIE1
KIE KIE2
KIE KIE3
ZYT ZYT1
ZYT ZYT2
CHK CHK1
и т.д.
Я пытаюсь разобрать эти значения в JSON, который выглядит как:
{"text":"Bases","leaf":false,"children":{"text":"KIE","leaf":false,"children":[{"text":"KIE1","leaf":true},{"text":"KIE2","leaf":true},{"text":"KIE3","leaf":true}]},{"text":"ZYT","leaf":false,"children":[{"text":"ZYT1","leaf":true},{"text":"ZYT2","leaf":true}]},{"text":"CHK","leaf":false,"children":[{"text":"CHK1","leaf":true}]}}
Мой код PHP:
<?php
header("Content-type: application/json; charset=utf-8");
$conn = mysqli_connect('localhost','test', '123','test');
$bases = array('text'=>'Bases','leaf'=>false);
$regions = "select distinct reg from bases";
$resreg = mysqli_query($conn,$regions);
while($reg=mysqli_fetch_assoc($resreg)){
$bases['children'] = array('text'=>$reg['reg'],'leaf'=>false, 'children'=>array());
$regi = $reg['reg'];
$query = "select base from bases where reg = '$regi' order by 1";
$result = mysqli_query($conn,$query);
while($row = mysqli_fetch_assoc($result)){
$c = array('text'=>$row['base'],'leaf'=>true);
$bases['children']['children'][]=$c;
}
}
$d = json_encode($bases);
echo $d;
mysqli_close($conn);
?>
Проблема я получать значения в JSON только от одного reg и дона т получить от других
Пример:
{"text":"Bases","leaf":false,"children":{"text":"KIE","leaf":false,"children":[{"text":"KIE1","leaf":true},{"text":"KIE2","leaf":true},{"text":"KIE3","leaf":true}]}
Я не уверен, что это лучший Metod, чтобы получить то, что я хочу, но я новичок в программировании.
Может ли кто-нибудь помочь в этом или, может быть, сказать мне лучший способ сделать это? Мне нужно это для моего дерева приложений ExtJs. Спасибо.
С каждой итерацией вы переписываете '$ base ['children']' '. Также вам следует рассмотреть возможность использования запроса JOIN для получения этих данных, а не для запуска множества запросов в вложенных циклах. –
@MikeBrant Да, это то, что я думал. Но вы можете объяснить это больше? Может быть, пример запроса? Я действительно не понимаю, почему я должен использовать запрос с объединениями в моем случае :( – fgsfds