Posted By

graceman9 on 11/26/10


Tagged

mysql php category tree


Versions (?)

Simple category tree


 / Published in: PHP
 

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

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

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

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

Нужно: Сделать запрос в базу данных, получить данные и создать из них, наверно, массив. Затем вывести данные в формате: Section1 Category1ofSection1 Article1ofCategory1 Article2ofCategory1 Article3ofCategory1 ... ArticleNofCategory1 Category2ofSection1 Article1ofCategory2 Article2ofCategory2 ... ArticleNofCategory2 Category3ofSection1 ... CategoryNofSection1 Section2 ... SectionN

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

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

  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  

You need to login to post a comment.