Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2013, 20:05   #1
Gefo
Форумчанин
 
Регистрация: 04.04.2012
Сообщений: 185
Смущение Решение, как и по чему ориентироваться (логика).

Помогите продумать.
Есть 2 гл категории и 2 категории с новостями.


Как не перемещай, категории с новостями. Подсчет новостей всегда будит верный. Скриншеты.



А теперь изначально имеем следующее:


Перемещаем категорию с новостью в "Категория без новости", что получаем:


Так до этого работает все как надо, а вот дальше не могу догнать как и по чему моно ориентироваться.
Перемещаем категорию с новостью в категорию без новости=0, что получаем:


И вот тут оно.
1 ошибка, не нужно изменять подсчет в корневой категории. Необходимо изменить в тех потглавных категориях, в которую входит категория с новостью, так как гл категорию мы не меняли.
2 ошибка, выше могут быть еще категории и тогда совсем ничего не понять.

Немного о том как я щас делаю.
Как удаляем количество новостей из гл-ных категорий.
Пишем рекурсию...Написали. У нас есть массив категорий, дерево категорий. И так, мы знаем количество новостей той категории которую хотим переместить. В рекурсию отдаем это количество и id старшой категории. И из каждой категории удаляем данной количество новостей. Ориентируемся по sub_id(поле содержит id старшей категории).... И онологично с удалением ток, немного изменены данные...

Не могу переварить, как написать код ,чтоб работал на ура.

Последний раз редактировалось Gefo; 06.02.2013 в 21:58.
Gefo вне форума Ответить с цитированием
Старый 06.02.2013, 23:00   #2
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

руками пиши, руками...

ты уже сам все расписал подробно и доходчиво, в чем собственно вопрос? О_о
Mortimoro вне форума Ответить с цитированием
Старый 07.02.2013, 08:41   #3
Gefo
Форумчанин
 
Регистрация: 04.04.2012
Сообщений: 185
По умолчанию

Вообщем есть идея с массивом. Создаю массив и проверяю на совпадение.
Необходима рекурсия на выборку id тех категорий, в которых расположена данная категория.
Собственно вопрос:

PHP код:
function upd($id)
{    
    global 
$cat;
    
     if(
$cat[$id]['sub_id'] !=0)
                
$id .= upd($cat[$id]['sub_id']);
        
      return 
$id.',';

Результат таков:
Код:
1191101,,,
Нужно так, а еще лучше сразу создать массив.
119,110,1

Вот как добиться такого результата?
Gefo вне форума Ответить с цитированием
Старый 07.02.2013, 09:55   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Код:
$id[]. =
не?
ADSoft вне форума Ответить с цитированием
Старый 07.02.2013, 09:56   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

для запятых - типа такого

Код:
function upd($id)
{    
    global $cat;
    
     if($cat[$id]['sub_id'] !=0)
                $id .= ",".upd($cat[$id]['sub_id']);
        
      return $id;
}
ADSoft вне форума Ответить с цитированием
Старый 07.02.2013, 14:59   #6
Gefo
Форумчанин
 
Регистрация: 04.04.2012
Сообщений: 185
По умолчанию

Жесть...Вчера, сёдня утром. Как я только не пробовал ставить запятую. Все время скапливались в конце.
И так пробовал:
$id .= upd($cat[$id]['sub_id']).',';
Тот же результат, подумал что если так то тот же результат будит если спереди подставить.

А вот про массив, в итоге можно через explode. На счет этого:
Код:
$id[] .=
У меня выдает ошибку:
Код:
error: Cannot use [] for reading in
Если все же можно создать так массив, в функции.То как и в чем ошибка?
Gefo вне форума Ответить с цитированием
Старый 07.02.2013, 15:10   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

можно.. почитайте про массивы....
в вашем случае - вы пытаетесь $cat[$id] тут использовать..... а это ведь уже массив ))
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Математическая логика (Элементы теории множеств, Логика и исчисление высказываний) sash_ok.83 Фриланс 0 12.06.2012 20:43
Как доказать? (мат. логика) Rinat93 Свободное общение 0 20.05.2012 17:29
Логика предикатов (мат логика 2 задачи) Deathcube Помощь студентам 0 27.02.2012 18:28
Как узнать возвращается ли чему либо результат из функции? Stilet Общие вопросы Delphi 7 07.10.2009 16:45
как обращатся к чему либо WOLFak Общие вопросы Delphi 3 13.02.2008 06:06