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