Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #30, МАЙ 2003 г.

MEGAMAGAZINE - мутим элитный сетевой журнал

Леха ББ & Космос

Спецвыпуск Xakep, номер #030, стр. 030-024-4


Заказ статей

Через какие-то интервалы времени (обычно раз в месяц) редакция рожает план номера, и он становится доступным на сайте. Авторы в это время лезут на сайт, чтобы его лицезреть, а также выбрать то, что они могут осилить. Чтобы автору не пришлось выбирать кота в мешке, надо сделать так, чтобы план представить в такой форме, чтобы было понятно, что к чему, то есть так же, как и в архиве планов, а рядом поставить флаги (checkbox'ы), выбор которых будет соответствовать выбору статей. От скрипта, который будет отвечать за выбор статей, требуется определять последний добавленный план (последняя строка файла со списком планов), открывать файл с планом и записывать в строчках с выбранными авторами статьями ID того, кто их выбрал. Но лучше заводить файл с именем вида ID_автора.txt, в котором будут записаны выбранные данным автором статьи на месяц. Таким ID может служить не только номер, но и любое слово или даже просто набор символов.

#Определение последнего плана

open(PLN, "$plans_ind");

@plans=<PLN>;

close(PLN);

#$k - число строк в файле списка

$k=0;

foreach(@plans)

{$k++;}

#$j - выбор строки с номером и названием последнего плана

$j=$k-1;

($number, $name) = split (/;/, @plans[$j]);

print "<h2>№ $number: $name</h2>\n";

$ch_plan_file=$plans_dir.$number.'.txt';

#заполнение переменных из полей файла и их вывод

open(PLA, "$ch_plan_file");

@chplan=<PLA>;

close(PLA);

#Таблица с планом и возможностью выбора статей

print "<table border=1 align=center>\n";

print "<tr><td>Название статьи</td>\n";

print "<td>Объем</td>\n";

print "<td>Комментарии</td>\n";

print "<td>Выбрать</td></tr>\n";

print "<FORM ACTION=$script method=\"GET\">\n";

print "Представься: <INPUT name=\"author\" size=30>\n";

for ($q=0; $q<@chplan; $q++)

{

chomp($chplan[$q]);

($name_art, $volume, $comment, $chosen) = split(/;/, $chplan[$q]);

if ($chosen eq "")

{

print "<tr><td>$name_art</td>\n";

print "<td>$volume</td>\n";

print "<td>$comment</td>\n";

print "<td><INPUT type=\"checkbox\" name=\"chosen\" value=\"$q\"></td></tr>\n";

}

}

print "</table>\n";

print "<INPUT type=\"Submit\" value=\"Выбрать статьи\">\n";

print "</FORM>\n";

}

Заносить результаты выбора в файл с планом или заводить для этих целей отдельный файл - дело вкуса. У того и другого метода есть свои плюсы и минусы (как и у других источников питания :)), так что подумай, что в твоем случае будет лучше. И сделай это.

Архив статей того или иного автора

Для размещения самих статей лучше всего завести директорию статей, а в ней субдиректории по ID автора. В директории статей завести текстовый файл, строки которого будут разбиты на 3 части через знак ";": ID автора, название статьи и имя файла с текстом статьи. При выборе автора будут выведены ссылки на ID всех имеющихся авторов (и бывших тоже). После клика на такую линку скрипт будет отыскивать среди полей файла нужный ID и заносить нужные строчки в массив, который потом будет выведен. После его обработки будет выдан список статей выбранного автора, которые можно дополнить ссылками на эти статьи.

Назад на стр. 030-024-3  Содержание  Вперед на стр. 030-024-5