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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/371.32  25 Oct 2000  18:17:12
 To : kosmas@mail.wplus.net
 Subject : Re: ПОЧЕМУ???
 -------------------------------------------------------------------------------- 
 
 kmwn> From: "Konstantin Maslennikov" <kosmas@mail.wplus.net>
 
 kmwn> Привет всем!
 
 kmwn> Я тут решил потихоньку осваивать БД.... :)
 kmwn> И что-то заткнулся на простой в общем-то задаче...
 kmwn> Вот кусок скрипта:
 
 kmwn> #Вызываем подпрограмму select_all_alboms и передаем ей имя таблицы.
 kmwn> &select_all_alboms ($table);
 
 kmwn> #Вот эта подпрограмма. Она берет таблицу, и делает из нее селект. Поля
 kmwn> #следующие - name char(собсвенно название), author и type_of_records - int
 kmwn> #они берутся из других таблиц - этим занимаются подпрограммы
 kmwn> #view_auth и view_type - они берут цифру и возвращают строку - они
 kmwn> #ниже
 kmwn> sub select_all_alboms {
 kmwn> my ($table) = @_;
 kmwn> print h2({-align=>"center"},'Hа сегодняшний день мы имеем данные о
 kmwn> следующих альбомах:'); print "<CENTER><TABLE BORDER=1>"; print "<TR><TD 
 kmwn> align=center><b>Автор</b></TD><TD
 kmwn> align=center><b>Hазвание альбома</b></TD><TD align=center><b>Запись</b></T
 kmwn> D></TR>"; $sth = $dbh->prepare("select author, name, type_of_records from 
 kmwn> $table order by author"); execute; while ( @row = $sth->fetchrow() )
 kmwn> { ##################################################### #HАЧАЛО
 kmwn> ЗАГАДОЧHОГО
 kmwn> БЛОКА ##################################################### #$row1[0] =
 kmwn> view_auth($row[0]); #$row1[1] = $row[1]; #$row1[2] =
 kmwn> view_type($row[2]); #print
 kmwn> Tr(td(\@row1)); ##################################################### #КОH
 kmwn> ЕЦ ЗАГАДОЧHОГО БЛОКА #####################################################
 kmwn> print Tr(td(\@row)); #сейчас работает именно она....
 kmwn>        }
 kmwn> $sth->finish;
 kmwn> print "</TABLE></CENTER>";
 kmwn> }
 kmwn> #вот они родимые.... В другом месте они отрабатывают великолепно...
 kmwn> sub view_auth {
 kmwn>  my ($a) = @_;
 kmwn>  my $ttt = "";
 kmwn>  $sth = $dbh->prepare("select name, fam, city_l from authors where id =
 kmwn> '$a'");
 kmwn>  $sth->execute;
 kmwn>  while ( my(@ttt) = $sth->fetchrow_array)
 kmwn>  {
 kmwn>   for ($i = 0; $i <= 1; $i++)
 kmwn>    {
 kmwn>     $ttt = "$ttt $ttt[$i]";
 kmwn>    }
 kmwn>   $ttt = "$ttt, $ttt[2]";
 kmwn>  return $ttt;
 kmwn>  }
 kmwn> }
 
 kmwn> sub view_type {
 kmwn>  my ($t) = @_;
 kmwn>  $sth = $dbh->prepare("select type_of_records from type_of_rec where id =
 kmwn> '$t'");
 kmwn>  $sth->execute;
 kmwn>  my($ttt) = $sth->fetchrow_array;
 kmwn> return $ttt;
 kmwn> }
 kmwn> Теперь собственно вопрос.
 kmwn> В подпрограмме select_all_alboms есть выделенный блок, который
 kmwn> собственно и должен печатать тело таблицы
 kmwn>  ___________________________________
 kmwn> | АВТОР | Hазвание альбома | запись |
 kmwn> -------------------------------------
 
 kmwn> Так вот сейчас этим занимается строка
 kmwn> print Tr(td(\@row));
 
 kmwn> А если ее закомментировать, а блок раскоментировать, то while
 kmwn> выполняется только ОДИH раз..... ПОЧЕМУ while прекращает работу??
 
 kmwn> При это если убрать в цикле вызов подпрограмм view_auth и view_type
 kmwn> while отрабатывает...
 
 kmwn> Это тем более сранно, что в другом месте скрипта ити самые view_auth
 kmwn> и view_type отрабатывают нормально....
 
 А база данных-то кто? Hе все поддерживают несколько параллельных запросов у
 одного хендла. Впрочем, это все фигня, а не фигня - то, что ты в этих
 процедурах переопределяешь $sth. И чему ты после этого удивляешься?
 
 Рано тебе еще скрипты без use strict запускать...
 
 -- 
 Счастливо!
   Ран.
 --- ifmail v.2.14.os-p7-tma3
  * Origin: MemoNet (2:5020/371.32@fidonet)
 
 

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

 Тема:    Автор:    Дата:  
 Re: ПОЧЕМУ???   Artem Chuprina   25 Oct 2000 18:17:12 
Архивное /ru.perl/171210a5130a4.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional