div.main {margin-left: 20pt; margin-right: 20pt}
Работа с MySql. Создание каталога ссылок
Сухинин A., Webscript.ru
Продолжим создание каталогизатора ссылок.
links
category
Кроме того, мы внесли в таблицу category данные, импортировав их из текстового файла.
Во второй статье мы "одели" результат запроса из списка категорий в Web-интерфейс.
Теперь нам нужно заполнить таблицу links, написать скрипт getlinks.pl для вывода списка ссылок с сообтветствующими категориями.
Поступим с заполнением таблицы links также, как и с таблицей categories : импортируем ссылки из текстового файла.
Текстовый файл:
"ProgramminG-программирование для всех!";"http://www.programming.dax.ru";1
"Corwell Design Studio";"http://www.cds.ru";1
"МТУ-Информ";"http://www.mtu.ru";1
"Студия Артемия Лебедева";"http://www.design.ru";1
"Каталог детских ресурсов";"http://www.kinder.ru/";1
"Быки и коровы";"http://bk.ru";2
"Мерен";"http://meren.ru/";2
"Все девочки";"http://www.allgirls.ru/";2
"Развлекательный сайт пива Доктор Дизель";"http://www.doctordizel.ru";2
"Анекдотов.net - максимум развлечений";"http://anekdotov.net";2
"Знакомства и Развлечения";"http://www.atis.kz/";2
"Чертовы Кулички";"http://www.kulichki.com/";2
"Драконье логово";"http://balrog.virtualave.net/";2
"Инфосити";"http://www.infocity.kiev.ua/";3
"Открытые системы";"http://www.opennet.ru/";3
"Масса полезной документации";"http://citforum.ru/";3
"Download.ru";http://www.download.ru/;4
"СОФТЛИСТ.РУ";http://www.softlist.ru/;4
"Темы.РУ";http://www.themes.ru/;4
"Altavista.com";"http://www.altavista.com/";5
"Яндекс.ру";"http://www.yandex.ru/";5
"Мета-ukraine";"http://meta-ukraine.com/";5
"Gala chat";"http://www.galachat.com";6
"Свежак для открытых систем";"http://freshmeat.net";7
"Sourceforge";"http://sourceforge.net";7
"Linuxguru";"http://www.linuxguru.com";7
"Для Web-разработчика";"http://www.stars.com";7
"PHP.net";"http://www.php.net";8
"Google groups";"http://groups.google.com";9
"Lenta.ru";"http://lenta.ru";10
"Корреспондент.нет";"http://www.korrespondent.net";10
Сохранить его , скажем в "c:MyDocslinks.txt".
Теперь нужно поместить его в таблицу links. Мы это уже делали с категориями, теперь запросом
LOAD DATA LOCAL INFILE '/MyDocs/links.txt' REPLACE INTO TABLE links FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY 'r'
заполним таблицу ссылок из текстового файла.
Запрос можно выполнить как из скрипта, так и из программы администрирования SQL сервера.
Теперь можно писать скрипт, который будет выводить список ссылок из выбранной категории.
В предыдущей статье мы написли ссылку
print "<td>","<a href="$scr_name?page=$ln->{'id'}">$ln->{'name'}</a>","</td></tr>n";
Значит, в качестве параметров мы передаем скрипту номер (id) категории под именем page.
Чтобы вывести ссылки только из данной категории, нужно выполнить SQL запрос
SELECT * FROM links WHERE category=id;
Скрипт будет выполнять следующие действия:
Разбор параметров, переданных в скрипт;
Выполнение SQL запроса;
Вывод результата в указанное место в шаблоне.
Подготовим HTML документ с необходимым нам оформлением, и в том месте, где должны быть ссылки
вставим комментарий:
<!-- LINKS_HERE -->
Программа на языке Perl будет иметь следующий вид:
#!/usr/bin/perl
use DBI;
print "Content-type:text/htmlnn";
$temp=$ENV{'QUERY_STRING'};
# Разбор строки параметров
if ($temp ne '') {
@pairs=split(/&/,$temp);
foreach $item(@pairs) {
($key,$content)=split (/=/,$item,2); # Режем на название ключа и значение.
# Названия параметров и значения помещаем в хэш
$data{$key}=$content;
}
}
# проверяем, есть ли переменная с именем page
if ($data{'page'} ne undef) { #
$qry = "SELECT * FROM links WHERE category=".$data{'page'}; #
my $dbh = DBI->connect("DBI:mysql:database=ваша_база_данных;
host=адрес_сервера_mysql",
"логин", "пароль") || die $DBI::errstr;
# готовим запрос
my $result = $dbh->prepare($qry);
# и выполняем его
$result->execute();
# разбираем результат
print "<ul>n";
while (my $ln = $result->fetchrow_hashref()) {
print "<li><a href="", $ln->{'url'},"" target="_blank">",$ln->{'name'},"</a></li>n";
}
print "</ul>n";
$dbh->disconnect();
print "<a href=javascript:history.back()>Предыдущая страница</a>n";
}
В результате исполнения этого скрипта будет выведен список ссылок, оформленный как
Немаркированный список, каждая ссылка будет открываться в новом окне.
Надеюсь, принцип работы данной программы понятен, и каждый волен ее дорабатывать на свой вкус.
Я , например в рабочей версии каталогизатора (она, правда написана на PHP), еще добавил в таблицу links еще и описание ресурса,
и счетчик, куда записывается каждый клик по ссылке.
|