Мне нужно вот этот код:
$categories = $dbh->prepare("SELECT * FROM WHERE type=\'news\'")
|| die "Can\'t prepare statement: $DBI::errstr";
$categories->execute;
$end=0;
while(@row = $categories->fetchrow_array)
{
if($row[3] == $cat)
{
$end=1;
}
}
$categories->finish;
undef @row;
if($end != 1)
{
$categories = $dbh->prepare("SELECT * FROM categories WHERE type=\'news\'")
|| die "Can\'t prepare statement: $DBI::errstr";
$categories->execute;
while(@row = $categories->fetchrow_array)
{
if($row[2] == $cat)
{
$p=$row[1];
$l=$row[2];
}
}
$categories->finish;
@names=(@names,$p);
@cats=(@cats,$l);
}
else
{
$l=$cat;
for ($i=0; $i<10; $i++)
{
$n=0;
$categories = $dbh->prepare("SELECT * FROM categories WHERE type=\'news\'")
|| die "Can\'t prepare statement: $DBI::errstr";
$categories->execute;
while(@row = $categories->fetchrow_array)
{
if($n==0)
{
$n=0;
}
if($row[3]==$l)
{
$p=$row[1];
$l=$row[2];
@cats=(@cats,$row[3]);
@names=(@names,$row[4]);
$n=1;
}
}
$categories->finish;
}
@cats=(@cats,$l);
@names=(@names,$p);
}
запихнуть в отдельный pl файл и использовать как подпрограмму (потому как этот кусок кода будит часто использоваться в дальнейшем). При вызове необходимо передать подпрограмме параметр $cat, после её выполнения получить (вернуть основной программе) два массива: @cats и @names.
PS: документацию по созданию подпрограмм читал..., вроде всё сделал верно, но помоему там что-то не то проиходило во время выбора из таблицы categories вобщем не работало, помогите пожалуйста!
А! и вот ещё, чтобы не вводить в заблуждение: тот кусок кода абсолютно рабочий, тоесть без использования подпрограммы - он исправно работает.