Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

чтение данных из БД в perl

373
13 апреля 2007 года
unmoved
216 / / 28.11.2004
есть такое код:
 
Код:
my $sth = $dbh->prepare(q{select servicename from services_list});
$sth->execute();   
my @buf_arr = $sth->fetchrow_array;
my $pointer = \ @buf_arr;
my $bufer = '<TR><TD>'.$msg[1].'</TD><TD>'.scrolling_list(-name=>'recommended_service',
                -values=> $pointer,
                -size=>1,
                -multiple=>0).'<TD></TR>';
$sth->finish();
funclocal::print_result_end($bufer);

Тут все просто читается данные из таблицы и помещаются в select(html). Вот только проблема попадает в select(html) только первая строчка выборки. Как сделать так что б вся выборка туда угодила?
92
13 апреля 2007 года
Тень Пса
2.2K / / 19.10.2006
вроде бы так, на вскидку. если память не изменяет...

Код:
my $sth = $dbh->prepare(q{select servicename from services_list});
$sth->execute();   
my $bufer;
my @buf_arr;

while (@buf_arr = $sth->fetchrow_array) {
    my $pointer = \ @buf_arr;
    $bufer .= '<TR><TD>'.$msg[1].'</TD><TD>'.scrolling_list(-name=>'recommended_service',
                -values=> $pointer,
                -size=>1,
                -multiple=>0).'<TD></TR>';
  }
$sth->finish();
funclocal::print_result_end($bufer);
373
13 апреля 2007 года
unmoved
216 / / 28.11.2004
этот код наплодит этих селектов столько сколько записей в таблице. Можно конечно взять массив и сформировать новый массив:

my @byfer; my $counter = 0;
while (my $str_hash = $sth->fetchrow_hashref())
{
@byfer[$counter] = $str_hash->{'servicename'};
$counter++;
}

полученный массив можно будет передать в формовку и все в шеколаде будет, наверное, но это какой то тупой код если честно, должен быть более просто способ.
92
13 апреля 2007 года
Тень Пса
2.2K / / 19.10.2006
ты мануал не пробовал читать??? этот код будет тебе возвращать поэлементно всё из твоей выборки.

попробуй прежде чем говорить, и я бы на твоём месте воздержался от резких высказываний, ок?

ЗЫ: и для ОСОБО умных $dbh->selectall_arrayref($statement);

ЗЗЫ: короче, иди в ман
373
13 апреля 2007 года
unmoved
216 / / 28.11.2004
Цитата: Тень Пса
ты мануал не пробовал читать??? этот код будет тебе возвращать поэлементно всё из твоей выборки.

попробуй прежде чем говорить, и я бы на твоём месте воздержался от резких высказываний, ок?

ЗЫ: и для ОСОБО умных $dbh->selectall_arrayref($statement);

ЗЗЫ: короче, иди в ман



Я не хотел Вас обидеть, но этот код действительно нарисует несколько select на странице, так как в цикле он будет его рисовать, то есть на каждую этэрацию(то есть запись выборки) будет свой select.

92
13 апреля 2007 года
Тень Пса
2.2K / / 19.10.2006
а, ты про select-элементы...
извиняюсь, я подумал о запросах.

щаз сообразим...

вот так попробуй, должно получиться.

Код:
my $sth = $dbh->prepare(q{select servicename from services_list});
$sth->execute();   
my @buf_arr;
my @result;

while (@buf_arr = $sth->fetchrow_array) {
    push @result, @buf_arr; # просто добавляем массив полученных значений в результирующий массив и сё :)
}

my $bufer = '<TR><TD>'.$msg[1].'</TD><TD>'.scrolling_list(-name=>'recommended_service',
                -values=> \@result,
                -size=>1,
                -multiple=>0).'<TD></TR>';
$sth->finish();
funclocal::print_result_end($bufer);
373
13 апреля 2007 года
unmoved
216 / / 28.11.2004
Спасибо!!!
92
13 апреля 2007 года
Тень Пса
2.2K / / 19.10.2006
подмогло???? ну и хорошо! :) юзАй на здоровье ;)

если возникнут проблемы с перловыми модулями, первым делом дуй на search.cpan.org там ищи модуль и читай, по DBI, например, там суперподробная справка )
300
13 апреля 2007 года
ReDrum
689 / / 20.04.2000
Цитата: Тень Пса
подмогло???? ну и хорошо! :) юзАй на здоровье ;)

если возникнут проблемы с перловыми модулями, первым делом дуй на search.cpan.org там ищи модуль и читай, по DBI, например, там суперподробная справка )



Дело вкуса, конечно же, но среди всего многообразия пакетов для работы с базами больше всего нравитца Class::DBI http://search.cpan.org/~tmtm/Class-DBI-v3.0.16/lib/Class/DBI.pm

2
13 апреля 2007 года
squirL
5.6K / / 13.08.2003
удивительно... но и мне тоже :)
239
13 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
Расскажете начинающему перлисту - почему? :)
92
13 апреля 2007 года
Тень Пса
2.2K / / 19.10.2006
не знаю... год назад написал модуль с использованием DBI и как-то вообще голову не грею по этому поводу... ибо просто пользую этот модуль с функциями Exec, Select, SelectOne, ну и тд.... )

как-то не заморачивался особо на эту тему )
300
14 апреля 2007 года
ReDrum
689 / / 20.04.2000
Цитата: Dolonet
Расскажете начинающему перлисту - почему? :)


удобно тем что не приходится заморачиваться на всякие "низкоуровневые" примочки аля создание хендлера, подготовки запроса, проверки подготовки запроса, исполнения запроса, проверки исполнения запроса, копирования полученного массива в поля рабочего объекта. Собственно. зачем тратить время на изобретения еще одного велосипеда, когда он уже готов и неплохо ездит ;)= Т.е. как пример использования.
Есть задача - нужно обрабатывать две сущности, связанные отношением один ко многим. Страны -> Города. При помощи этого пакета, ты работаешь с объектом Страна как обычно, ты можешь попросить у него "дай список городов"

 
Код:
my @cities = $country->cities();


вместо того что бы, переписывать однотипный код аля
 
Код:
my $dbh = DatabaseConnection.getInstance();
my $sht = $dbh->prepare(qq/select * from city where country_id = ?/);
die "cant prepare" unless $sth;

$sth->execute() || die "can't execute"

for ( ) {
.....
}


Ну и вообще, писать тесты для такое кода - одно удовольствие :)=
239
14 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
Звучит убедительно, спасибо :)

Тень Пса, а твой модуль чем отличается от описанного ReDrum?
92
16 апреля 2007 года
Тень Пса
2.2K / / 19.10.2006
собссна толком то и ничем. опять же
Цитата:

удобно тем что не приходится заморачиваться на всякие "низкоуровневые" примочки аля создание хендлера, подготовки запроса, проверки подготовки запроса, исполнения запроса, проверки исполнения запроса, копирования полученного массива в поля рабочего объекта

239
16 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
Гм. Осталось понять, какой модуль лучше использовать. :)
И вообще, где можно найти рекомендации по поводу набора пакетов для программирования того или иного?
92
17 апреля 2007 года
Тень Пса
2.2K / / 19.10.2006
на самом деле могу сказать одно: "кому что больше нравится"

мне например кроме 5ти ф-й из написанного модуля ну вооообще ничего порой не надо ) селект, екзекут =) ну и тд ) вот я и пользую... ни разу еще не задумался о том, чтобы переписать... вроде пока все устраивает...

опять же, в зависимости от задач. базовые функции реализовализованы... так что пока что жаловаться не на что )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог