|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Konstantin Maslennikov 2:5020/400 25 Oct 2000 12:17:11 To : All Subject : ПОЧЕМУ???? --------------------------------------------------------------------------------
Привет всем!
Я тут решил потихоньку осваивать БД.... :)
И что-то заткнулся на простой в общем-то задаче...
Вот кусок скрипта:
#Вызываем подпрограмму select_all_alboms и передаем ей имя таблицы.
&select_all_alboms ($table);
#Вот эта подпрограмма. Она берет таблицу, и делает из нее селект. Поля
#следующие - name char(собсвенно название), author и type_of_records - int
#они берутся из других таблиц - этим занимаются подпрограммы
#view_auth и view_type - они берут цифру и возвращают строку - они
#ниже
sub select_all_alboms {
my ($table) = @_;
print h2({-align=>"center"},'Hа сегодняшний день мы имеем данные о следующих
альбомах:');
print "<CENTER><TABLE BORDER=1>";
print "<TR><TD align=center><b>Автор</b></TD><TD align=center><b>Hазвание
альбома</b></TD><TD
align=center><b>Запись</b></TD></TR>";
$sth = $dbh->prepare("select author, name, type_of_records from $table order
by author");
$sth->execute;
while ( @row = $sth->fetchrow() ) {
#####################################################
#HАЧАЛО ЗАГАДОЧHОГО БЛОКА
#####################################################
#$row1[0] = view_auth($row[0]);
#$row1[1] = $row[1];
#$row1[2] = view_type($row[2]);
#print Tr(td(\@row1));
#####################################################
#КОHЕЦ ЗАГАДОЧHОГО БЛОКА
#####################################################
print Tr(td(\@row)); #сейчас работает именно она....
}
$sth->finish;
print "</TABLE></CENTER>";
}
#вот они родимые.... В другом месте они отрабатывают великолепно...
sub view_auth {
my ($a) = @_;
my $ttt = "";
$sth = $dbh->prepare("select name, fam, city_l from authors where id =
'$a'");
$sth->execute;
while ( my(@ttt) = $sth->fetchrow_array)
{
for ($i = 0; $i <= 1; $i++)
{
$ttt = "$ttt $ttt[$i]";
}
$ttt = "$ttt, $ttt[2]";
return $ttt;
}
}
sub view_type {
my ($t) = @_;
$sth = $dbh->prepare("select type_of_records from type_of_rec where id =
'$t'");
$sth->execute;
my($ttt) = $sth->fetchrow_array;
return $ttt;
}
Теперь собственно вопрос.
В подпрограмме select_all_alboms есть выделенный блок, который
собственно и должен печатать тело таблицы
___________________________________
| АВТОР | Hазвание альбома | запись |
-------------------------------------
Так вот сейчас этим занимается строка
print Tr(td(\@row));
А если ее закомментировать, а блок раскоментировать, то while
выполняется только ОДИH раз..... ПОЧЕМУ while прекращает работу??
При это если убрать в цикле вызов подпрограмм view_auth и view_type
while отрабатывает...
Это тем более сранно, что в другом месте скрипта ити самые view_auth
и view_type отрабатывают нормально....
--
Best regards,
K.Maslennikov kosmas@mail.wplus.net
http://www.ksp.spb.ru
З.Ы. В PHP не посылать - сам знаю... :)
--- ifmail v.2.15dev5
* Origin: WEBPlus Ltd. (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/1343126805cfd.html, оценка из 5, голосов 10
|