|
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
|