PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (7): « 1 2 [3] 4 5 6 7 »

> Найдено сообщений: 94
Wooorker Отправлено: 10 Ноября, 2014 - 20:35:15 • Тема: Алгоритм проверки наличия категории • Форум: Вопросы новичков

Ответов: 2
Просмотров: 185
В магазинах, как то 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`. Ума не приложу как это можно сделать. Предполагаю что с помощью рекурсивной функции. Но как?

Скажем разбил я строку explode
PHP:
скопировать код в буфер обмена
  1.  
  2. $categories = explode("\\", $row['category']);
  3. $x = 0;
  4. foreach ($categories as $category) {
  5.  $x++;
  6. }
  7.  

ну и что это даёт?
Если перебирать с условиями, что это категория имеет paren_id =0, то переходим к следующей категории.
Если не имеет совпадений, то создаём новую с parent_id=0. В какой-то переменной запоминаем (хотя в данном случае можно и мудрить с двухмерным массивом) значение id категории первого уровня.
Далее смотрим номер цикла:
если это $x=1, то проверяем существование категории с таким уровнем; если она не существует, то создаём с parent_id =запомненному ранее значению; если она существует, то проверяем совпадает ли parent_id с запомненным ранее, если нет, то опять же создаём её, если да, то запоминаем и переходим к следующему циклу.
Т. е. это надо прописывать все if для каждого цикла. Условия умножаются в геометрической прогрессии. Очевидно это неправильный путь решения, т. к.
1) это некрасиво
2) количество категорий будет ограничено прописанными условиями и до десятого цикла код разрастётся так, что невозможно будет его переварить.

Как реализовать всё это какой нибудь красивой рекурсивной функцией (функцией класса, выделяю это потому, что классы только начал изучать и как в классе применить рекурсивную функцию - не представляю)?
Wooorker Отправлено: 21 Октября, 2014 - 20:54:24 • Тема: Не работает __autoload() • Форум: Вопросы новичков

Ответов: 9
Просмотров: 692
ilyasret пишет:
Нашел решение вот так


А нельзя узнать какой версии php в изучении Ленгстрофа использовался?
На версии PHP 5.4.4 вроде бы нормально __autoload() работает, если ошибок нет в синтаксисе.
Wooorker Отправлено: 14 Октября, 2014 - 12:27:08 • Тема: Настройка прав debian для joomla 3 • Форум: Администрирование *nix

Ответов: 2
Просмотров: 1256
Dastor пишет:
Вы уверены, что нет отдельного пользователя апач? Если ставили апач, то он должен быть. Называться может apache или www-data.
Посмотрите пользователей в системе
cat /etc/passw


Блин, ну как всё просто оказалось. Сразу всё обновилось.
Спасибо.
Wooorker Отправлено: 14 Октября, 2014 - 10:39:37 • Тема: Настройка прав debian для joomla 3 • Форум: Администрирование *nix

Ответов: 2
Просмотров: 1256
есть сервер на 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 только один пользователь, то надо его указать. Может ещё надо было что-то проделать?
Wooorker Отправлено: 13 Октября, 2014 - 10:17:22 • Тема: Не работает index.php от Joomla на debian • Форум: Apache и другие веб-серверы

Ответов: 9
Просмотров: 1373
RickMan пишет:

Цитата:
В таком случае надо смотреть в консоль браузера...
ReferenceError: accordionDojo is not defined
var dojo = this;

А по поводу картинок... или не туда права дали, или не рекурсивно это сделали. Права на папку стоять могут, а на файл в папке нет...


В общем проблема с неработающим меню и нехорошими сообщениями на экране в итоге свелась к изначальной - не та версия php. Т. к. желания к старой версии возвращаться нет, то пытаюсь найти где же в скрипте аккордеон-меня код не соответствует новой версии.

Пока ничего не нашёл. Судя по ошибке в консоли - это
строка

в нижеприведённом коде.
Но как исправить эту ошибку - ума не приложу.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // Report all PHP errors (see changelog)
  4. defined('_JEXEC') or die('Restricted access');
  5. @ini_set('memory_limit','260M');
  6. if (!extension_loaded('gd') || !function_exists('gd_info')) {
  7.     echo "The Accordion Menu needs the <a href='http://php.net/manual/en/book.image.php'>GD module</a> enabled in your PHP runtime
  8.    environment. Please consult with your System Administrator and he will
  9.    enable it!";
  10.     return;
  11. }
  12. /* For demo parameter editor */
  13. if(defined('DEMO')){
  14.    $_SESSION['module_id'] = $module->id;
  15.   if(!isset($_SESSION[$module->module.'a'][$module->id])){
  16.     $_SESSION[$module->module.'a'] = array();
  17.     $a = $params->toArray();
  18.     $a['params'] = $a;
  19.     $params->loadArray($a);
  20.     $_SESSION[$module->module."_orig"] = $params->toString();
  21.     $_SESSION[$module->module.'a'][$module->id] = true;
  22.     $_SESSION[$module->module."_params"] = $params->toString();
  23.     header('LOCATION: '.$_SERVER['REQUEST_URI']);
  24.   }
  25.   if(isset($_SESSION[$module->module."_params"])){
  26.     $params = new JRegistry();
  27.     $params->loadJSON($_SESSION[$module->module."_params"]);
  28.   }
  29.   $a = $params->toArray();
  30.   require_once(dirname(__FILE__).DS.'params'.DS.'library'.DS.'flatArray.php');
  31.   $params->loadArray(offflat_array($a['params']));
  32. }
  33. $module->navClassPrefix = 'off-nav-';
  34. $module->instanceid = 'offlajn-accordion-'.$module->id.'-1';
  35. $module->containerinstanceid = $module->instanceid.'-container';
  36.  
  37. if(version_compare(JVERSION,'1.6.0','ge')) {
  38.   require_once(dirname(__FILE__).DS.'params'.DS.'library'.DS.'flatArray.php');
  39.   $params->loadArray(offflat_array($params->toArray()));
  40. }
  41.  
  42. /*
  43. Loading the right class for the menu type
  44. */
  45. $type = preg_replace("/[^A-Za-z0-9]/", '', $params->get('menutype'));
  46. if($type == '' or !file_exists(dirname(__FILE__).DS.'types'.DS.$type.DS.'menu.php')){
  47.   echo JText::_('Menu type not exists!');
  48.   return;
  49. }
  50.  
  51. require_once(dirname(__FILE__).DS.'types'.DS.$type.DS.'menu.php');
  52.  
  53. $class = 'Offlajn'.ucfirst($type).'Menu';
  54. if(!class_exists($class)) return;
  55. $menu = new $class($module, $params);
  56. $menu->generateItems();
  57.  
  58. /*
  59. Loading the template file for the theme
  60. */
  61. $templateDir = dirname(__FILE__).DS.'template'.DS;
  62.  
  63. $theme = $params->get('theme', 'default');
  64. $tmpl = $templateDir.$theme.'.php';
  65.  
  66. if(!file_exists($tmpl)){
  67.   $tmpl = $templateDir.'default.php';
  68.   if(!file_exists($tmpl)){
  69.     echo JText::_('Template file missing for Accordion menu. Please reinstall the module.');
  70.     return;
  71.   }
  72. }
  73.  
  74. /*
  75. Loading the template container file for the theme
  76. */
  77. $containerTmpl = $templateDir.$theme.'-cont.php';
  78.  
  79. if(!file_exists($containerTmpl)){
  80.   $containerTmpl = $templateDir.'default-cont.php';
  81.   if(!file_exists($containerTmpl)){
  82.     echo JText::_('Template file missing for Accordion menu. Please reinstall the module.');
  83.     return;
  84.   }
  85. }
  86. ?>
  87. <div class="noscript">
  88. <?PHP
  89. /*
  90. Render the menu
  91. */
  92. include($containerTmpl);
  93. ?>
  94. </div>
  95. <?PHP
  96. /*
  97. Build the Javascript cache and scopes
  98. */
  99. require_once(dirname(__FILE__).DS.'classes'.DS.'cache.class.php');
  100. $cache = new OfflajnMenuThemeCache('default', $module, $params);
  101.  
  102. $document =& JFactory::getDocument();
  103. $cache->addJs(dirname(__FILE__).DS.'js'.DS.'dojo.js');
  104. $cache->addJs(dirname(__FILE__).DS.'js'.DS.'easing.js');
  105. $cache->addJs(dirname(__FILE__).DS.'js'.DS.'cookie.js');
  106. $cache->addJs(dirname(__FILE__).DS.'js'.DS.'accordionmenu.js');
  107.  
  108.  
  109. /*
  110. Build the CSS
  111. */
  112. $cache->addCss(dirname(__FILE__) .DS. 'themes' .DS. 'clear.css.php');
  113. $cache->addCss(dirname(__FILE__) .DS. 'themes' .DS. $theme .DS. 'theme.css.php');
  114.  
  115. $cache->assetsAdded();
  116.  
  117. /*
  118. Load image helper
  119. */
  120. require_once(dirname(__FILE__).DS.'classes'.DS.'ImageHelper.php');
  121.  
  122. /*
  123. Set up enviroment variables for the cache generation
  124. */
  125. $module->url = JUri::root(true).'/modules/'.$module->module.'/';
  126. $cache->addCssEnvVars('module', $module);
  127.  
  128. $cache->addCssEnvVars('helper', new OfflajnAccordionHelper7($cache->cachePath, $cache->cacheUrl));
  129.  
  130. /*
  131. Add cached contents to the document
  132. */
  133. $cacheFiles = $cache->generateCache();
  134. $document->addStyleSheet($cacheFiles[0]);
  135. $document->addStyleDeclaration('
  136. .noscript div#'.$module->instanceid.'-container dl.level1 dl{
  137.  position: static;
  138. }
  139. .noscript div#'.$module->instanceid.'-container dl.level1 dd.parent{
  140.  height: auto !important;
  141.  display: block;
  142.  visibility: visible;
  143. }
  144. ');
  145.  
  146. $script = "
  147.  accordionDojo.addOnLoad(accordionDojo, function(){
  148.    var dojo = this;
  149.    dojo.query('.noscript').removeClass('noscript');
  150.    new AccordionMenu({
  151.      node: dojo.byId('".$module->instanceid."'),
  152.      instance: '".$module->instanceid."',
  153.      classPattern: /".$module->navClassPrefix."[0-9]+/,
  154.      mode: '".$params->get( 'mode', 'onclick' )."',
  155.      interval: '".$params->get( 'duration', '500' )."',
  156.      level: 1,
  157.      easing:  ".$params->get( 'easing', 'dojo.fx.easing.cubicInOut' ).",
  158.      closeeasing:  ".$params->get( 'closeeasing', 'dojo.fx.easing.cubicInOut' ).",
  159.      accordionmode:  ".$params->get( 'accordionmode', 1 )."
  160.    })
  161.  });
  162.  ";
Wooorker Отправлено: 19 Сентября, 2014 - 09:55:50 • Тема: Не работает index.php от Joomla на debian • Форум: Apache и другие веб-серверы

Ответов: 9
Просмотров: 1373
С предыдущей проблемой решил проще - сразу joomla 2.5 поставил, т. к. всё-равно на неё переходит планируем.
Теперь сайт открывается http://141[dot]8[dot]196[dot]250/babysize[dot]ru

Если откроете - увидите косяки:
1. Непонятные сообщения
Не удалось удалить 4caaeb6fbf6ceeae4d9caaf8813ce1b3 .png
Не удалось удалить 984b7c536ce8810c91193c892c815d4f .js

права на папки media, images, cache дал 777, не помогло

2. Слева должно быть меню аккордеон, оно всё развёрнуто и не работает
3. Ссылки в этом меню ведут в никуда.

Господа. Подскажите хотя бы направление решения проблемы.
Wooorker Отправлено: 18 Сентября, 2014 - 14:30:29 • Тема: Не работает index.php от Joomla на debian • Форум: Apache и другие веб-серверы

Ответов: 9
Просмотров: 1373
RickMan пишет:
http://rusadmin[dot]biz/rukovodstva/[dot][dot][dot]5-3-na-debian-7/ - вот пример как установить php 5.3 на debian. Его скорее всего будет достаточно. И как вы себе представляете работу с двумя версиями php?


Спасибо! Буду пробовать. Хватит и одной версии, это я так - на всякий случай.
Wooorker Отправлено: 18 Сентября, 2014 - 14:09:45 • Тема: Не работает index.php от Joomla на debian • Форум: Apache и другие веб-серверы

Ответов: 9
Просмотров: 1373
RickMan пишет:
Версия джумлы и php совместимы?

Вероятно нет, раз вопрос задаётся таким образом. Т. к. php самый последний (5.4.4-14), а joomla одна из самых первых - 1,5.

Возможно ли на debian 7 поднять старый php?

И желательно чтобы новый остался Улыбка
Wooorker Отправлено: 18 Сентября, 2014 - 13:44:25 • Тема: Не работает index.php от Joomla на debian • Форум: Apache и другие веб-серверы

Ответов: 9
Просмотров: 1373
Бросил в эту папку скрипт info.php с командой phpinfo(); - он срабатывает.
Index.php от joomla (ну т. е. перенёс в эту папку с другого сайта всю joomla) не открывется.
Хотя и писал в начале скрипта echo "test"; - всё равно ничего не появляется - чистый экран.
В логах apache ничего нет.
Wooorker Отправлено: 29 Апреля, 2014 - 13:14:54 • Тема: Передача данных в MySQL из ajax • Форум: Вопросы новичков

Ответов: 17
Просмотров: 747
to 3d_killer: Спасибо, дружище! Теперь я понял как такие штуки отлаживать.
Всё заработало!
Wooorker Отправлено: 29 Апреля, 2014 - 08:12:07 • Тема: Передача данных в MySQL из ajax • Форум: Вопросы новичков

Ответов: 17
Просмотров: 747
Чтобы это увидеть пришлось закомментировать

иначе просто окно закрывалось и ничего не было видно.
Однако! Ошибок никаких нет. В post передается то, что и планировалось.
(Ну не совсем то, вообще то я планировал передать не текст = "edata", а значение присвоенное переменной edata. Ну это ладно, пусть хотя бы этот текст будет в бд записан.
Теоретически всё работает. Возможно проблемы уже в скрипте saveCKEd.php
Но как его отследить, когда этот скрипт ни визуально, ни каким другим образом не отображается?
Я вначале этого скрипта включил

- ничего не дало.
Вот эта конструкция в самом начале
PHP:
скопировать код в буфер обмена
  1. echo "<script type='text/javascript'>alert('Metka2!');</script>";

тоже не выдаёт никаких сообщений.
Wooorker Отправлено: 28 Апреля, 2014 - 23:03:27 • Тема: Передача данных в MySQL из ajax • Форум: Вопросы новичков

Ответов: 17
Просмотров: 747
[quote=3d_killer]поставь Firebug и отследи уходят ли данные или какая ошибка

Каким образом вы представляете отследить с помощью Firebug'a уходят ли данные или какая ошибка?
Открылось модальное окно. Ну исследовал его файрбагом. Такой же код, что и задумывался. Всё. При нажатии на сабмит он не будет мне пошагово выполнение скрипта показывать. Просто закрывается окно, данные в родительское перелетают. В бд ничего не пишется. Никакими файрбагами эту проблему не решить.
По последнему примеру немного подправил свой код. Всё стало работать без отключения (комментирования) этой строки, но в базу так и не пишется.

Вот так сейчас эта строчка выглядит:
PHP:
скопировать код в буфер обмена
  1. echo "$.ajax({type: 'POST', url:'saveCKEd.php', data:'pDesc='+edata+'&p_id=34031'});\n";
Wooorker Отправлено: 28 Апреля, 2014 - 20:09:50 • Тема: Передача данных в MySQL из ajax • Форум: Вопросы новичков

Ответов: 17
Просмотров: 747
Никто, что-ли, ни разу не передавал из js в mysql данные? Где в этой строчке ошибка, подскажите, пожалуйста?
Wooorker Отправлено: 28 Апреля, 2014 - 17:02:56 • Тема: Передача данных в MySQL из ajax • Форум: Вопросы новичков

Ответов: 17
Просмотров: 747
Zuldek пишет:
Wooorker пишет:

именно на этой строчке я не могу никак отловить ошибку. Поэтому прошу помощи.

Список шагов для "отлова" вам написал.


Ни о чем.
Где ошибка, я определил и написал уже.

PHP:
скопировать код в буфер обмена
  1. $.post("saveCKEd.php", {pDesc: data, p_id: '".$numStr."'});

т. к. в ajax не копенгаген, то где здесь ошибка и какая она - определить не могу
могу сказать лишь, что

приводит к аналогичному результату.
Пробывал менять
PHP:
скопировать код в буфер обмена
  1. echo "<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>";

на
PHP:
скопировать код в буфер обмена
  1. echo "<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js'></script>";

- та же проблема.

Файл saveCKEd.php лежит, естественно, в той же директории. Замена на имя любого другого скрипта ничего не даёт.
Wooorker Отправлено: 28 Апреля, 2014 - 15:39:17 • Тема: Передача данных в MySQL из ajax • Форум: Вопросы новичков

Ответов: 17
Просмотров: 747
3d_killer пишет:
с кавычками проблема, попробуй так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $.post("saveCKEd.php", {pDesc: data, p_id: '".$numStr."'});  
  3.  


Попробывал.
С кавычками по всякому пробывал. И из echo убрал, закрыв до ?> и открыв после <?
всё-равно не работает.

Страниц (7): « 1 2 [3] 4 5 6 7 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB