Здравствуйте, Подскажите, может кто то уже сталкивался. Вкратце объясню суть. Имеется таблица: Участники. Каждый участник имеет своего спонсора в этой же таблице, а тот в свою очередь своего. За отслеживание отвечает поле ID спонсора. Нужно относительно текущего участника вытащить из таблицы ID ближайшего к исходному участнику спонсора, чей флаг (поле Флаг) не равен нулю. Например: Участник с ID = 1, проверяем флаг его спонсора и если он равен 0, переходим уже к его спонсору и так до бесконечности - пока не встретим первого последующего с флагом = 1. Пока я реализую это такой громоздкой конструкцией с кучей запросов (только учусь): Код (Text): <?php //для этого по его ID узнаём его Флаг и ID уже его спонсора... $sp_flag1 = "SELECT `ID спонсора`,`Флаг` FROM `" . DATA_TABLE . "1` WHERE `id`='" . $sp['ID спонсора'] . "' AND `status`=0 LIMIT 1"; $spflag1 = sql_query($sp_flag1) or user_error(mysql_error() . "<br>" . $sp_flag1 . "<br>", E_USER_ERROR); $flag1 = sql_fetch_assoc($spflag1); if ($flag1['Флаг'] == 1) {//если Флаг = 1, выполняем код... /*** КОД ***/ } elseif ($flag1['Флаг'] == 0) { //но если Флаг = 0, ищем дальше... //узнаём Флаг спонсора и ID уже его спонсора... $sp_flag2 = "SELECT `ID спонсора`,`Флаг` FROM `" . DATA_TABLE . "1` WHERE `id`='" . $flag1['ID спонсора'] . "' AND `status`=0 LIMIT 1"; $spflag2 = sql_query($sp_flag2) or user_error(mysql_error() . "<br>" . $sp_flag2 . "<br>", E_USER_ERROR); while ($flag2 = sql_fetch_assoc($spflag2)) { if ($flag2['Флаг'] == 1) {//если Флаг = 1, выполняем код... /*** КОД ***/ } elseif ($flag2['Флаг'] == 0) { //но если Флаг = 0, ищем дальше... /*** И так пока не будет найден первый спонсор с Флагом = 1. Как сделать поиск до бесконечности, чтобы конструкция не разрасталась? ***/ } } } ?> Как сделать поиск до бесконечности, чтобы конструкция не разрасталась? Если можно, то одним запрсом... Или может что то посоветуете...
Это вот твое условие выхода из while. В каждой итерации просто меняй данные в запросе, которые планировал менять без цикла, разращивая код.