Как создать JSON для организационной структуры, как показано ниже, из базы данных, используя php, mysql, ajax - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь создать организационную схему в своем веб-приложении для сайта на базе 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 |


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...