Простой запрос, не выходит

igortik

Новичок
Простой запрос, не выходит

Т.к. плохо знаю MySQL (очень плохо), сложно сформировтаь запрос.

Задача такова:

Есть таблица:

id | m_id | name |

1 | 0 | Основной раздел |
2 | 1 | Подраздел основного раздела |
3 | 1 | Второй подраздел основного раздела |
4 | 0 | Второй основной раздел |
5 | 1 | Третий подраздел основного раздела |
6 | 4 | Подраздел второго основного раздела |

Мне необходимо вывести данные в таком порядке:

Основной раздел
- Подраздел основного раздела
- Второй подраздел основного раздела
- Третий подраздел основного раздела

Второй основной раздел
- Подраздел второго основного раздела

Как уже стало ясно, что m_id несет значение id основного раздела.

Так вот, как мне сформировать запрос mysql, чтобы не пользоваться циклом в цикле, что неудобно очень ?
 

Flyer

Новичок
ты вытаскивай просто все данные из базы а далее полученный массив нужно будет переработать.

копай в сторону рекурсии, тут на форуме должны были ее обсуждать.
 

igortik

Новичок
Действительно, рекурсия. Спасибо!
Вот функция:


PHP:
function menu($id, $cnt){
$sql=mysql_query("SELECT id, name FROM menu WHERE m_id = ".$id);
  while($mas=mysql_fetch_array($sql)){
   echo "<br><option value='".$mas[0]."'>".(str_repeat("-",$cnt))." ".$mas[1];
   menu($mas[0], $cnt+=1);
   $cnt-=1;
}
}
P.S. При условии, что соединение с базой уже установлено!

PHP:
echo menu(0, 1);
-~{}~ 11.09.08 16:57:

Для общего развития еще бы хотел рассмотреть какой-то иной метод, если таковой имеется.
 

ardentlyo

Новичок
Автор оригинала: igortik
Для общего развития еще бы хотел рассмотреть какой-то иной метод, если таковой имеется.
можно юзать какието библиоткети для работы с бд, которые облегчают подобный процесс! например http://dklab.ru/lib/DbSimple/manual.html#cont22
 
Сверху