| Новости | FAQ | Авторы | Документация | В действии | Библиотека | 
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум | 
mashi 08.02.2006 15:10
$news[^table::sql{SELECT... }]
# кол-во колонок в таблице
$cols(4)
# количество строк таблицы
$i(0)
# Переводим таблицу в хеш-таблицу, ключами которого являются номера срок.
$news[^news.hash{^if(^news.line[]<=$cols*($i+1)){$i}{^i.inc(1)$i}}[$.distinct[tables]]]
# каждую таблицу из хеша таблиц переводим в хеш, ключами которого будут порядковые номера ячеек в строке
^news.foreach[key;value]{
	$news.[$key][^news.[$key].hash(^news.[$key].line[])[header]]
}
# Таким образом получили матрицу.
# ширину колонок будим хранить в хеше.
# если будит остаток от деления 100\$cols, то он будит добавлен к ширине последней колонки
$cell_width[
	^for[k](1;$cols){
		$.[$k](100\$cols + ($k == $cols)*(100%$cols))
	}
]
# выводим таблицу
<table width="100%" border="1">
^for[j](0;$i){
<tr>
	^for[k](1;$cols){
#		width ставим только для первой строки
		<td ^if(!$j){width="$cell_width.[$k]"}>
			^if(def $news.[$j].[$k].header){$news.[$j].[$k].header}{ ^;}
		</td>
	}
</tr>
}
</table>