| Новости | 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>