Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Быстрый способ формирования списка с категориями / 7 сообщений из 7, страница 1 из 1
18.01.2016, 16:15
    #39149848
spider13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ формирования списка с категориями
Добрый день всем участникам форума.

След вопрос. Есть таблица категорий, подкатегорий и работ.

Этот список работ нужно вывести включая категории и подкатегории.

Вопрос в том, как быстрее всего сформировать данный список(без кеширования).

Насколько я понимаю, самый медленный способ это через обычный for. Возможно есть другие способы?
...
Рейтинг: 0 / 0
18.01.2016, 16:40
    #39149900
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ формирования списка с категориями
spider13,

Этот список где? Самый быстрый способ - руками зафигачить в HTML код странички, если что.
...
Рейтинг: 0 / 0
18.01.2016, 16:59
    #39149925
spider13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ формирования списка с категориями
DarkMasterspider13,

Этот список где? Самый быстрый способ - руками зафигачить в HTML код странички, если что.

В БД есть 3 таблицы (works имеет поле categoryId, categories содержит поле categoryTypeId и categoryTypes).

Нужно сформировать древовидный список(он будет использован не только для вывода)
...
Рейтинг: 0 / 0
18.01.2016, 17:34
    #39149954
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ формирования списка с категориями
spider13,

Если там дерево - наверное лучше формировать только список первого уровня, а остальные "достраивать" по мере необходимости (с помощью AJAX к примеру).
...
Рейтинг: 0 / 0
18.01.2016, 18:14
    #39149995
мигель1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ формирования списка с категориями
я бы делал все на процедурах
и передавал бы типа


select * from подкатегорий where категорий= параметр
...
Рейтинг: 0 / 0
18.01.2016, 19:18
    #39150042
spider13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ формирования списка с категориями
DarkMasterspider13,

Если там дерево - наверное лучше формировать только список первого уровня, а остальные "достраивать" по мере необходимости (с помощью AJAX к примеру).

Еще раз повторюсь "Нужно сформировать древовидный список(ОН БУДЕТ ИСПОЛЬЗОВАН НЕ ТОЛЬКО ДЛЯ ВЫВОДА)"
...
Рейтинг: 0 / 0
18.01.2016, 22:52
    #39150161
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ формирования списка с категориями
К примеру вот так. категории-подкатегории-работы, можно так же работы-категории-подкатегории, можно в процедурном виде
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
<?php

class Works
{
	private static $worksTree = null;

	public static function getWorksTree($force = false)
	{
		if (self::worksTree === null || $force) {
			self::worksTree = [];
			
			$sql = "SELECT c.id AS categoryId,
						   c.title AS categoryTite,
						   t.id AS categoryTypeId ,
						   t.title AS categoryTypeTitle,
						   w.id AS workId,
						   w.title AS workTitle
					FROM works w
					INNER JOIN categories c ON c.id = w.categoryId
					INNER JOIN categoryTypes t ON t.id = c.categoryTypeId";
					
			$worksTree = DI::db->findBySql($sql)->all();
			
			foreach ($worksTree as $tree) {
				self::worksTree[$tree['categoryId']]['title'] = $tree['categoryTite'];
				self::worksTree[$tree['categoryId']]['types'][$tree['categoryTypeId']]['title'] = $tree['categoryTypeTitle'];
				self::worksTree[$tree['categoryId']]['types'][$tree['categoryTypeId']]['works'] = [
						'id' => $tree['workId'],
						'title' => $tree['workTitle']
				];
			}
		}
		
		return self::$worksTree;
	}
}


print_r(Works::getWorksTree());
//должно получится что-то вроде этого
//Array()
//[1] => Array()
//		['title'] => 'Category One'
//		['types'] => Array()
//                      [1] => Array()
//				['title'] => 'Type One'
//				['works'] => Array()
//						[0] => Array()
//							['id'] => 1
//							['title'] => 'Work One'
//						[1] ...
//		          [2] ....
//[2] ...

...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Быстрый способ формирования списка с категориями / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]