Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Работа с MySql. Создание Web интерфейсаУстановим цель: вывести в две колонки список категорий, слегка облагородив его. Поступим так: изготовим любую HTML страницу с необходимым нам дизайном, и в то место, где нам нужен список категорий поставим комментарий : <!-- CATEGORIES_HERE --> Сей шаг мы делаем для того, чтобы скрипт не перегружать текст программы избыточным кодом. Итак, приступим:
> #/usr/bin/perl # Используем библиотеку DBI use DBI; # Выведем заголовок типа данных print "Content-type:text/html\n\n"; # коннектимся к серверу MySql my $dbh = DBI->connect("DBI:mysql:database=ваша_база_данных;host=адрес_сервера_mysql", "логин", "пароль") || die $DBI::errstr; # готовим запрос my $result = $dbh->prepare("SELECT * FROM category"); # и выполняем его $result->execute(); # начинаем вывод в шаблон вместо комментария. open FILE, "cat_template.html" || die ("Не могу открыть файл cat_template.html!\n"); @arr = <FILE>; close FILE; # ищем строку комментария foreach $line(@arr) { if ($line =~ "<!-- CATEGORIES_HERE") { # если нашли, print "<tr>\n"; # начинаем вывод таблицы $bg = 1; # признак начатой строки таблицы $col = 1; # номер текущей колонки print "<table width = \"80%\">\n"; # разбор резульата SQL запроса while (my $ln = $result->fetchrow_hashref()) { if ($bg == 1) { # начата строка таблицы if ($col == 1) { # если первая колонка print "<td>",$ln->{'name'},"</td>"; $col++; } else { # $col == 2 т.е. 2-я колонка print "<td>",$ln->{'name'},"</td></tr>\n"; $col = 1; $bg = 0; } } else { if ($col == 1) { # начинаем строку таблицы print "<tr>&td;td>",$ln->{'name'},"&td;/td>"; $col = 2; $bg = 1; } else { # $col == 2 print "<td>",$ln->{'name'},"</td></tr>\n"; $col = 1; $bg = 0; } } } if ($bg == 1) { # если строка начата и больше нет данных в результате print "<td> </td></tr>\n"; # надо корректно закрыть начатую строку таблицы } print "</table>\n"; # и закрыть таблицу } } # метод finish означает, что ссылка на текущий SQL запрос использоваться больше не будет # и его можно завершить. По идее, его нужно вызывать перед выполнением нового запроса или перед # разрывом соединения с базой данных. # Вообще-то когда все данные выбраны из результата, этот метод вызывается автоматически, # но возникают ситуации, когда его нужно вызывать принудительно. На моей машине именно так и было # У вас эта ситуация может и не возникнуть. $result->finish(); # Разрыв соединения с сервером. $dbh->disconnect(); В результате вы должны получить следующую таблицу (рамки включены умышленно): Интернет
Все хорошо, только толку от нашей таблицы нет никакого. Нужно, чтобы, щелкнув по категории, открывалась страница со ссылками этой категории. Для этого нужно немного дописать код нашей программы. Введем переменную "$scr_name", обозначающую файл, содержащий скрипт, который будет выводить страницу со ссылками. После строки use DBI; вставим строку $scr_name="getlinks.pl" Далее, внутри цикла while заменим все параметры функции print .... $ln->{'name'} на <a href=\"$scr_name?page=$ln->{'id'}\">$ln->{'name'}</a> Должно получиться что-то типа: print "<td>","<a href=\"$scr_name?page=$ln->{'id'}\">$ln->{'name'}</a>","</td></tr>\n"; После этой процедуры все категории в вышеприведенной таблице в результате окажутся ссылками, правла неработающими, так как сам скрипт нам предстоит только написать. |
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|