За последние 24 часа нас посетили 17740 программистов и 1713 роботов. Сейчас ищут 1012 программистов ...

помогите с рекурсией или как правильно это называется))

Тема в разделе "PHP для новичков", создана пользователем ridvik, 12 окт 2012.

  1. ridvik

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

    С нами с:
    7 июл 2012
    Сообщения:
    64
    Симпатии:
    0
    Добрый день. Суть проблемы заключается в том, что есть 2 таблицы:
    1) leagues: id, name
    2) leagues_type: id, league,type

    поля name = league

    помогите пожалуйста с помощью рекурсии вывести вот типы, то бишь какой тип относится к какой лиге... У меня что-то не получается(((
    нужно что-то по типу этого
    [​IMG]
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Кидайте коды, что уже есть, либо в платник.
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    В данном конкретном примере рекурсия не нужна.
     
  4. ridvik

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

    С нами с:
    7 июл 2012
    Сообщения:
    64
    Симпатии:
    0
    а как можно реализовать?

    Добавлено спустя 57 минут 46 секунд:
    решил данную задачу так:
    Код (Text):
    1. $result = $main->db->sql_query("SELECT * FROM ".LEAGUES);
    2. if (mysql_num_rows($result) > 0) {
    3. echo("<UL>\n");
    4. while ($r = $main->db->sql_fetchrow($result))
    5. {
    6. $ID1 = $r["id"];
    7. echo("<LI>\n");
    8. echo("<A HREF=\""."?ID=".$ID1."\">".$r["name"]."</A>"."  \n");
    9. echo("</LI>\n");
    10.  
    11. $result2 = $main->db->sql_query("SELECT * FROM ".TYPES." WHERE league='{$r['name']}'");
    12. while ($r2 = $main->db->sql_fetchrow($result2))
    13. {
    14. $ID12 = $r2["id"];
    15. echo("<LI>\n");
    16. echo("<span id='add_team'></span><A HREF=\""."?ID=".$ID12."\">".$r2["type"]."</A>"."  \n");
    17. echo("</LI>\n");
    18. }
    19. }
    20. }
    21. echo("</UL>\n");
    на сколько правильный такой подход??
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    можно вытащить и одним запросом
    Код (PHP):
    1. $sql = "SELECT l.id, l.name, lt.id as type_id, lt.type 
    2.     FROM leagues l 
    3.     LEFT JOIN leagues_type lt ON lt.league = l.name
    4.     ORDER BY l.name ASC, lt.type ASC";
    5. $result = $main->db->sql_query($sql);
    6. $list = array();
    7. while ($row = $main->db->sql_fetchrow($result)) {
    8.     $list[ $row['name'] ][] = $row['type'];
    9. }
    10. echo '<pre>';
    11. print_r($list); 
    а результат в цикле сгруппировать по имени лиги
     
  6. ridvik

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

    С нами с:
    7 июл 2012
    Сообщения:
    64
    Симпатии:
    0