PHP.SU

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

Страниц (1): [1]

> Найдено сообщений: 15
Olegator Отправлено: 01 Июля, 2013 - 12:26:40 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Т.к. проблема решалась мной, то проще мне сказать. (может быть вы и имели ввиду меня, но я не совсем понял сокращение ТС ).
Проблема заключалась в самом движке, он был старый и плохо организованный. Автору темы движок достался "по наследству". Функция выводящая разделы каталога, не правильно обрабатывала данные.
Забавнее всего оказалось то, что изначально правильный код, был закомичен, а за место него, был написан новый неработающий.
Olegator Отправлено: 28 Июня, 2013 - 23:22:14 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Тему можно закрывать. Улыбка
Olegator Отправлено: 26 Июня, 2013 - 00:24:37 • Тема: Некорректно приходит тело письма • Форум: Кодировки и все смежное

Ответов: 1
Просмотров: 1170
Если возможно, выложите код с работой функции mail.
Olegator Отправлено: 25 Июня, 2013 - 17:53:45 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
В новом коде, после строки


добавьте
PHP:
скопировать код в буфер обмена
  1.  
  2. echo '<pre>';
  3. var_dump($res);
  4. echo '</pre>';
  5.  


Если снова NULL , тогда надо будет смотреть есть ли вообще такая таблица `section_site`
Olegator Отправлено: 25 Июня, 2013 - 12:47:56 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Начиная с 1494 строки, включая эту строку, пишем (т.е. посути мы заменяем запись с $ret новым блоком)

PHP:
скопировать код в буфер обмена
  1.  
  2. /*
  3. $ret = '<select name="items['.$name.']" size="'.$struct['size'].'">'.getsubsection($db,$t,$ft,$par[(string)$name],"module='".$struct->module."'").'</select>';
  4. */
  5. $sec      = $par[(string)$name];
  6. $wh       = "module='".$struct->module."'";
  7. $empty    = 0;
  8. $sep      = '&nbsp;&nbsp;';
  9. $htmlNew  = '';
  10. list ($filed,$temp) = explode('=', $t);
  11. list ($table,$_sub,$name,$caption,$fparent) = explode('|',$temp);
  12. if ($wh) {$wh = ' where '.$wh;}
  13. if ($fparent) {$_fparent = ','.$fparent;}
  14. $sql = "select $_sub,$name$_fparent from $table $wh";
  15.  
  16. /* testing ( удалить после тестирования) */
  17. echo $sql;
  18. /* end testing */
  19.  
  20. $res = $db->query($sql);
  21.  
  22. if (!$empty) {$htmlNew = '<option style="background-color:#CCCCCC" value="">'.$caption.'</option>';} else {$html = '';}
  23. if ($db->count($res)){
  24.   while ($arr = $db->fetcha()){
  25.     if ($fparent) {
  26.       if ($arr[$fparent]) {
  27.         $child[$arr[$fparent]][$arr[$_sub]] = $arr[$name];
  28.       }
  29.       else {
  30.         $parent[$arr[$_sub]] = $arr[$name];
  31.       }
  32.     }
  33.     else {
  34.       $parent[$arr[$_sub]] = $arr[$name];
  35.     }
  36.   }
  37.   while (list($key,$val) = each($parent)){
  38.     $_cnt_sec = 0;
  39.     $htmlNew .= '<option value="'.$key.'"';
  40.     if (gettype($sec) == 'array'){
  41.       if (in_array($key,$sec)) {$htmlNew .= ' selected';}
  42.     }
  43.     else {
  44.       if ($sec == $key) {$htmlNew .= ' selected';}
  45.     }
  46.     $htmlNew .= '>'.$val.'</option>';
  47.     if ($child[$key]){
  48.       $htmlNew .= suboption($key,$child,$sec,$sep);
  49.     }
  50.   }
  51. }
  52.  
  53. $ret = '<select name="items['.$name.']" size="'.$struct->size.'">'.$htmlNew.'</select>';
  54.  


После этого куска кода, в конце должно остаться


P.S. В новом куске кода, есть блока /* testing */
Напишите, что он выведет, и попробуйте запустить без него.
Olegator Отправлено: 25 Июня, 2013 - 10:36:46 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Строка 1493
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!$par[(string)$name]) {$par[(string)$name] = $getSection;}
  3. $ret = '<select name="items['.$name.']" size="'.$struct['size'].'">'.
  4. getsubsection($db,$t,$par[(string)$name],"module='".$struct->module."'").
  5. '</select>';
  6.  


убираем (string)

PHP:
скопировать код в буфер обмена
  1.  
  2. if (!$par[$name]) {$par[$name] = $getSection;}
  3. $ret = '<select name="items['.$name.']" size="'.$struct->size.'">'.
  4. getsubsection($db,$t,$par[$name],"module='".$struct->module."'").
  5. '</select>';
  6.  

(Добавление)
И повторите после этого, пож., снова echo последние
Olegator Отправлено: 25 Июня, 2013 - 09:59:44 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Да уж, явно что то не так во втором выводе, там где мы выводим $t, $par и т.д. всё верно, но вот в функцию передается каким то чудом не то что надо, давай те попробуем так
Строка 1607
PHP:
скопировать код в буфер обмена
  1.  
  2. function getsubsection(&$db,&$sub,&$sec,$wh = '',$sep = '&nbsp;&nbsp;',$empty = 0)
  3.  


Перепишем на это, т.е. я убрал знак & перед переменными, кроме $db
PHP:
скопировать код в буфер обмена
  1.  
  2. function getsubsection(&$db,$sub,$sec,$wh = '',$sep = '&nbsp;&nbsp;',$empty = 0)
  3.  


И повторите второй раз , ниже этой функции после открывающейся скобки, не дай бог из за ссылочной передачи.

PHP:
скопировать код в буфер обмена
  1.  
  2. echo $sub.' -sub <br />';
  3. echo $sec.' -sec <br />';
  4. echo $wh.' -wh <br />';
  5.  
Olegator Отправлено: 25 Июня, 2013 - 09:27:04 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Как вариант, что бы немного ускорить процесс решения проблемы, Вы можете прислать в личку свои данные для связи по скайпу / аськи / агенту. И время по мск, когда Вы доступны. Желательно, конечно, вечером.
(Добавление)
А без вставки echo и die , скрипт не выводит ошибки? Если не выводит, попробуйте написать просто одну строку die, т.е. надо понять, почему так происходит, из за какой строки.
(Добавление)
Потом, можно добавить одно echo, если проблем не будет, добавить следующие echo.
Olegator Отправлено: 25 Июня, 2013 - 09:20:35 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
da1m пишет:
Теперь давайте посмотрим что за переменные попадают в эту функцию, перед строкой 1494 добавьте такой код, пишу вместе с 1494 строкой ( т.е. добавляем echo и die)У меня в


Вы случайно не скопировали саму строку 1494 ? а то у меня там старая запись, с переменной $ft, мы ее чуть выше удаляли, а я потом забыл убрать.
Olegator Отправлено: 24 Июня, 2013 - 12:52:54 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Вы молодец, мы прошли 80% в поиске решения, у Вас формируется не правильный запрос, из за этого весь следующий код не работает, который как раз и должен выводить разделы каталога, но мне пока не удается понять, почему получается такой $sql .

Поэтому придеться еще немного поковырять, попробуем кое что поправить.
Строка 1494 ,
PHP:
скопировать код в буфер обмена
  1.  
  2. $ret = '<select name="items['.$name.']" size="'.$struct['size'].'">'.getsubsection($db,$t,$ft,$par[(string)$name],"module='".$struct->module."'").'</select>';
  3.  


Убираем переменную $ft, в вызове функции getsubsection, т.к. я не нашел больше нигде в коде упоминание этой переменной.
Должно получиться так
PHP:
скопировать код в буфер обмена
  1.  
  2. $ret = '<select name="items['.$name.']" size="'.$struct['size'].'">'.getsubsection($db,$t,$par[(string)$name],"module='".$struct->module."'").'</select>';
  3.  


Соответственно правим саму функцию getsubsection, строка 1605
Было
PHP:
скопировать код в буфер обмена
  1.  
  2. function getsubsection(&$db,&$sub,&$filed,&$sec,$wh = '',$sep = '&nbsp;&nbsp;',$empty = 0)
  3.  

Стало, мы убрали переменную &$filed
PHP:
скопировать код в буфер обмена
  1.  
  2. function getsubsection(&$db,&$sub,&$sec,$wh = '',$sep = '&nbsp;&nbsp;',$empty = 0)
  3.  


Теперь давайте посмотрим что за переменные попадают в эту функцию, перед строкой 1494 добавьте такой код, пишу вместе с 1494 строкой ( т.е. добавляем echo и die)
PHP:
скопировать код в буфер обмена
  1.  
  2. echo $db.' -db<br />';
  3. echo $t.' -t<br />';
  4. echo $par[(string)$name].' -par[name]<br />';
  5. echo $struct->module.' -module<br />';
  6.  
  7. $ret = '<select name="items['.$name.']" size="'.$struct['size'].'">'.getsubsection($db,$t,$ft,$par[(string)$name],"module='".$struct->module."'").'</select>';
  8.  


Смотрим что выводит.
Затем после 1606 строки (т.е. после открывающейся фигурной скобки) выводим переменные, т.е. получиться примерно так
PHP:
скопировать код в буфер обмена
  1.  
  2. function getsubsection(&$db,&$sub,&$sec,$wh = '',$sep = '&nbsp;&nbsp;',$empty = 0)
  3. {
  4. echo $db.' - db <br />';
  5. echo $sub.' -sub <br />';
  6. echo $sec.' -sec <br />';
  7. echo $wh.' -wh <br />';
  8.  

Выполнять надо не всё сразу, а поочередно, сначало одно затем другое.
Olegator Отправлено: 23 Июня, 2013 - 14:29:18 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
В последнем посте, где вы вложили файл с функцией create_input
В этой же функции найдите участок кода ( у меня это он начитается с 1488 строки)
PHP:
скопировать код в буфер обмена
  1.  
  2. case 'subselect':
  3. if ($par[$name]) {$temp = explode(',',$par[$name]);} else {$temp = array();}
  4. list($_value_,$_option_) = @explode(',',$struct->sfileds,2);
  5.  
  6. $t = 'a='.$struct->db.'|'.$_value_.'|'.$_option_.'||parent';
  7. if (!$par[(string)$name]) {$par[(string)$name] = $getSection;}
  8. $ret = '<select name="items['.$name.']" size="'.$struct['size'].'">'.
  9.            getsubsection($db,$t,$ft,$par[(string)$name],"module='".$struct->module."'").'
  10.        </select>';
  11.  
  12. return $ret;
  13. break;
  14.  

во-первых, поменяйте $struct['size'] на $struct->size (1494 строка), если я правильно понял какой size тут нужен.
Затем найдите функцию getsubsection , она идет чуть ниже
PHP:
скопировать код в буфер обмена
  1.  
  2. $sql = "select $_sub,$name$_fparent from $table $wh";
  3.  

у меня это строка 1613
Попробуем вывести $sql, можно записать эти строки ниже
PHP:
скопировать код в буфер обмена
  1.  
  2. echo $sql.'<br />';
  3. echo '<pre>';
  4. var_dump($res);
  5. echo '</pre>';
  6.  
Olegator Отправлено: 22 Июня, 2013 - 13:34:46 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Судя по коду с 99 строки, select формируется, но не получает данные.
Хорошо бы получить доступ к функции create_input ( строка 249 из первого спойлера ).

И еще в самом первом спойлере, 16 строка пустая, начиная с нее попробуйте написать так
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. echo '<pre>';
  3. var_dump($Osetting);
  4. echo '</pre>';
  5. die;
  6.  

И еще хорошо бы посмотреть сам xml файл, если не известно какой именно подключается, то напишите так с 16 строки
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. echo $home_dir_lib."/admin/setting_module/$getMod.xml";
  3.  

пройдите по этому пути, и выложите этот файл, если возможно.
Olegator Отправлено: 22 Июня, 2013 - 10:19:40 • Тема: Помощь по сайту • Форум: HTTP и PHP

Ответов: 22
Просмотров: 4296
Судя по скриншоту , вывод разделов каталога, начинается с 239 строчки из 1го кода, попробуйте использовать echo или var_dump, что бы проверить переменные или результат работы метода или условия, не самый быстрый способ, но в итоге можно обнаружить проблему.

В Вашем фаербаге, выделен тег td, поднимитесь чуть выше, и выберите тег table, и выложите его html код ( правой кнопкой мышки по тегу -> там будет копирование html ), попробуем сравнить с вашим "шаблоном". Улыбка
Olegator Отправлено: 21 Июня, 2013 - 00:14:35 • Тема: Как продлить header? • Форум: HTML, Дизайн & CSS

Ответов: 5
Просмотров: 1293
На представленном скриншоте указан адрес сайта http://viva-kg.ru/, переходим на сайт, смотрим через веб инспектор.
DelphinPRO пишет:
У меня footer продолжается до краев страницы, а header нет. (подробнее на скрине), как сделать, чтобы header так-же как и Footer, продолжался?

1 вариант: вынести блок с id="header" из блока id="wrapper" (обратите внимание что Ваш header и footer имеет разный уровень вложенности относительно body)
Данный вариант не совсем правильный, так как центральная часть не вписывается в дизайн сайта.
2 вариант: удалите у блока id="wrapper" свойство max-width: 1270px; (согласно инспектору с 91 строки в таблице стилей).
3 вариант: объедините 1 и 2 вариант.
4 вариант: поместить блок с id="footer" внутрь блока id="wrapper".
На мой взгляд это наиболее правильное решение, т.к. варианты изложенные выше в результате растягивают весь сайт по ширине экрана, и на экранах с большим разрешением выглядеть будет плохо. И мало вероятно что так задумал дизайнер. Скорее всего блок footer просто случайно вытащили из wrapper. Улыбка
Olegator Отправлено: 18 Июня, 2013 - 20:52:28 • Тема: расстояние между элементами списка • Форум: HTML, Дизайн & CSS

Ответов: 9
Просмотров: 2822
Попробуйте добавить float:left; для li.
Было : http://jsfiddle[dot]net/4krxr/2/
Стало: http://jsfiddle[dot]net/4krxr/3/
Улыбка

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB