Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Max                                  2:5020/400     28 Oct 2000  21:32:07
 To : All
 Subject : Re: ПОЧЕМУ????
 -------------------------------------------------------------------------------- 
 
 А переменные $sth в функции view_auth почему локальной не объявил ?
 "Konstantin Maslennikov" <kosmas@mail.wplus.net> wrote in message
 news:8t64qm$n72$1@news.wplus.spb.ru...
 
 > Привет всем!
 >
 > Я тут решил потихоньку осваивать БД.... :)
 > И что-то заткнулся на простой в общем-то задаче...
 > Вот кусок скрипта:
 >
 > #Вызываем подпрограмму 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: Rostelecom/Internet Centre (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 ПОЧЕМУ????   Konstantin Maslennikov   25 Oct 2000 12:17:11 
 Re: ПОЧЕМУ????   Max   28 Oct 2000 21:32:07 
Архивное /ru.cgi.perl/34957d447f68.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional