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


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)
 
 

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

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