Перечень статей   Цветовые обозначения   Choose language


Отображение таблицы 3x100 СУБД
как таблицы 10x10



3 таблицы базы данных в 1 таблицу браузера

Рассмотрим типичную таблицу (такие "широкие" таблицы в дальнейшем будем называть многомерными).

  home horse car yacht
Smith 250 70 50 180
Tomson 340 90 100
Johnson 100 10 210

В базе данных многомерная таблица представлена в виде трех таблиц (которые в дальнейшем будем называть реляционными). Одна (в данном случае таблица "cost") содержит записи из трех полей: идентификатор строки, идентификатор колонки (первичный ключ из двух полей) и значение для ячейки. Две других (в данном случае "things" и "family") - также из трех полей: идентификатор строки или колонки (первичный ключ), порядковый номер для визуализации на экране и название строки (или колонки).

cost
person goods many
11 101 250
11 52 70
11 23 50
11 84 180
72 101 340
72 23 90
72 84 100
43 101 100
43 23 10
43 84 210
things
pk ser what
101 1 home
52 2 horse
23 3 car
84 4 yacht
family
pk ser who
11 1 Smith
72 2 Tomson
43 3 Johnson

Вложим тег tside внутрь table, чтобы уведомить браузер, что это таблица особого вида. Внутри thead, tside, tbody расположим теги, название которых значения не имеет. Тег, вложенный в tbody, т.е. 'cost' не будет отображен, если он предназначен для строки или столбца, который не существует.

<table> 
  <thead>
    <things pk="101" what="home">
    <things pk="52"  what="horse">
    <things pk="23"  what="car">
    <things pk="84"  what="yacht">
  </thead>
  <tside>
    <family pk="11" who="Smith">
    <family pk="72" who="Tomson">
    <family pk="43" who="Johnson">
  </tside>
  <tbody>
    <cost person="11" goods="101" many="250">
    <cost person="11" goods="52"  many="70">
    <cost person="11" goods="23"  many="50">
    <cost person="11" goods="84"  many="180">
    <cost person="72" goods="101" many="340">
    <cost person="72" goods="23"  many="90">
    <cost person="72" goods="84"  many="100">
    <cost person="43" goods="101" many="100">
    <cost person="43" goods="23"  many="10">
    <cost person="43" goods="84"  many="210">
  </tbody>
</table>
thead {
  pk:      §pk;
  attract: §goods;
  content: §what;
}
tside {
  pk:      §pk;
  attract: §person;
  content: §who;
}
tbody {
  content: §many;
}

Такие конструкции легко получить SQL-запросами наподобие следующего (более для этого приспособлен язык SQL5)

select '<table><thead>'
union
select '<things pk='  + pk + ' what=' + what + '>' from things order by ser
union
select '</thead><tside>'
union
select '<family pk='  + pk + ' who=' + who + '>' from family order by ser
union
select '</tside><tbody>'
union
select '<cost person=' + person + ' goods=' + goods + ' many=' + many + '>' from cost
union
select '</tbody></table>';

Отправка формы

Если


то браузер посылает следующий XML-текст
<cost person="11" goods="52"  many="80">
<cost person="43" goods="101" many="110">


Тюрин Дмитрий



Перечень статей   Цветовые обозначения   Choose language


Hosted by uCoz