javascript — динамическая организационная структура dhtmlx с использованием PHP и Json

у меня проблема. Я не очень понимаю, как я должен правильно выводить это с помощью циклов.

Данные таблицы:

| Name               |        Position |
|:-------------------|----------------:|
| MARK NICHOLS       |        Team Lead|
| NICHOLAS CRUZ      |        Team Lead|
| SEAN PARKER        |       Programmer|
| MICHAEL SHAW       |       Programmer|
| LAURA ALVAREZ      |           Junior|
| JOHN FLORES        |           Junior|

Я хочу, чтобы в каждых 2 выбранных данных ID и Родительская переменная в json должны быть изменены следующим образом.

while loop of table from above(){

в этой части это значение по умолчанию в первом цикле из 2 данных

3.1 это идентификатор ребенка и 3.2

3 является идентификатором РОДИТЕЛЯ и 3

    //1loop
3.1             3.2
3               3

динамический цикл после первого цикла

   //2loop
CHILD   3.1.1       3.2.1
PARENT  3.1         3.2
//3loop
CHILD   3.1.1.1     3.2.1.1
PARENT  3.1.1       3.2.1
//4loop
CHILD   3.1.1.1.1   3.2.1.1.1
PARENT  3.1.1.1     3.2.1.1

//и так далее….

}

увидеть ID ребенка второго цикла имеет значение 3.1.1

после этого второго цикла ID ребенка второй цикл должен быть использован в 3-й цикл как ID родителя

скажем, в каждой петле ребенка добавить .1 , и родитель — последний дочерний цикл.

Статический Json:

 {
"id": "3.1",
"text": "Team Lead",
"title": "MARK NICHOLS",
"img": "../common/img/avatar-10.png",
"parent": "3"},
{
"id": "3.2",
"text": "Team Lead",
"title": "NICHOLAS CRUZ",
"img": "../common/img/avatar-10.png",
"parent": "3"},
{
"id": "3.1.1",
"text": "Programmer",
"title": "SEAN PARKER",
"img": "../common/img/avatar-10.png",
"parent": "3.1"},
{
"id": "3.2.1",
"text": "Programmer",
"title": "MICHAEL SHAW",
"img": "../common/img/avatar-8.png",
"parent": "3.2"},{
"id": "3.1.1.1",
"text": "Junior",
"title": "LAURA ALVAREZ",
"img": "../common/img/avatar-10.png",
"parent": "3.1.1"},
{
"id": "3.2.1.1",
"text": "Junior",
"title": "JOHN FLORES",
"img": "../common/img/avatar-8.png",
"parent": "3.2.1"}

Результат компоновки диаграммы статического Json:

введите описание изображения здесь

Что делать, если я использую данные таблицы выше и выбрать все данные с помощью SQL.
этот код PHP должен быть преобразован как статический Json выше?

Мой пробный код:

<?php
$count = 6;
$a = "3.";
$b = "3";
$c = 1;
$e = "";
$f = "";
echo "<pre>";
for ($i=1; $i <=$count; $i++){
if ($c == 1){
$d =1;
}
if ($c == 2){
$d = 2;
}
echo "{";
echo "ID:".$a.$c.$e.$f.",";



$parent = $a.$c.$e.$f;


echo "Parent:".$parent;
echo "}";
if($i == $count){
}
else{
echo ",";
}

if ($c == 2){

$c = 0;

$e =".1";
}
$f += $e;
$c++;
}

?>

Результат логической ошибки:

{ID:3.1,Parent:3.1},
{ID:3.20,Parent:3.20},
{ID:3.1.10.1,Parent:3.1.10.1},
{ID:3.2.10.2,Parent:3.2.10.2},
{ID:3.1.10.3,Parent:3.1.10.3},
{ID:3.2.10.4,Parent:3.2.10.4}

Ожидаемый вывод на мой пробный код:

{ID:3.1,Parent:3},
{ID:3.2,Parent:3},
{ID:3.1.1,Parent:3.1},
{ID:3.2.1,Parent:3.2},
{ID:3.1.1.1,Parent:3.1.1},
{ID:3.2.1.1,Parent:3.2.1}

Пожалуйста, помогите мне, если кто-то обладает большими знаниями о Json и PHP, чтобы выводить динамическую диаграмму dhtmlx, используя цикл для Json.
Другой метод будет принят.

0

Решение

function loop(array $parents, $need)
{
$children = [];
$isLast = $need === 1;
$lastKey = count($parents) - 1;
foreach ($parents as $key => $parent) {
$id = $parent === 3 ? $key + 1 : 1;
$children[] = $child = "$parent.$id";
$comma = $isLast && $key === $lastKey ? '' : ',';
echo "{ID:$child,Parent:$parent}$comma" . "<br/>";
}

$need--;

if ($need) {
return loop($children, $need);
}

return $children;
}


loop([3, 3], 4);
1

Другие решения

я решаю свою проблему вот мой ответ на мой вопрос:

SQL:

$sql = mysqli_query($conn,"SELECT * FROM `brgy_official_detail` bod
INNER JOIN resident_detail rd ON rd.res_ID = bod.res_ID
LEFT JOIN ref_suffixname rs ON rs.suffix_ID = rd.suffix_ID
LEFT JOIN ref_position rp ON rp.position_ID = bod.commitee_assignID
WHERE visibility = 1 AND  position_Name LIKE 'Barangay Official%'");

посчитать содержание запроса:

$count_official = mysqli_num_rows($sql);

Объявление временного массива:

$name = array();
$position_Name = array();
$official_img = array();

Получить данные и сохранить в массив:

while($official_data = mysqli_fetch_array($sql)){
$suffix = $official_data['suffix'];
if ($suffix == "N/A") {
$suffix = "";
}
else{
$suffix = $official_data['suffix'];
}
$name[] =  $official_data['res_fName'].' '.$official_data['res_mName'].' '.$official_data['res_lName'].' '.$suffix;
$position_Name[] = $official_data['position_Name'];

if (isset($official_data['res_Img'])) {
$z  = $official_data['res_Img'];
$official_img[] = "data:image/jpeg;base64,".base64_encode($z);

}
else{
$official_img[] = "../../Img/Icon/logo.png";

}

}

а потом я улучшаю qskane ответ:

function loop(array $parents, $need,$index,$name,$position_Name,$official_img)
{

$children = [];
$isLast = $need === 1;
$lastKey = count($parents) - 1;

foreach ($parents as $key => $parent) {
$p_name = $name[$index];
$pos_Name = $position_Name[$index];
$img = $official_img[$index];
$id = $parent === 3 ? $key + 1 : 1;
$children[] = $child = "$parent.$id";
$comma = $isLast && $key === $lastKey ? '' : ',';
echo "{
\"id\":\"$child\",
\"text\": \"$pos_Name\",
\"title\": \"$p_name\",
\"width\": 350,
\"img\": \"$img\",
\"parent\":\"$parent\"}$comma";
}
$index++;
$need--;

if ($need) {
return loop($children, $need,$index,$name,$position_Name,$official_img);
}

return $children;
}

$index = 0;
loop([3], $count_official,$index,$name,$position_Name,$official_img);
?>

];

Результат:
введите описание изображения здесь

0

По вопросам рекламы [email protected]