Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Помогите пожалуйста с Гостевой Книгой


Автор: korob2001 19.3.2003, 11:03
Написал гостевую, только вот ума не приложу как сделать что-бы на странице было только 10 сообщений, при вводе 11-го, гостевая должна генерить вторую страничку и сдвигать на неё самое первое сообщение, и т.д. При этом на первой страничке должна появиться ссылка на вторую и наоборот.

Подскажите принцип (подтолкните), мне нужно понять а не скопировать код.

Гостевая тута: http://www.denstelen.hop.ru/cgi-bin/nguest/guest_dsl.pl

Заранее благодарен,
korob2001

Автор: HalkaR 19.3.2003, 22:44
Ты базу тестовую или SQL используешь?
Если SQL то просто отсортировать по значению времени в нужном порядке и выводить первые 10. А если тествую, то записывать в файл не дописывать, а в начало засовывать, тогда рабоать удобнее. А если дописывать, то ивертировать массив, или чо ты там используешь.

З.Е. Если уж просишь помочь, то исходник показывай. И еще называть функцию F#ckContext() как минимум не очень красиво.

Автор: Foxx 19.3.2003, 22:54
Я сделал аналогичное на PHP, если разберешься в коде- могу скинуть.

Автор: korob2001 20.3.2003, 01:48
To HalkaR
Я Perl изучаю только 3-4 месяца, потому до баз данных ещё не дошёл. В этой гостевой все данные хранятся в DBM-файле. Могу прислать исходник. Мне главное сейчас понять принцип.

Цитата

З.Е. Если уж просишь помочь, то исходник показывай. И еще называть функцию F#ckContext() как минимум не очень красиво.

smile.gif

Автор: korob2001 20.3.2003, 01:53
To Foxx

Кидай, попробую хотя и с PHP не знаком. С PHP кодом приходилось сталкиваться.
Сегодня установлю асю, а то я в последнее время в MSN зависаю.

Автор: HalkaR 20.3.2003, 02:23
to korob2001
Кинь мне на мыло - я посмотрю.

Автор: korob2001 20.3.2003, 02:34
To HalkaR
Только что кинул. Лови

Автор: HalkaR 20.3.2003, 06:03
Посмотрел. Во-первых скрипт должен иметь возможность получать параметр - номер страницы. Для первой страницы не обязательно, но для остальных надо.
А как вывод можно сделать так. Вот эту часть
Код
GET_FLOCK();
    dbmopen (%SHOW, $DBM_DATA, 0600) or die "Не могу открыть файл базы данных: $!";
    foreach (reverse sort {$a <=> $b} keys %SHOW) {
Надо заменить на
Код
$i = 0;
if($num){for ($i=1; $i++; ($i<=10*$num)&&(($key, $value) = each (%SHOW))){}}
for ($j=$i+1; $j++; ($j<=$i+11)&&(($key, $value) = each (%SHOW))){}
Где $num это номер страницы. В принципе должно работать.

Автор: HalkaR 20.3.2003, 06:05
Кстати, у меня твой скрипт ни на первом, ни на втором Апаче так и не запустился.

Автор: korob2001 20.3.2003, 11:18
Помоему я начал хавать каким образом передаются параметры Perl скрипту. Дело в том что я раньше никогда не передавал их таким образом, только через формы.

Цитата

Кстати, у меня твой скрипт ни на первом, ни на втором Апаче так и не запустился.


Странно, у меня правда не Апач, а Xitami. Хотя на сервере где лежит пример установлен Апач confused.gif

Автор: HalkaR 21.3.2003, 03:30
Так если проблема в этом, то если параметры передаются не из формы, то можно делать так
Код
Адерес/script.pl?paramet=value
Теперь получить это можно так
Код
use CGI;#стандартный модуль
$q = CGI -> new;
$num = $q -> param('parametr');
Теперь у тея в переменной $num - значение value.

Автор: korob2001 21.3.2003, 05:21
Всё понятно, не понятна одна строка:
$q = CGI -> new;
Что она означает?

Я вчера пробовал таким способом:
Код

#!/usr/bin/perl
use CGI qw( :all );
use strict;

my $num = param('id');
my $url = "http://sleep/cgi-bin/param/test2.pl?";
my %hash = (
                      1 => "id=1",
                      2 => "id=2",
                      3 => "id=3",
);

my %hash_param = (
                                  1 => "<center><img src='1.gif'></center>",
                                  2 => "<center><img src='2.gif'></center>",
                                  3 => "<center><img src='3.gif'></center>",
);

foreach (sort {$a <=> $b} keys %hash) {
   print "  <a href=$url$hash{$_}>$_</a>";
}

print "$hash_param{$num}";

Тоже получилось hehe.gif

Автор: HalkaR 21.3.2003, 06:22
Код
$q = CGI -> new;
Просто CGI можно использовать и с обьектно-ориентированным интерфейсом и без. Я предпочитаю с ООП, так как сам модуль ОО, то теоретически это должно быть поудобнее и побыстрее.
А этой строкой я создаю обьект CGI.
Что такое ООП я обьяснять не буду: если знаешь, то не надо, а не знаешь - я не обьясню. smile.gif

Автор: korob2001 21.3.2003, 12:36
Цитата

Что такое ООП я обьяснять не буду: если знаешь, то не надо, а не знаешь - я не обьясню.


smile.gif

Модуль ОО - сам модуль является Объектно Ореентированным.
ООП - объектно ореентированное программирование, ещё говорят - Объектно Ореентированный Подход. rolleyes.gif

Правда в Perl я ещё не проходил ООП, а вот в JavaScript я знаю что это такое.

Большое тебе спасибо HalkaR

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)