В магазинах, как то VM, JShopping и других используется похожий способ хранения категорий
CREATE TABLE IF NOT EXISTS `categories` (
`category_id` int(11) NOT NULL AUTO_INCREMENT,
`category_parent_id` int(11) NOT NULL)
В файле загрузки имеем категорию "КАТЕГОРИЯ 1 УРОВНЯ\КАТЕГОРИЯ 2 УРОВНЯ\категория 3 уровня". В данном случае 3 уровня. А может быть 4, 5. Теоретически их может быть 10, 11 и т. д.
Нужно проверить наличие данных категорий в таблице `categories`. Ума не приложу как это можно сделать. Предполагаю что с помощью рекурсивной функции. Но как?
ну и что это даёт?
Если перебирать с условиями, что это категория имеет paren_id =0, то переходим к следующей категории.
Если не имеет совпадений, то создаём новую с parent_id=0. В какой-то переменной запоминаем (хотя в данном случае можно и мудрить с двухмерным массивом) значение id категории первого уровня.
Далее смотрим номер цикла:
если это $x=1, то проверяем существование категории с таким уровнем; если она не существует, то создаём с parent_id =запомненному ранее значению; если она существует, то проверяем совпадает ли parent_id с запомненным ранее, если нет, то опять же создаём её, если да, то запоминаем и переходим к следующему циклу.
Т. е. это надо прописывать все if для каждого цикла. Условия умножаются в геометрической прогрессии. Очевидно это неправильный путь решения, т. к.
1) это некрасиво
2) количество категорий будет ограничено прописанными условиями и до десятого цикла код разрастётся так, что невозможно будет его переварить.
Как реализовать всё это какой нибудь красивой рекурсивной функцией (функцией класса, выделяю это потому, что классы только начал изучать и как в классе применить рекурсивную функцию - не представляю)?
А нельзя узнать какой версии php в изучении Ленгстрофа использовался?
На версии PHP 5.4.4 вроде бы нормально __autoload() работает, если ошибок нет в синтаксисе.
Вы уверены, что нет отдельного пользователя апач? Если ставили апач, то он должен быть. Называться может apache или www-data.
Посмотрите пользователей в системе
cat /etc/passw
Блин, ну как всё просто оказалось. Сразу всё обновилось.
Спасибо.
есть сервер на debian 7
пользователи:
root
user1
Установил в var\www\sitename.ru сайт на joomla 3
в настройках при установке писал данные пользователя user1
Естественно имя суперадмина joomla отличается от пользователя debian. Назовём его SuperUserJoomla.
После установки сайта не ставился языковой пакет. Вручную раздал права 777 на tmp cache language и аналогичные внутри administrator. Установилось с десятой попытки.
Далее пытаюсь установить обновление - всё-равно не хватает доступа то туда, то сюда.
В общем вернул права на все каталоги на изначальные (755).
Вычитал, что владельца у папки сайта надо рекурсивно сменить с root на user1. Сменил.
Не помогло.
Вернее написано было "найдите идентификатор пользователя Apache и выставьте рекурсивно владельца Apache на папку веб-сайта". Я подумал, что раз у меня кроме root только один пользователь, то надо его указать. Может ещё надо было что-то проделать?
В таком случае надо смотреть в консоль браузера...
ReferenceError: accordionDojo is not defined
var dojo = this;
А по поводу картинок... или не туда права дали, или не рекурсивно это сделали. Права на папку стоять могут, а на файл в папке нет...
В общем проблема с неработающим меню и нехорошими сообщениями на экране в итоге свелась к изначальной - не та версия php. Т. к. желания к старой версии возвращаться нет, то пытаюсь найти где же в скрипте аккордеон-меня код не соответствует новой версии.
Пока ничего не нашёл. Судя по ошибке в консоли - это
строка
Если откроете - увидите косяки:
1. Непонятные сообщения
Не удалось удалить 4caaeb6fbf6ceeae4d9caaf8813ce1b3 .png
Не удалось удалить 984b7c536ce8810c91193c892c815d4f .js
права на папки media, images, cache дал 777, не помогло
2. Слева должно быть меню аккордеон, оно всё развёрнуто и не работает
3. Ссылки в этом меню ведут в никуда.
Господа. Подскажите хотя бы направление решения проблемы.
Бросил в эту папку скрипт info.php с командой phpinfo(); - он срабатывает.
Index.php от joomla (ну т. е. перенёс в эту папку с другого сайта всю joomla) не открывется.
Хотя и писал в начале скрипта echo "test"; - всё равно ничего не появляется - чистый экран.
В логах apache ничего нет.
иначе просто окно закрывалось и ничего не было видно.
Однако! Ошибок никаких нет. В post передается то, что и планировалось.
(Ну не совсем то, вообще то я планировал передать не текст = "edata", а значение присвоенное переменной edata. Ну это ладно, пусть хотя бы этот текст будет в бд записан.
Теоретически всё работает. Возможно проблемы уже в скрипте saveCKEd.php
Но как его отследить, когда этот скрипт ни визуально, ни каким другим образом не отображается?
Я вначале этого скрипта включил
[quote=3d_killer]поставь Firebug и отследи уходят ли данные или какая ошибка
Каким образом вы представляете отследить с помощью Firebug'a уходят ли данные или какая ошибка?
Открылось модальное окно. Ну исследовал его файрбагом. Такой же код, что и задумывался. Всё. При нажатии на сабмит он не будет мне пошагово выполнение скрипта показывать. Просто закрывается окно, данные в родительское перелетают. В бд ничего не пишется. Никакими файрбагами эту проблему не решить.
По последнему примеру немного подправил свой код. Всё стало работать без отключения (комментирования) этой строки, но в базу так и не пишется.