parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Попробую :)

Givi 11.11.2003 19:30

Будем считать, что
1) Во сне соседа вам стало известно как подключаться к базе
2) Во сне соседа объяснили что такое таблица в Парсере
3) Проснувшись, сосед дал вам почитать документацию
4) Известно количество таблиц, допустим 20
5) Все таблицы имеют одинаковое наименование (и структуру), отличающееся лишь номером
6) Выполнено подключение к SQL-серверу
#Количество таблиц
$tCnt(20)
#Ограничение по количеству товаров
$gOut(5)
#Таблица куда будут добавляться записи из БД
$gTab[]
#Временная таблица
$tTab[]
#SQL-запрос
$qSQL[SELECT ... FROM pr_cat_$i WHERE status='hot'
]
#Перебираем все таблицы
^for[i](1;$tCnt){
#Если таблица первая, то кладём всё в $gTab
    ^if($i==1){
        $gTab[^table::sql{
            $qSQL
        }
    }{
#Если таблица не первая, то кладём все в $tTab, а потом добавляем к $gTab
        $tTab[^table::sql{
            $qSQL
        }
        ^gTab.join[$tTab]
    }
}
#Чтобы не повторялись записи будем хранить в таблице их номера
$nRec[^table::create{n}]
#Случайный номер
$n(0)
#Теперь будем выводить нужное количество записей
^for[i](1;$gOut){
#Пока random не выдаст нам не совпадающий номер будем его вызывать
    ^while(!^nRec.locate[n;$n]){
#Здесь $gOut это количество записей
        $n(^math:random($gOut))
    }    
#Добавим номер в таблицу, чтобы знать что он уже был
    ^nRec.append{$n}
#Смещаем указатель на случайное число
    ^gTab.offset($n)
#Выводим
    <div>$gTab.fields</div>
}
Хм... Как-то громоздко получилось и не красиво :( Тем не менее может быть будет работать :)))