Всем привет, есть задача отобразить цепочку регистраций пользователей по порядку номеров пригласителей. То есть например это партнеская программа есть refid (идентификатор пригласителя) нужно чтобы таблица отображала по порядку данные всех пользователей используя данный идентификатор. Например: Код (Text): <table class="table"> <thead> <tr> <th><b>Пользователь</b></th> <th><b>Партнеров</b></th> <th><b>Зарегистрирован</b></th> </tr> </thead> <?PHP $all_money = 0; $db->Query("SELECT * FROM tarif1 WHERE ???ВОТ ТУТ НАДО УСЛОВИЕ???"); if($db->NumRows() > 0){ while($ref = $db->FetchArray()){ ?> <tbody> <tr> <td><a href="/user<?=$ref["user"]; ?>"><?=$ref["user"]; ?></td> <td><?=$ref["referals"]; ?></td> <td><?=date("d.m.Y H:i",$ref["date_reg"]); ?></td> </tr> }else echo '<tr><td align="center" colspan="5">У вас нет партнеров</td></tr>' ?> </tbody></table> Если мы тут $db->Query("SELECT * FROM tarif1 WHERE refid = '10' ") поставим WHERE refid = '10' то отобразит всех кто зарегистрирован под refid 1... можно создать второе условие $ref = $db->FetchArray()) $db->Query("SELECT * FROM tarif1 WHERE refid = '$ref["id"]' ") и узнать под кем зарегистрирован следующий пользователь... но если выводить в переменную каждого последующего пользователя.... это не подходит так как список может быть бесконечным... так вот... КАК сделать так чтобы подбор был цикличным то есть в случае если под пользователем 10 есть кто то еще то оно выводило пользователя с refid 10 и так далее ниже по порядку Надеюсь мысль выразил корректно... и понятно
По сути - вы хотите дерево регистраций отобразить?; С "ветвями и листьями " партнёрамии клиентами? Делается одна выборка получающая всех пользователей. Потом к этому массиву применяется рекурсивная функция показа потомков.. вот и все. Ну и ваши индивидуальные " свистелки, перделки", типа даты регистрации, ссылки на партнёров и прочее
Вы сами написали, что список может быть «бесконечным». Поэтому в данном случае лучше обойтись без построения полного дерева, его кэширования и т.п. Сделайте динамическую навигацию между двумя напрямую связанными этим отношением пользователями. Т.е. ссылку на «пригласителя», если он есть. И список со ссылками на рефералов, если они есть. В принципе можно отображать цепочку «пригласителей» блоками, например, максимум по пять. Для этого сделайте пять LEFT JOIN по соотв. полю и после отсеките недействительные присоединенные записи.