Я пытаюсь создать организационную схему в своем веб-приложении для сайта на базе MLM. Я хочу получить всех пользователей из базы данных и сгенерировать json таким образом, чтобы каждый пользователь с внешним ключом верхнего уровня находился под дочерним узлом.
РЕДАКТИРОВАТЬ 1. Код для load.php
<?php
function getConnection() {
$dbhost="127.0.0.1:3307";
$dbuser="root";
$dbpass="";
$dbname="php_mlm";
// $dbhost="localhost";
// $dbuser="a1teccdp_mlm";
// $dbpass="{Ht0AQRr6,28";
// $dbname="a1teccdp_mlm";
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbh;
}
$sql = "select id as memberId, referral_id as parentId, first_name as otherInfo from user";
try {
$db = getConnection();
$stmt = $db->query($sql);
$wines = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($wines);
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
?>
ФАЙЛ 2. totalmember.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> - Total Member</title>
<script type='text/javascript' src='jquery.js'></script>
<link rel="stylesheet" href="demo.css"/>
<link rel="stylesheet" href="jquery.orgchart.css"/>
<script src="jquery.orgchart.js"></script>
<script type='text/javascript'>
$(function(){
var members;
$.ajax({
url:'load.php',
async:false,
success:function(data){
members=$.parseJSON(data)
}
})
//memberId,parentId,otherInfo
for(var i = 0; i < members.length; i++){
var member = members[i];
if(i==0){
$("#mainContainer").append("<li id="+member.memberId+">"+member.otherInfo+"</li>")
}else{
if($('#pr_'+member.parentId).length<=0){
$('#'+member.parentId).append("<ul id='pr_"+member.parentId+"'><li id="+member.memberId+">"+member.otherInfo+"</li></ul>")
}
else{
$('#pr_'+member.parentId).append("<li id="+member.memberId+">"+member.otherInfo+"</li>")
}
}
}
$("#mainContainer").orgChart({container: $("#main"),interactive: true, fade: true, speed: 'slow'});
});
</script>
</head>
<body>
<div style="display: none">
<ul id="mainContainer" class="clearfix"></ul>
</div>
<div id="main">
</div>
</body>
</html>
Выше выдает правильный вывод, но тот же тип JSON я хочугенерировать как файл js, чтобы я мог отображать различные типы структуры и стиля.
Ожидаемый JSON
var ds = {
'name': 'Lao Lao',
'title': 'general manager',
'children': [
{ 'name': 'Bo Miao', 'title': 'department manager' },
{ 'name': 'Su Miao', 'title': 'department manager',
'children': [
{ 'name': 'Tie Hua', 'title': 'senior engineer' },
{ 'name': 'Hei Hei', 'title': 'senior engineer',
'children': [
{ 'name': 'Pang Pang', 'title': 'engineer' },
{ 'name': 'Xiang Xiang', 'title': 'UE engineer' }
]
}
]
},
{ 'name': 'Hong Miao', 'title': 'department manager' },
{ 'name': 'Chun Miao', 'title': 'department manager' }
]
};
```
From the following database table
+----+------------+-----------+-------------+-----------+----------------------+----------+--------+------------+--------+-----+----------+-------+--------+------------+
| id | first_name | last_name | referral_id | user_type | email | password | status | package_id | street | pin | district | state | gender | phone |
+----+------------+-----------+-------------+-----------+----------------------+----------+--------+------------+--------+-----+----------+-------+--------+------------+
| 1 | VIK | KUM | 0 | 3 | v.ray96610@gmail.com | qwerty | 0 | 1 | | 0 | | | 0 | 8723958587 |
| 2 | VIK | KUM | 1 | 3 | 648@gmail.com | qwerty | 0 | 1 | | 0 | | | 0 | 8723958587 |
| 3 | VIK | KUM | 1 | 3 | 665448@gmail.com | qwerty | 0 | 1 | | 0 | | | 0 | 8723958587 |
| 4 | VIK | KUM | 2 | 3 | 665448@gmail.com | qwerty | 0 | 1 | | 0 | | | 0 | 8723958587 |
| 5 | VIK | KUM | 2 | 3 | 665448@gmail.com | qwerty | 0 | 1 | | 0 | | | 0 | 8723958587 |
| 6 | VIK | KUM | 3 | 3 | 665448@gmail.com | qwerty | 0 | 1 | | 0 | | | 0 | 8723958587 |
| 7 | VIK | KUM | 3 | 3 | 665448@gmail.com | qwerty | 0 | 1 | | 0 | | | 0 | 8723958587 |