За последние 24 часа нас посетили 17419 программистов и 1685 роботов. Сейчас ищут 892 программиста ...

Создание страницы,где реализован вывод сотрудников в виде иерархического дерева с указанием должност

Тема в разделе "PHP и базы данных", создана пользователем rezolan, 26 ноя 2016.

  1. rezolan

    rezolan Новичок

    С нами с:
    26 ноя 2016
    Сообщения:
    1
    Симпатии:
    0
    Добрый день, есть БД, в которой есть поля id (primary), fio, position (начиная от Генерального директора, заканчивая джуниором. Всего пять уровней иерархии - General, ProjectManager, TeamLead, Senior, Middle, Junior), date, salary, id_chiefs (id начальника). Необходимо вывести на экран список сотрудников в виде дерева. Т. е. у каждого человека есть конкретный начальник, который определяется по полю id_chiefs. id General равняется 123456789
    Я в PHP новичек, поэтому мозгов хватило только на это (но я понимаю, что так неправильно, работает долго). Подскажите более лаконичное и оптимальное решение. Буду очень благодарен.
    PHP:
    1. <?php
    2.     require_once 'function.php';
    3.     $conn = connectToDb();
    4.     $sql = "SELECT * FROM `abz`";
    5.     $result = $conn->query($sql);
    6.     if ($result->num_rows > 0) {
    7.         // output data of each row
    8.         $base = array(
    9.             'id' => array(),
    10.             'fio' => array(),
    11.             'position' => array(),
    12.             'date' => array(),
    13.             'salary' => array(),
    14.             'id_chiefs' => array(),
    15.         );
    16.         while($row = $result->fetch_assoc()) {
    17.             $base['id'][$row['id']] = $row['id'];
    18.             $base['fio'][$row['id']] = $row['fio'];
    19.             $base['position'][$row['id']] = $row['position'];
    20.             $base['date'][$row['id']] = $row['date'];
    21.             $base['salary'][$row['id']] = $row['salary'];
    22.             $base['id_chiefs'][$row['id']] = $row['id_chiefs'];
    23.         }
    24.     } else {
    25.         echo "0 results";
    26.     }
    27.     echo '<div>' . $base['fio'][123456789].'<br>' . $base['position'][123456789].'<br></div>';
    28.     for ($i = 1; $i < 1001; $i++){
    29.         if ($base['position'][$i] == 'ProjectManager'){
    30.             echo '<div id_num='.$base['id'][$i].'" class="projectManager">' . $base['fio'][$i].'<br>' . $base['position'][$i].'<br></div>';
    31.             for ($j = 1; $j < 1001; $j++){
    32.                 if ($base['position'][$j] == 'TeamLead' and $base['id_chiefs'][$j] == $base['id'][$i]){
    33.                     echo '<div id_num='.$base['id'][$j].'" class="teamLead">' . $base['fio'][$j].'<br>' . $base['position'][$j].'<br></div>';
    34.                     for ($k = 1; $k < 1001; $k++){
    35.                         if ($base['position'][$k] == 'Senior' and $base['id_chiefs'][$k] == $base['id'][$j]){
    36.                             echo '<div id_num='.$base['id'][$k].'" class="senior">' . $base['fio'][$k].'<br>' . $base['position'][$k].'<br></div>';
    37.                             for ($l = 1; $l < 1001; $l++){
    38.                                 if ($base['position'][$l] == 'Middle' and $base['id_chiefs'][$l] == $base['id'][$k]){
    39.                                     echo '<div id_num='.$base['id'][$l].'" class="middle">' . $base['fio'][$l].'<br>' . $base['position'][$l].'<br></div>';
    40.                                 }
    41.                                 for ($s = 1; $s < 1001; $s++){
    42.                                     if ($base['position'][$s] == 'Junior' and $base['id_chiefs'][$s] == $base['id'][$l]){
    43.                                         echo '<div id_num='.$base['id'][$s].'" class="junior">' . $base['fio'][$s].'<br>' . $base['position'][$s].'<br></div>';
    44.                                     }
    45.                                 }
    46.                             }
    47.                         }
    48.                     }
    49.                 }
    50.             }
    51.        
    52.         }
    53.     }
    54.     mysqli_close($conn);
    55. ?>
     
    #1 rezolan, 26 ноя 2016
    Последнее редактирование модератором: 26 ноя 2016