| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Givi 11.11.2003 19:30
Будем считать, что#Количество таблиц
$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>
}Хм... Как-то громоздко получилось и не красиво :( Тем не менее может быть будет работать :)))