За последние 24 часа нас посетили 22182 программиста и 1058 роботов. Сейчас ищут 698 программистов ...

Помогите решить задачу

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

  1. Dimitrius96

    Dimitrius96 Новичок

    С нами с:
    26 июн 2020
    Сообщения:
    1
    Симпатии:
    0
    Всем привет, есть задача отобразить цепочку регистраций пользователей по порядку номеров пригласителей.
    То есть например это партнеская программа есть refid (идентификатор пригласителя) нужно чтобы таблица отображала по порядку данные всех пользователей используя данный идентификатор.
    Например:

    Код (Text):
    1. <table class="table">
    2.     <thead>
    3.     <tr>
    4.     <th><b>Пользователь</b></th>
    5.     <th><b>Партнеров</b></th>
    6.     <th><b>Зарегистрирован</b></th>
    7.     </tr>
    8.     </thead>
    9. <?PHP
    10.   $all_money = 0;
    11.   $db->Query("SELECT * FROM tarif1 WHERE ???ВОТ ТУТ НАДО УСЛОВИЕ???");
    12.  
    13.     if($db->NumRows() > 0){
    14.  
    15.           while($ref = $db->FetchArray()){
    16.      
    17.         ?>
    18. <tbody>
    19.     <tr>
    20.         <td><a href="/user<?=$ref["user"]; ?>"><?=$ref["user"]; ?></td>
    21.         <td><?=$ref["referals"]; ?></td>
    22.         <td><?=date("d.m.Y H:i",$ref["date_reg"]); ?></td>
    23.     </tr>
    24.  
    25.     }else echo '<tr><td align="center" colspan="5">У вас нет партнеров</td></tr>'
    26.   ?>
    27. </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 и так далее ниже по порядку
    Надеюсь мысль выразил корректно... и понятно
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Dimitrius96 непонятно ничего, структуру таблицы можно.
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    По сути - вы хотите дерево регистраций отобразить?; С "ветвями и листьями " партнёрамии клиентами?

    Делается одна выборка получающая всех пользователей. Потом к этому массиву применяется рекурсивная функция показа потомков.. вот и все.

    Ну и ваши индивидуальные " свистелки, перделки", типа даты регистрации, ссылки на партнёров и прочее
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Вы сами написали, что список может быть «бесконечным». Поэтому в данном случае лучше обойтись без построения полного дерева, его кэширования и т.п. Сделайте динамическую навигацию между двумя напрямую связанными этим отношением пользователями. Т.е. ссылку на «пригласителя», если он есть. И список со ссылками на рефералов, если они есть.

    В принципе можно отображать цепочку «пригласителей» блоками, например, максимум по пять. Для этого сделайте пять LEFT JOIN по соотв. полю и после отсеките недействительные присоединенные записи.