powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Быстрый способ формирования списка с категориями
7 сообщений из 7, страница 1 из 1
Быстрый способ формирования списка с категориями
    #39149848
spider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем участникам форума.

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

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

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

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

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

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

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

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

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


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

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

Еще раз повторюсь "Нужно сформировать древовидный список(ОН БУДЕТ ИСПОЛЬЗОВАН НЕ ТОЛЬКО ДЛЯ ВЫВОДА)"
...
Рейтинг: 0 / 0
Быстрый способ формирования списка с категориями
    #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
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Быстрый способ формирования списка с категориями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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