Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод каталога с помощью рекурсии или... Perl+MySQL 
:(
    Опции темы
Кнером
Дата 21.9.2006, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



В образовательных целях создаю каталог ссылок. Создал базу и небольшой скрипт для вывода содержимого таблиц. Хочу вывести в виде дерева. Есть код на ПХП.
Код

function TreeSelect($cat_id,$lvl)
    {
    $query="SELECT * FROM categories WHERE up_cat_id=".$cat_id;
    $res=mysql_query($query);
    if($res)
        {
        for($i=0;$i<mysql_num_rows($res);$i++)
            {
            $id=mysql_result($res,$i,'id');
            $mname=mysql_result($res,$i,'mname');
            echo("<OPTION value='".$id."'>");
            for($j=0;$j<$lvl*6;$j++)
                {echo("&nbsp;");}
            echo($mname."</OPTION>");
            $lvl++;
            TreeSelect($id,$lvl);
            $lvl--;
            }
        }
    
    }


Как я понял, лучше всего использовать рекурсию.

Первая таблица (каталог) содержит название папок, вторая (сайты) содержит всю необходимую информацию о сайте.

Код

#1 #0 #Досуг
#2 #0 #Туризм
#3 #0 #Интернет
--------
#1 #1 #NAME_SITE1 #META_SITE1 #URL_SITE1
#2 #2 #NAME_SITE2 #META_SITE2 #URL_SITE2
#3 #3 #NAME_SITE3 #META_SITE3 #URL_SITE3


Вот, что у меня есть.

Код

#!/usr/bin/perl -w

use DBI;
use CGI::Carp qw(fatalsToBrowser);

print "Content-Type: text/html;charset=windows-1251\n\n";

my $host = "";
my $base = "";
my $log = "";
my $pass = "";
my $dbh = DBI->connect("DBI:mysql:host=$host;database=$base", $log, $pass) or die DBI->errstr;

my $sql = "SELECT * FROM catalogs";
my $sth = $dbh->prepare($sql);
$sth->execute() or die $sth->errstr;
while (my @row = $sth->fetchrow_array) {
print "#$row[0]\t#$row[1]\t#$row[2]<br>";
}
$sth->finish();
$dbh->disconnect();

print "--------<br>";

my $sql = "SELECT * FROM sites";   # Здесь вместо Table укажи имя своей таблицы
my $sth = $dbh->prepare($sql);
$sth->execute() or die $sth->errstr;  # Здесь укажи вместо 101 номер Id который хочешь выбрать.
while (my @row = $sth->fetchrow_array) {
print "#$row[0]\t#$row[1]\t#$row[2]\t#$row[3]\t#$row[4]<br>";
}
$sth->finish();
$dbh->disconnect();

Собственно, больше всего интересует, аналогичные команды Perl и что нужно делать. Остальное сам.  smile

Добавлено @ 20:05 
#1 #1 #NAME_SITE1 #META_SITE1 #URL_SITE1 - Это строка относится к #1 #0 #Досуг
Т.е. в каждой папке одна запись.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1028 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.