parser

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

 

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

Ответ

Maxx 18.04.2016 14:26 / 18.04.2016 14:51

http://www.parser.ru/docs/lang/?hashfilehash.htm
Конструктор создает хеш, в котором имена ключей совпадают со значениями первого столбца выборки. Имена столбцов формируют ключи хеша, а значения столбцов - соответствующие этим ключам значения. (имхо, в доке стоит попонятнее написать как это работает)
То есть в вашем хеше сначала идет ключ $getajour.{$id} (скорее всего id, первый столбец, согласно доке) внутри которого лежит все остальное в виде вложенного хэша.

Ну код, простите, полная лапша. Вместо первой выборки нужно просто получить число SELECT COUNT(*) а не вынимать всю таблицу, и менюшить не понадобится. Зачем вам тут вообще хэш совершенно не понятно, вынимаете одну строку в таблицу и работаете

Изначально в прошлом посте вы писали что в таблицу попадает результат, а в хэш - нет. Только в вашем случае в хэш всё попадает, вы просто обрабатываете результат неправильно. Итого бага не наблюдается

Должно быть как то так, имхо:
^adrules.menu{^if($adrules.type eq "journal"){$lim1($adrules.watchlimit)$lim2($adrules.clicklimit)}}
^connect[...]{
	$jours_count[^table::int(SELECT COUNT(*) 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")[$.default(0)]]
# рандомим.
	$thisjour(^math:random($jours_count+1))
# идём за выбранным
	$getajour[^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" LIMIT ${thisjour},1}]
# да, я задумал такие правила, либо-либо-либо, всё верно. инкрементируем просмотры выбранного
	^void:sql{UPDATE `base_ads`.`banners` SET `watched` = `watched` + 1  WHERE `id` = '$getajour.id'}
}
# создаём индексик в обработчной директории /ads/айдибаннера/
$bwa[^^before[]^^within[]^^after[]] ^rem{не знаю что это за жесть и за чем, но пусть}
^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>
# и - вау! - всё должно быть.