Simple category tree


/ Published in: PHP
Save to your folder(s)

Как сделать вывод из нескольких таблиц (php mysql)

Итак, имеем:
Три таблицы - articles, categories и sections. По иерархии - в sections включаются categories, а в categories включаются articles. По таблицам это выглядит так:

Articles(id, title, categoryID, sectionID)
Categories(id, title, sectionID)
Sections(id, title)

То есть ключевым является id в каждой таблице, и именно с помошью его надо определять какая категория относится к какому разделу и какая статья относится к какой категории.

Нужно:
Сделать запрос в базу данных, получить данные и создать из них, наверно, массив.
Затем вывести данные в формате:
Section1
Category1_of_Section1
Article1_of_Category1
Article2_of_Category1
Article3_of_Category1
...
ArticleN_of_Category1
Category2_of_Section1
Article1_of_Category2
Article2_of_Category2
...
ArticleN_of_Category2
Category3_of_Section1
...
CategoryN_of_Section1
Section2
...
SectionN

То есть чтобы выводились все разделы по очереди, и при этом каждый включал в себя категории, которые относятся к нему. А каждая категория, в свою очередь, включала в себя статьи, которые относятся к ней.

Как это можно сделать? php и mysql.


Copy this code and paste it in your HTML
  1. mysql_connect('localhost', 'user', 'pass');
  2. $sections = array();
  3. $result = mysql_query("SELECT * FROM sections");
  4. while ($row = mysql_fetch_object($result)) {
  5. $sections[$row->id] = $row;
  6. }
  7.  
  8. $categories = array();
  9. $result = mysql_query("SELECT * FROM categories");
  10. while ($row = mysql_fetch_object($result)) {
  11. $categories[$row->id] = $row;
  12. }
  13.  
  14. $tree = array();
  15. $result = mysql_query("SELECT * FROM articles");
  16. while ($row = mysql_fetch_object($result)) {
  17. $id = $row->id;
  18. $sid = $row->sectionID;
  19. $cid = $row->categoryID;
  20. if (!isset($tree[$sid])) {
  21. $tree[$sid] = array();
  22. $tree[$sid]['section'] = $sections[$sid];
  23. }
  24. if (!isset($tree[$sid][$cid])) {
  25. $tree[$sid][$cid] = array();
  26. $tree[$sid][$cid]['category'] = $category[$cid];
  27. }
  28. $tree[$sid][$cid]['article'] = $row;
  29. }
  30.  
  31. print_r($tree);

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.