X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> ПОМОГИТЕ! (сайт html+perl+myadmin), Нужна помощь.
kocmocivan_mw
kocmocivan_mw
Topic Starter сообщение 10.7.2009, 9:56; Ответить: kocmocivan_mw
Сообщение #1


Здравствуйте.
Описание проблемы будет длиннное и подробное. (большая просьба помоч, кто чем может)
Работаю в компании и тут решился взяться за сайт, который в основе написан на 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
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 10.7.2009, 14:30; Ответить: ZiTosS
Сообщение #2


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.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
kocmocivan_mw
kocmocivan_mw
Topic Starter сообщение 10.7.2009, 15:36; Ответить: kocmocivan_mw
Сообщение #3


[img]http://www.imageup.ru/img40/1_thumb160327.jpg[/img]
[img]http://www.imageup.ru/img40/7_thumb160333.jpg[/img]
[img]http://www.imageup.ru/img40/3_thumb160329.jpg[/img]
[img]http://www.imageup.ru/img40/4_thumb160330.jpg[/img]
[img]http://www.imageup.ru/img40/5_thumb160331.jpg[/img]
[img]http://www.imageup.ru/img40/6_thumb160332.jpg[/img]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
kocmocivan_mw
kocmocivan_mw
Topic Starter сообщение 10.7.2009, 15:38; Ответить: kocmocivan_mw
Сообщение #4


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

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

Нашел файл , который отвечает за добавление через MyAdmin.
он большой, если у кого есть возможность помоч в коде и найти причину почему не добавляется нормально размещу весь код...
ПЛИЗ ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
kocmocivan_mw
kocmocivan_mw
Topic Starter сообщение 10.7.2009, 17:58; Ответить: kocmocivan_mw
Сообщение #5


ВОпрос по добавлению через MyAdmin Решил - все добавляется и т.д. правда геморойней ежели бы через АДМИНКУ...
ПОэтому вопрос остался один - КАК СДЕЛАТЬ АДМИНКУ???
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 11.7.2009, 16:50; Ответить: ZiTosS
Сообщение #6


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 этодва различных сервера.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Ваш сайт блокирует Роскомнадзор?
27 hollywooduk 5707 Вчера, 0:19
автор: Omaxis
Открытая тема (нет новых ответов) Прототипирование + дизайн + вёрстка = красивый и эффективный сайт под ключ
0 bunneh 277 16.4.2024, 18:02
автор: bunneh
Открытая тема (нет новых ответов) Если в сайт с одними ключами, которые там долго, добавить новую рубрику с новыми ключами
2 Tutich 1134 16.4.2024, 8:27
автор: Tutich
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлы[Услуги] Баннер/Графика/Сайт
240 FillPlay 180498 31.3.2024, 22:58
автор: FillPlay
Горячая тема (нет новых ответов) Вёрстка HTML-писем
30 Vampler 29346 27.3.2024, 12:41
автор: Vampler


 



RSS Текстовая версия Сейчас: 18.4.2024, 12:05
Дизайн