Baza danych na stronie WWW

Przedstawiona tutaj metoda wykorzystując kontrolkę ActiveX umożliwia dynamiczne prezentowanie danych pochodzących z odrębnych plików. Dane źródłowe odczytywane są z ręcznie przygotowanego pliku tekstowego lub mogą pochodzić np. z arkusza kalkulacyjnego. Nieomal każdy program zarządzający danymi (np. Excel) potrafi zapisać swoje tabele do formatu tekstowego w postaci takiej, że wiersze tabeli są wierszami tekstu, a kolumny są rozdzielane dowolnym separatorem (np. spacją, średnikiem, przecinkiem). Popularnym formatem tego typu jest CSV (Comma Separated Values), czyli "wartości oddzielone przecinkami". Zatem po stworzeniu "bazodanowego" pliku cała aktualizacja danych polegać będzie jedynie na zapisaniu arkusza do pliku *.csv i wysłaniu na serwer programem FTP.

Korzyści:

Wady:

Łączenie strony WWW z bazą danych

Aby prezentować dane w tabeli w sposób dynamiczny należy na stronie WWW osadzić odpowiednią kontrolkę ActiveX. Wykorzystujemy do tego znacznik <OBJECT>.


<OBJECT ID="Baza" CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83" WIDTH=0 HEIGHT=0>
  <PARAM NAME=DataURL Value="dane.txt">
  <PARAM NAME=TextQualifier Value=",">
  <PARAM NAME=UseHeader Value=True>
</OBJECT> 

W ten sposób osadzony obiekt uzyskuje nazwę "Baza". Atrybut CLASSID identyfikuje konkretną kontrolkę, której konfigurowanie odbywa się za pomocą znaczników <PARAM>. Parametr DataURL określa lokalizację pliku z danymi, w którym pola są oddzielane znakiem określonym parametrem TextQualifier. W pliku zawierającym dane, pierwszy wiersz może zawierać nazwy poszczególnych kolumn, o czym przesądza parametr UseHeader.

Przykład

Utwórzmy plik o nazwie dane.txt zawierający przykładowe dane:


producent,model,typ nadwozia,liczba drzwi:INT
OPEL,AGILA,hatchback,5
OPEL,ASTRA,sedan,5
OPEL,ASTRA,sedan,4
OPEL,ASTRA,combi,5
OPEL,CORSA,hatchback,5
OPEL,FRONTERA,terenowy,5
OPEL,OMEGA,sedan,4 
OPEL,OMEGA,sedan,5
OPEL,OMEGA,combi,5
OPEL,TIGRA,coupe,2
OPEL,VECTRA,sedan,4 
OPEL,VECTRA,sedan,5
OPEL,VECTRA,combi,5
OPEL,ZAFIRA,van,5
OPEL,COMBO,furgon,3 

W pierwszej linii plik zawiera nazwy poszczególnych kolumn bazy. Następne linie pliku to kolejne rekordy. Przyrostek INT w pierwszej linii oznacza, że pole "liczba drzwi" zawierać będzie liczby.

Prezentowanie danych w tabeli:

producent model typ nadwozia liczba drzwi

Aby połączyć element strony internetowej z bazą danych wprowadzono atrybuty: DATASRC oraz DATAFLD. Pierwszy kojarzy dany element z konkretnym źródłem danych, drugi służy do wyboru pola rekordu. Atrybuty mogą być stosowane w różnego rodzaju znacznikach, np.: DIV, SPAN, INPUT-TEXT, TEXTAREA, IMG, BUTTON, A, LABEL. Na przykład dla znacznika SPAN skojarzenie z polem "model" naszej bazy może wyglądać następująco:

<SPAN DATAFLD="model" DATASRC="#Baza">

W przypadku znacznika TABLE dostępny jest tylko atrybut DATASRC, który umożliwia skojarzenie całej tabeli ze źródłem danych.


<HTML>
<BODY>
<OBJECT ID="Baza" CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83" WIDTH=0 HEIGHT=0> 
  <PARAM NAME=DataURL Value="dane.txt"> 
  <PARAM NAME=TextQualifier Value=",">
  <PARAM NAME=UseHeader Value=True>
</OBJECT> 
<TABLE BORDER=1 DATASRC="#Baza">
<THEAD BGCOLOR="white">
	<TD><B>producent</B></TD>
	<TD><B>model</B></TD>
	<TD><B>typ nadwozia</B></TD>
	<TD><B>liczba drzwi</B></TD>
</THEAD>
<TBODY>
<TR>
	<TD><DIV DATAFLD="producent"></DIV></TD>
	<TD><DIV DATAFLD="model"></DIV></TD>
	<TD><DIV DATAFLD="typ nadwozia"></DIV></TD>
	<TD><DIV DATAFLD="liczba drzwi"></DIV></TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>

Znacznik <THEAD> określa nagłówek tabeli, czyli pierwszy jej wiersz zawierający nazwy kolumn. Część tabeli zawierająca dane jest ujęta w parę znaczników <TBODY></TBODY>. W każdej komórce prezentowane jest jedno z pól rekordu naszej bazy. Przeglądarka sama rozpoznaje ile rekordów zawiera nasza baza, a tym samym ile wierszy ma mieć prezentująca ją tabela.

W znacznikach obok DATAFLD może wystąpic także atrybut DATAFORMATAS, który służy do określenia sposobu wyświetlania danych. W przypadku, gdy pole zawiera znaczniki HTML standardowo nie będą one interpretowane i zostaną wyświetlone jako zwykły tekst. Jednakże w sytuacji, gdy pole wyświetlające dane będzie skonfigurowane w następujący sposób:

<DIV DATAFLD="producent" DATAFORMATAS="html"></DIV>

to jeżeli w polu "producent" znajdą się znaczniki HTML, zostaną one zinterpretowane. Na przykład jeżeli pole jest zdefiniowane w następujący sposób:

<B>OPEL</B>

na ekranie zostanie wyświetlony pogrubiony napis: OPEL

stronicowanie tabeli i sortowanie danych