Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Вывод дерева услуг с подгруппами
Tracktor  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 43052
На форуме: 5 месяцев, 25 дней
Карма:




Здравствуйте.

Имеется БД PostgreSQL.
Результатом довольно хитрого запроса из неё делается выборка, в результате получается примерно такая таблица:

user posted image

Сам запрос:
$res = pg_query ("SELECT DISTINCT struc_usl.id_usl, u.naz AS naz_u, u.nom AS nom_u, u.gr_id as id_gr_u, g.idp AS korn_g_id, g.naz AS naz_g, g.npp, p.naz AS korn_g_naz, b.naz AS naz_b FROM isp.struc_usl
LEFT JOIN (SELECT * FROM uslugi.usl_sp) AS u ON struc_usl.id_usl = u.id
LEFT JOIN (SELECT * FROM uslugi.grusl) AS g ON u.gr_id = g.id
LEFT JOIN (SELECT * FROM uslugi.grusl) AS p ON p.id = g.idp
LEFT JOIN (SELECT * FROM uslugi.doc_blanks WHERE doc_blanks.naz = 'Регламент' AND doc_blanks.docblank is not null) AS b ON u.id = b.id_usl
WHERE u.gr_id !=121 AND u.gr_id !=158 AND u.gr_id !=169
ORDER BY npp, nom_u"
);
$arr = pg_fetch_all ($res);


id_usl - id услуги;
naz_u - название услуги;
nom_u - краткий код услуги;
id_gr_u - id группы услуг;
korn_g_id - id корневой группы услуг (если null значит корневой для этой услуги является группа id_gr_u);
naz_g - имя группы услуг;
korn_g_naz - имя корневой группы услуг;
naz_b, npp - в данной задаче не потребуются.

Необходимо построить дерево, чтобы, исходя из таблицы в примере, получилось примерно следующее:

Группа услуг 1
УСЛ-01 Услуга 01
УСЛ-02 Услуга 02
УСЛ-03 Услуга 03
УСЛ-04 Услуга 04
Группа услуг 2
Группа услуг 3
УСЛ-05 Услуга 05
УСЛ-06 Услуга 06
УСЛ-07 Услуга 07
Группа услуг 4
УСЛ-08 Услуга 08
УСЛ-09 Услуга 09
УСЛ-10 Услуга 10


В разборе массивов не силён, да и вообще сам не программист. А сделать надо... Прошу помощи в написании нужного кода.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TMake  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 7 лет, 11 месяцев, 17 дней
Карма: 58




С кодом не помогу, а вот по структуре дерева лучше посмотреть без рекурсивное дерево nested set
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 5 дней
Карма: 77




Это если больше не будет вложенности.
if (is_aray($arr)) {
$array = [];
foreach ($arr AS $value){

$val = $value['nom_u'].' '.$value['naz_u'];
if (!empty($value['korn_g_naz'])) {
$array[ $value['korn_g_naz'] ][ $value['naz_g'] ] = $val;
} else {

$array[ $value['naz_g'] ] = $val;
}
}

echo '<pre>';
print_r($array);
echo '</pre>';
} else
echo 'Нет данных';
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Tracktor  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 43052
На форуме: 5 месяцев, 25 дней
Карма:




Kusss
Ругается:
Parse error: syntax error, unexpected '[' in W:\home\test3.ru\www\test2.php on line 23

На 23-й:
$array = [];
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 5 дней
Карма: 77




Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов, который заменяет языковую конструкцию array() на [].
$array = array();
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Tracktor  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 43052
На форуме: 5 месяцев, 25 дней
Карма:




Странно, но так тоже ругается:
Parse error: syntax error, unexpected ')' in W:\home\test3.ru\www\test2.php on line 23
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 17 дней
Карма: 170




if (is_array($arr)) {


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 5 дней
Карма: 77




T1grOK
Спасибо
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Tracktor  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 43052
На форуме: 5 месяцев, 25 дней
Карма:




Цитата (T1grOK @ 8.06.2016 - 14:50)
if (is_array($arr)) {

Это да... но ошибка осталась ohmy.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса