Перейти к содержимому

Реферальная программа Мегаплана

Выбрать шаблон и создать сайт

ПОМОГИТЕ!!! (сайт html+perl+myadmin)

#1 kocmocivan

kocmocivan
  • Пользователь
  • 99 сообщений
  • Репутация: 0
0

Отправлено 10 Июль 2009 - 08:56

Здравствуйте.
Описание проблемы будет длиннное и подробное. (большая просьба помоч, кто чем может)
Работаю в компании и тут решился взяться за сайт, который в основе написан на perl (сам с perl не связывался до этого, только php,html).
сайт - www.decotec.ru
Как написал из темы:
1)основной код написан на perl
2)страницы написаны на html
3)база данных -PHP MyAdmin
Основная задача - доваление новостей и добавление нового списка товаров.
Возникло 3 проблемы с его наполнением.
1) ПРи заходе в админку сайта, для добавления или редактирования чеголибо когда нажимаешь одно из любых гиперсылок идет ошибка 500...
файл - .HTACCESS немного подправил получилось следующее:
DirectoryIndex index.pl
Options +ExecCGI
RewriteEngine Off
AddHandler server-parsed .shtml .shtm .htm .html
AddHandler cgi-script .pl
AddHandler cgi-script .cgi
AddHandler cgi-script .phtml
Все файлы и папки вроде как поставил под доступ 755 (тоже в инете инфу искал по исправлению ошибки 500)...
В некоторых скриптах по perl так где идет print.... добавил где было одна "\n" еще одну, чтобы заканчивалось двумя "\n\n" (тоже где то вычитал на форуме, сам лично не знаю что это такое и зачто отвечает).
В итоге ничего не получилось... И теперь почему то в саму админку не заходит вообще, т.е. ввожу лог и пас нажимаю вход и ничего не происходит и заного запускается ввод логина и пасса...
Решил пробовать добавлять через MyADMIN (делаю все с точностью как предыдущие)...
Там идет перечень продукции по принципу раскрывающегося меню.
В MyAdmine стоит 2 лвл (включая нулевой).
0 лвл - заглавное (основное) меню выбора (производитель)
1 лвл - второстипенное меню ("модель")
2 лвл - изображение

Так вот, по подобию предыдущих всей продукции идет следующим образом:
сначало вставляется нулевое название (которому присваивается ID и Parent + нулейвой лвл)
потом создается новый раздел , вложенный в предыдущий (ID берется любое, а Parent берется из ID основного + 1 лвл)
получается "папка с вложенной в неё еще одной"
Дальше создается еще 1 раздел - который и является картинкой (ID берется любое,а Parent берется из ID второго раздела + 2 лвл и + ссылка на изображение, путь...)
Потом если необходимо отобрахзить сразу несколько изображений 3-ее действие повторяется, где меняется только ID и ссылка на изображение.
И все работает!

Когда же я начал повторять все те же шаги... у меня не отображается картинка после третьего шага. Отображение картинки идет только если убрать 2-ой лвл (3-ее действие) и вставить картинку на втором действии... И все бы замечательно, но мне нужна не 1 картинка, а несколько... а добиться их размещения во второй папке можно только если сделать 3-ий лвл + 3-ее действие. В противном случае он создает еще 1 раздел с другой картинкой.
На одном форуме мне сказали , после просмотра скринов из myadmin, что все нормально с базой данной и надо:
ЦИТИРУЮ: "В скрипте, который отвечает за вывод страницы, надо смотреть SQL запрос и условие вывода. Возможно, строк должно быть более двух, или еще что-то. Надо смотреть в скрипте. В БД проблем нет."
"Надо найти формирование SQL запроса и посмотреть каким образом это делается. Ищите SELECT."


