| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Василий М. 18.04.2016 14:06
Привожу всё вокруг, весь кусок.# adrules - это таблица с правилами реклам. Забираем нужные цифры (*)
^adrules.menu{^if($adrules.type eq "journal"){$lim1($adrules.watchlimit)$lim2($adrules.clicklimit)}}
# идём в базу, забираем оба подходящих варианта (**)
^connect[mysql://login:pass@localhost/base_ads?charset=cp1251]{
$jours[^table::sql{SELECT * FROM `banners` WHERE `type` like "journal" AND `moderated` > 1 AND `watched` <= $lim1 OR `type` like "journal" AND `moderated` > 1 AND `clicked` <= $lim2 OR `type` like "journal" AND `moderated` > 1 AND `end` <= "CURRENT_TIMESTAMP"}]
}
# тупо считаем их.
$jourstotal(0)
^jours.menu{$jourstotal($jourstotal + 1)}
# рандомим.
$thisjour(^math:random($jourstotal))
# идём за выбранным (***).
^connect[mysql://login:pass@localhost/base_ads?charset=cp1251]{
$getajour[^hash::sql{SELECT * FROM `banners` WHERE `type` like "journal" AND `moderated` > 1 AND `watched` <= $lim1 OR `type` like "journal" AND `moderated` > 1 AND `clicked` <= $lim2 OR `type` like "journal" AND `moderated` > 1 AND `end` <= "CURRENT_TIMESTAMP" LIMIT ${thisjour},1}]
# да, я задумал такие правила, либо-либо-либо, всё верно. инкрементируем просмотры выбранного
$setwatched($getajour.watched)
$setwatched($setwatched + 1)
^void:sql{UPDATE `base_ads`.`banners` SET `watched` = $setwatched WHERE `id` = '$getajour.id'}
}
# создаём индексик в обработчной директории /ads/айдибаннера/
$bwa[^^before[]^^within[]^^after[]]
^if(-f "/ads/${getajour.id}/index.html"){}{^bwa.save[/ads/${getajour.id}/index.html]}
# пишем код. ссылка и картинка - из хеша.
<a href="/ads/${getajour.id}/" rel="nofollow" id="journal" style="background-image: url($getajour.image)^; background-position: top left^; background-size: contain^; background-repeat: no-repeat^;"></a>
# и - вау! - ни фига.В результате получаем на месте баннера фиг со ссылкой на /ads//. Не ошибку какую-нибудь там про SQL-syntax, отсутствие столбца и так далее, а просто большой русский фиг!