Ограничить количество детей до 6-го уровня в дереве

созданная php-функция получает все дочерние элементы родительского элемента в виде дерева. Проблема в том, что он получает всех детей, но я хочу ограничить его до 6-го уровня дерева. Код, который я сделал, это

get_childs("2");

function get_childs($parent_id){
GLOBAL $con;
 if ($result = mysqli_query($con,"SELECT * FROM user_profile WHERE referred_by='$parent_id'")) {
 echo '<ul>';

 while ($row = $result->fetch_assoc()) {
 echo '<li><a href="#" target="_blank">'.$row['user_id'].'</a>';

 //call again for each child. if the id dosen't have childs, then prints nothing and go on!
 get_childs($row['user_id']);

 echo '</li>';
 }// end while

 echo '</ul>';
 }// end if select

}

Вывод, который он генерирует

Я хочу ограничить его до 17, как и выше, по мере достижения уровня 6-го уровня.

2 ответа

Согласно моему комментарию, я бы предложил что-то вроде этого:

get_childs("2", 0);

function get_childs($parent_id, $level){
 GLOBAL $con;
 if ($result = mysqli_query($con,"SELECT * FROM user_profile WHERE referred_by='$parent_id'")) {
 echo '<ul>';

 while ($row = $result->fetch_assoc()) {
 echo '<li><a href="#" target="_blank">'.$row['user_id'].'</a>';

 //call again for each child. if the id dosen't have childs, then prints nothing and go on!
 if($level < 6)
 get_childs($row['user_id'], $level + 1);

 echo '</li>';
 }// end while

 echo '</ul>';
 }// end if select
}

При этом крошечном изменении ваше дерево остановится, как только достигнет 6-го уровня. (Возможно, вам придется немного подстроить его)


get_childs("2", 6);

function get_childs($parent_id, $level){
 if($level < 1) return false;
GLOBAL $con;
 if ($result = mysqli_query($con,"SELECT * FROM user_profile WHERE referred_by='$parent_id'")) {
 echo '<ul>';

 while ($row = $result->fetch_assoc()) {
 echo '<li><a href="#" target="_blank">'.$row['user_id'].'</a>';

 //call again for each child. if the id dosen't have childs, then prints nothing and go on!
 get_childs($row['user_id'], $level--);

 echo '</li>';
 }// end while

 echo '</ul>';
 }// end if select

}

licensed under cc by-sa 3.0 with attribution.