Тут надо посмотреть на важность уровня. Если Вы хотите пройти всё дерево рефералов, то нужна однозначно рекурсия, а если хотите именно задавать количество уровней, то нужен простой цикл.
Что в итоге нужно получить?
Голова с утра туго соображает, но если полный обход нужен, то будет что-то в духе:
function search($parent_link,$data_parent) {
global $CONNECT;
$curator = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'");
while ($change_curator = mysqli_fetch_assoc($curator) ) {
$referal_num = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator[id]'"));
if ( $referal_num >= $data_parent['width'] )
return search($change_curator);
else
return $change_curator['id'];
}
}
function overflow($parent_cook) {
global $CONNECT;
$parent_link = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `id` = $parent_cook"));
$data_parent = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `users_data` WHERE `id_user` = $parent_cook"));
if ( $data_parent['overflow'] > 0 ) {
////// Если переливы включены, то выполняется определение реферала и сортировка.
$referal_num = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'"));
if ( $referal_num >= $data_parent['width'] )
return search($parent_link,$data_parent);
else
return $parent_cook;
}
else {
return $parent_cook;
}
}