написать скрипт для вывода дерева

112
28 ноября 2019, 18:40

Помогите, пожалуйста, написать скрипт! есть бд, содержащая 3 столбца: id, id_parent, name (1, 0, 'Телевизоры'), (2, 0, 'Мультимедиа'), (3, 1, 'ЖК телевизоры'), (4, 1, 'Плазменные телевизоры'), (5, 3, 'Диагональю до 45 дюймов'), (6, 3, 'Диагональю более 40 дюймов'), (7, 4, 'Диагональю до 45 дюймов'), (8, 4, 'Диагональю более 40 дюймов'), (9, 2, 'DVD-плееры'), (10, 2, 'Blu-Ray плееры'); Нужно вывести сначала имена первого уровня как ссылки и рядом количество детей. При нажатии на них, с помощью метода гет нужно получать айди и выводить детей.

Вот что-то написал:

<?php
$cats = [];
$mysqli = new mysqli("localhost", "root", "root", "beboss");
$mysqli->query("SET NAMES 'utf8'");
$result=mysqli_query($mysqli, "SELECT * FROM  groups");
mysqli_close($mysqli);  
while ($cat = mysqli_fetch_assoc($result)) {
    $cats[] = $cat;
      }

    function arrOfId($get_id, $cats,$fire = false){
      static $ids = [];
      static $idsParent = [];
        if($fire)
            {$ids = []; $idsParent = [];}
        foreach ($cats as $key => $value) {
            if($value['id'] == $get_id){
                $ids[] = $value['id'];
          $idsParent[] = $value['id_parent'];
                if($value['id_parent'] > 0){
                    $id = arrOfId($value['id_parent'],$cats);
                }
            }
        }
        return [$ids, $idsParent];
    }
    function getId($cats){
    $childIds = [];
    $id = $_GET['id'];
    foreach ($cats as $key => $value) {
      if($value['id_parent']==$id) array_push($childIds, $value['id']); 
    }
    $max_id = $childIds[0];
    for($i = 0; $i < count($childIds); $i++)
      if($max_id<$childIds[$i]) $max_id = $childIds[$i];
    return $max_id;
   }
     $get_id = getId($cats);
     [$ids, $idsParent] = arrOfId(@$get_id,$cats,true);
     $ids = array_reverse($ids);
     $idsParent = array_reverse($idsParent);
     $padding = 0;
     $test = -1;
     for($i = 0; $i<count($ids); $i++){
     foreach ($cats as $key => $value){
          if($value['id_parent']==$idsParent[$i]){
                if($test!=$value['id_parent'])
                {$padding+=20;$test=$value['id_parent'];}
                echo '<div style="padding-left:'.$padding.'px"><a href=first.php?id='.$value['id'].'>'.$value['name'].'</a></div>';

          }
       }
     }


   ?>
READ ALSO
Защита серверной части php

Защита серверной части php

У меня есть серверная часть написанная на php, мне нужно её максимально защитить от XSS и подобных атак

123
Скрываем /?taxonomy=

Скрываем /?taxonomy=

Как скрыть в адресной строке таксономию?

153
В каком формате должна быть запись в wp_posts &gt; post_name?

В каком формате должна быть запись в wp_posts > post_name?

Есть задача, добавлять новые записи напрямую в базу WordPressДля этого создал в отдельном файле подключение к базе и выполняю запрос на добавление...

121
Как пользоваться REST API Битрикс24 в Drupal?

Как пользоваться REST API Битрикс24 в Drupal?

У клиента сайт на друпале/уберкартеИз интернет-магазина нужно отправлять запросы к API Битрикс24

139