WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Работа с MySql. Создание каталога ссылок


Прислал: Alexander Suhhinin [ 01.07.2001 @ 07:01 ]
Раздел:: [ Статьи по Perl ]


Работа с MySql. Создание каталога ссылок.

Продолжим создание каталогизатора ссылок.

В одной из предыдущих статей мы создали две таблицы в базе данных на сервере MySql:
  1. links
  2. category
Кроме того, мы внесли в таблицу category данные, импортировав их из текстового файла. Во второй статье мы "одели" результат запроса из списка категорий в Web-интерфейс. Теперь нам нужно заполнить таблицу links, написать скрипт getlinks.pl для вывода списка ссылок с сообтветствующими категориями. Поступим с заполнением таблицы links также, как и с таблицей categories : импортируем ссылки из текстового файла. Текстовый файл:
"ProgramminG-программирование для всех!";"//www.programming.dax.ru";1
"Corwell Design Studio";"//www.cds.ru";1
"МТУ-Информ";"//www.mtu.ru";1
"Студия Артемия Лебедева";"//www.design.ru";1
"Каталог детских ресурсов";"//www.kinder.ru/";1
"Быки и коровы";"//bk.ru";2
"Мерен";"//meren.ru/";2
"Все девочки";"//www.allgirls.ru/";2
"Развлекательный сайт пива Доктор Дизель";"//www.doctordizel.ru";2
"Анекдотов.net - максимум развлечений";"//anekdotov.net";2
"Знакомства и Развлечения";"//www.atis.kz/";2
"Чертовы Кулички";"//www.kulichki.com/";2
"Драконье логово";"//balrog.virtualave.net/";2
"Инфосити";"//www.infocity.kiev.ua/";3
"Открытые системы";"//www.opennet.ru/";3
"Масса полезной документации";"//citforum.ru/";3
"Download.ru";//www.download.ru/;4
"СОФТЛИСТ.РУ";//www.softlist.ru/;4
"Темы.РУ";//www.themes.ru/;4
"Altavista.com";"//www.altavista.com/";5
"Яндекс.ру";"//www.yandex.ru/";5
"Мета-ukraine";"//meta-ukraine.com/";5
"Gala chat";"//www.galachat.com";6
"Свежак для открытых систем";"//freshmeat.net";7
"Sourceforge";"//sourceforge.net";7
"Linuxguru";"//www.linuxguru.com";7
"Для Web-разработчика";"//www.stars.com";7
"PHP.net";"//www.php.net";8
"Google groups";"//groups.google.com";9
"Lenta.ru";"//lenta.ru";10
"Корреспондент.нет";"//www.korrespondent.net";10
Сохранить его , скажем в "c:\MyDocs\links.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;

Скрипт будет выполнять следующие действия:
  1. Разбор параметров, переданных в скрипт;
  2. Выполнение SQL запроса;
  3. Вывод результата в указанное место в шаблоне.
Подготовим HTML документ с необходимым нам оформлением, и в том месте, где должны быть ссылки вставим комментарий:

<!-- LINKS_HERE -->

Программа на языке Perl будет иметь следующий вид:
#!/usr/bin/perl
use DBI;
print "Content-type:text/html\n\n";
$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 еще и описание ресурса, и счетчик, куда записывается каждый клик по ссылке.




 :::::  Кирилл пишет 07.08.2001 @ 15:45 
Интересно узнать, а можно ли сделать каталогизатор только лишь с помощью java-script ?
А так сайт хороший довольно интересный.
 :::::  Владимир пишет 18.10.2001 @ 02:57 
Помогите поставить DBI для Win98 на машине с установленным Perl'ом, но не ActivePerl
Помогите или подскажите как и где взять модуль DBI (DBD::mysql) для Win98! Дело в том, что я не использую ActivePerl и на машине стоит апачи, а Перл прописан c:/usr/local/apache/bin/perl. Таким образом, когда ставлю DBI от ActivePerl, то мне все инсталит нв дир c:/Perl... и т.д.
как быть в этой ситуации?

Подскажите, может кто уже встречался с такой проблемой?

просто необходимо работать с MySQL, а без DBI никак...

Заранее благодарен

Имя:
Email:
URL

Введите сумму двух чисел девять и одинн (девять+одинн=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0118849