Return to Snippet

Revision: 36766
at November 26, 2010 06:04 by graceman9


Initial Code
mysql_connect('localhost', 'user', 'pass');
$sections = array();
$result = mysql_query("SELECT * FROM sections");
while ($row = mysql_fetch_object($result)) {
	$sections[$row->id] = $row;
}

$categories = array();
$result = mysql_query("SELECT * FROM categories");
while ($row = mysql_fetch_object($result)) {
	$categories[$row->id] = $row;
}

$tree = array();
$result = mysql_query("SELECT * FROM articles");
while ($row = mysql_fetch_object($result)) {
	$id = $row->id;
	$sid = $row->sectionID;
	$cid = $row->categoryID;
	if (!isset($tree[$sid])) {
		$tree[$sid] = array();
		$tree[$sid]['section'] = $sections[$sid];
	}
	if (!isset($tree[$sid][$cid])) {
		$tree[$sid][$cid] = array();
		$tree[$sid][$cid]['category'] = $category[$cid];
	}
	$tree[$sid][$cid]['article'] = $row;
}

print_r($tree);

Initial URL


Initial Description
Как сделать вывод из нескольких таблиц (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.

Initial Title
Simple category tree

Initial Tags
mysql, php, category

Initial Language
PHP