if ($data{fid} == 0)
{
my $outp = $outf = $outpc = $outfc = "";

if ($lvl<3) #if not last level
{
######### categories listing
my $query = "select * from $ptb where parent='$data{catalog}' order by title";
my $sth = $dbh->prepare($query);
$sth->execute;
while (@R = $sth->fetchrow_array)
{
$outp .= &format1("list",$prod_list,$R[0],$data{fid},$R[2]);
}
$sth->finish;

######### firm listing
# my $query = "select * from $ftb as f join $fprtb as p join $ptb as c where f.id=p.firm_id and c.parent='$data{catalog}' and c.id=p.item_id order by firm_name";
my $query = "select * from $ftb";
my $sth = $dbh->prepare($query);
$sth->execute;
my $fname = "";
while (@R = $sth->fetchrow_array)
{
if ($fname !~ /$R[1]/)
{
$fname .= "#".$R[1]."#";
$outf .= &format1("listf",$firm_list,$data{catalog},$R[0],$R[1]);
}
}
$sth->finish;
}
ЭТО ?
Файл называется admcatalog.pm в папке admin

Честно говоря нипонял НИЧЕГО, что надо сделать...

ПОМОГИТЕ ПОЖАЛУЙСТА! А ТО МЕНЯ УДАВИТ НАЧАЛЬСТВО...

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 10 Июль 2009 - 13:30

kocmocivan, попробую расписать, хоть сам с perl не работал. Хотя ваша проблема скорее всего в запросе на вывод. И так:
когда нажимаешь одно из любых гиперсылок идет ошибка 500...
Ошибка 500 это ошибка в работе сервера. То есть возможно серверу передаётся информация, которую он не может правильно воспринимать. Или к примеру файл .htaccess нарушает обработку своей неправильной записью.
Если у вас есть предыдущий вариант файла, можете показать его, а мы попробуем разобраться
И ещё попробовали бы написать в одну строку
AddHandler cgi-script .pl
AddHandler cgi-script .cgi
AddHandler cgi-script .phtml
Иначе воспринимается только последняя. Напишите так:
AddHandler cgi-script .pl .cgi .phtml

Все файлы и папки вроде как поставил под доступ 755

Это-то зачем? Теперь права на все файлы такие:
755
Владелец имеет право на чтение, запись, выполнение.
Группа имеет право на чтение, выполнение.
Остальные имеют прво на чтение, выполнение.

* 400 — владелец имеет право на чтение;
* 200 — владелец имеет право на запись;
* 100 — владелец имеет право на выполнение;
* 40 — группа имеет право на чтение;
* 20 — группа имеет право на запись;
* 10 — группа имеет право на выполнение;
* 4 — остальные имеют право на чтение;
* 2 — остальные имеют право на запись;
* 1 — остальные имеют право на выполнение.


В некоторых скриптах по perl так где идет print.... добавил где было одна "\n" еще одну, чтобы заканчивалось двумя "\n\n" (тоже где то вычитал на форуме, сам лично не знаю что это такое и зачто отвечает).

\n - это символ перехода на новую строку в сочетании с символом перевода каретки: \r\n
В perl достаточно писпть \n для перехода на новую строку. Вообще сколько бы вы переходов на новую строку не ставили, большой роли это не сыграет(если конечно вы где-нибудь в заголовках не изменили)
Попробуйте убрать добавленные вами ранее лишние \n

На одном форуме мне сказали , после просмотра скринов из myadmin, что все нормально с базой данной и надо:
Мы не видели БД и не знаем как идёт связка, хоть вы и расписали подробно, но хотелось бы увидеть скрин обзора данных, чтобы там были включены уровни с 0 по 3. Я так понимаю всё это находится в одной таблице? Или я ошибаюсь?

Далее:
if ($lvl<3) #if not last level
Сообщает нам, что код будет выполняться, если выбран не последний уровень.
######### firm listing
сообщает нам, что ниже идёт считывание листинга фирм
my $query = "select * from $ftb";
сообщает нам, что из таблицы с именем из переменной $ftb нужно выбрать все записи(без условия) со всеми полями.
format1("listf",$firm_list,$data{catalog},$R[0],$R[1])
Это пользовательская функция, которая и создаёт листинг, в ней и надо копаться. Вообще структура неудобная... Базы данных для того и созданы, чтобы структурировать данные по таблицам.

Скажите, а раньше была возможность одному разделу присваивать 3 картинки? Если нет, то всё понятно, код PERL по д это не рассчитан, всё кроется в функции format1.
  • 0

#3 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 10 Июль 2009 - 14:36

Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
  • 0

#4 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 10 Июль 2009 - 14:38

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

Теперь еще 1 ошибка при вводе логина и пароля для входа в админку пишет - Internal Server Error (я так понимаю это так же ошибка 500)...
ЧТО ДЕЛАТЬ? :)

Нашел файл , который отвечает за добавление через MyAdmin.
он большой, если у кого есть возможность помоч в коде и найти причину почему не добавляется нормально размещу весь код...
ПЛИЗ ;)
  • 0

#5 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 10 Июль 2009 - 16:58

ВОпрос по добавлению через MyAdmin Решил - все добавляется и т.д. правда геморойней ежели бы через АДМИНКУ...
ПОэтому вопрос остался один - КАК СДЕЛАТЬ АДМИНКУ???
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Июль 2009 - 15:50

kocmocivan, ты выполнил все действия которые я ебе сказал?
1) Напишите так в .htaccess:
AddHandler cgi-script .pl .cgi .phtml

2) Попробуйте убрать добавленные вами ранее лишние \n
Я считаю, чо вы случайно изменили передающиеся заголовки, а серверу важно, как сформированы заголовки. Поэтому он может выводить ошибку, типа данные приходящие к нему сформированы не верно и он их обработаь не может. У вас не сохранились файлы в старом формате, которые вы меняли? Стоит их обратно заменить, а потом уже что-то решать.

Вот почитайте, корее всего ваш случай:

Обычно в Perl (в PHP синтаксис другой но идея та же) вывод из скрипта на веб-страницу осуществляется таким образом:

print "Content-type: text/html\n\n"; 
print "Hello world!";
.....

ВНИМАНИЕ
Если добавить эти заголовки при выдаче в Apache, в определенных случаях (а возможно всегда) вылетает ошибка выполнения.

Последние слова твердят истину. Вам надо разобраться как правильно выводить заголовки, тогда всё заработает. Ошибка 500 как раз ошибка выполнения(ошибка сервера)

Ссылка на статью
Если что IIS и Apache этодва различных сервера.
  • 0


Оформление форума – IPBSkins.ru