MySQL & mSQL

         

Строим запрос, который ищет заданного


foreach $i (@list) {

my @query = ();

# Строим запрос, который ищет заданного учащегося,

my $query = "select id, subjects from student where ";

foreach ('first','middle','last', 'ext') {

if (param("$_$i")) {

my $temp = param("$_$i");

# В mSQL и MySQL одиночные кавычки служат ограничителями

# имен полей, и им должен предшествовать

# управляющий символ "\",

# который управляет и сам собой,

# чтобы быть введенным буквально.

$temp =~ s/7\\'/g;

push(@query, "$_ = '$temp'"); } }

$query = join(" and ",§query);

# Посылаем запрос базе данных.

my $out = $dbh->query($query);

# Если база данных ничего не возвращает, добавляем

# учащегося к массиву @notstudents.

if (not $out->numrows) {

push(@notstudents, [ param("first$i"), param("middle$i"), param("last$i"), param("ext$i") ]);

# В противном случае добавляем студента в массив ©students.

} else {

my ($id,$subjects) = $out->fetchrow;

push(@students,[$id,$subjects]); } } }

return(\§students,\@notstudents); }

Эта функция пробегает по всем заданным именам учащихся и проверяет, есть ли уже они в базе данных. Если они существуют, данные о них записываются в массив с именем ©students , в противном случае - в массив @notstudents . Данные о каждом учащемся хранятся в безымянном массиве, создавая своего рода объект учащегося. В итоге функция возвращает ссылки на оба массива. Она не может возвратить данные как обычный массив, поскольку будет невозможно определить, где закончился один массив и начался другой.

И последняя вспомогательная функция - update_students , которая добавляет класс к списку классов для каждого существующего учащегося.

sub update_students {

my $id = shift;

my ©students = @_;

foreach (©students) {

my($sid, $subjects)=©$_;

if (not Ssubjects) { Ssubjects = ":$id:"; }

elsif (Ssubjects !" /:$id:/)

{ Ssubjects .= "$id:"; }


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий