next_inactive up previous


SOTEeSKLEP MetabaseData & DataForm

m@sote.pl

Wersja dokumentu: $Id: metabase_data.html,v 1.3 2003/11/16 21:27:29 maroslaw Exp $


Contents

1 MetabaseData 1.0

Integralną częścią tej dokumentacji, jest dokumentacja Metabase. 

Klasa MetabaseData jest klasą zawierającą funkcje ułatwiające pobieranie struktur danych i wykonywania podstawowych operacji bazodanowych, w oparciu bibliotekę Metabase. Wykorzystanie MetabaseData skraca czas przygotowania aplikacji oraz pozwala na tworzenie bardziej przejrzystego kodu. Dodatkowo klasa ta może posłużyć do budowania kolejnych bibliotek opierających się na w/w klasie np. do automatycznego budowania formularzy na podstawie danych z bazy itp.

1 Wymagania, lokalizacja

W SOTEeSKLEP biblioteka znajduje się w lokalizacji: lib/MetabaseData/MetabaseData.php. Wywołanie tej klasy ma następującą postać:

require_once (``MetabaseData/MetabaseData.php'');
Wymagana jest klasa obsługi Metabase.

2 Opis klasy

2.1 Tworzenie obiektu

Domyślnym obiektem jest obiekt o nazwie: $mdbd
Tworzenie obiektu ma następującą postać:

$mdbd = new MetabaseData($db);
gdzie $db to obiekt Metabase.

2.2 funkcja select()

Jeśli chcemy odczytać dane z bazy danych, możemy użyć funkcji $mdbd->select(). Funkcja ta ma następującą postać:

$mdbd->select($columns,$table,$where,$data,$other)

$columns
co selectujemy z tabeli np. "id,name"
$table
nazwa tabeli
$where
opcje WHERE z zapytania SQL np. "id=?, name=?"

$data
parametry podstawiane do zapytania SQL
$other
pozostała część zapytania SQL np. ``ORDER BY name'' itp.
Funkcja zwraca dane odczytane z bazy danych. W zależności od struktury danych, zwracany jest ``string'' lub tablica.

2.2.1 Przykład odczytania pola ``name'' z tabeli main

Przykład:

SQL: SELECT name FROM main WHERE id=101

$name=$mdbd->select(``name'',''main'',''id=?'',array(``101''=>''int'')); 
print ``name=$name <BR>'';
Kolejne parametry odpowiadają kolejnym elementom z zapytania SQL. Pole $data zawiera tablicę z wartościami podstawianymi pod ``?'', ze wskazaniem typu zmiennej. Jeśli niegdzie nie podamy parametrów do podstawienia (oznaczonych przez ``?''), to parametr $data można pominąć.

W wersji 1.0 obsugiwane są następujące typy danych (uwzględniane przy podstawianiu parametrów):

text
dowolny tekst (domyślny)
int
liczba całkowita
float
liczba rzeczywista

2.2.2 Przykład odczytania kilku danych z zapytania

Jeśli zapytanie zwraca więcej niż 1 wartość, to funkcja select() zwraca tablicę z odczytanymi danymi. Np. jeśli w zapytaniu chcemy odczytać kilka danych i kilka wierszy np. dla zapytania:

SELECT name,producer FROM main WHERE id>1
to wywołujemy kod postaci:

$data=$mdbd->select(``name,producer'',''main'',''id>1''); 
print ``
Jeśli w wyniku otrzymamy 2 wiersze, to otrzymamy strukturę:

array(``0''=>array(``name''=>''nazwa 1'', 
                   ``producer''=>''producent 1''), 
      ``1''=>array(``name''=>''nazwa 2'', 
                   ``producer''=>''producent 2'') 
     )

Jeśli w wyniku zapytania będzie jeden wiersz, to otrzymamy strukturę:

array(``name''=>''nazwa 1'', 
      ``producer''=>''nazwa 2'' 
     )

2.2.3 Liczba zwróconych wierszy $mdbd->num_rows

Po wywołaniu funkcji select()1 uaktualniana jest wartość $mbdb->num_rows, która zawiera liczbę zwróconych wierszy w ostatnim zapytaniu SQL.

2.3 funkcja query_select()

Funkcja query_select() służy do wykonania zapytania SELECT do bazy danych. Nie zwraca ona bezpośrednio danych, tylko zmienną $result, określającą wynik zapytania SQL. Funckję tą możemy wykorzystać w sytuacjach, kiedy chcemy odczytać np. tylko wybrane wiersze, lub zakres wierszy (np. od 3 do 7) z zapytania SQL. Do odczytawania danych ze struktury wskazanej przez query_select() służy funkcja read().

Parametry funkcji query_select() są takie same jest dla funkcji select().
Przykład:

SQL: SELECT name,producer FROM main WHERE id>1

$result=$mdbd->query_select(``name,producer'',''main'',''id>1'');

2.4 funkcja read()

Funkcja pozwala na odczytanie danych z wykonanego wcześniej (np. przez query_select() ) zapytania SQL.

$mdbd->read($result,$names,$rows)

Parametry:

$result
wartość zwracana przez $mdbd->query_select()
$names
tablica z nazwami pól, które odczytujemy np. array(``id'',''name'')
$rows
określenie, które pola odczytujemy np.: 1 lub 1,2 lub 2-5
Przykład:

Zapytanie: SELECT name,producer FROM main WHERE id>1

$result=$mdbd->query_select(``name,producer'',''main'',''id>1''); 
$data=$mdbd->read($result,array(``name'',''producer''),''2-3'');

print ``

Powyższy przykład spowoduje odczytanie z bazy, z tabeli main, pól name,producer, dla których id>1. Z wyniku zapytania zostaną odczytane wiersze od 2 do 3. Zmienna $data będzie miała postać:

array(``2''=>array(``name''=>''nazwa 1'', 
                   ``producer''=>''producer 1''), 
      ``3''=>array(``name''=>''nazwa 2'', 
                   ``producer''=>''producer 2'') 
     )

2.5 funkcja update()

Funckja update() służy do aktualizacji danych w bazie. Wywołanie:

$mdbd->update($table,$set,$where,$data)

Parametry:

$table
nazwa aktualizowanej tabeli
$set
nwazy modyfikowanych pól z wartosciami (lub określeniem parametru) np. name='nazwa 1', producer='producent 1' lub name=?,producer=?
$where
opcje WHERE z zapytania SQL np. "id=?, name=?"

$data
parametry podstawiane do zapytania SQL
Przykład:

SQL: UPDATE main SET name=?,producer=? WHERE id=?

$mdbd->update(``main'',''name=?,producer=?'',''id=?'', 

             array(``nazwa 1''     => ''text'', 
                    ``producent 1'' => ''text'', 
                     ``1''          => ''int'' 
                   ) 
             )      

Jeśli podalibyśmy SQL postaci:

UPDATE main SET name='nazwa 1,producer='producent 1' WHERE id=1

to parametr $data, można pominąć, gdyż w SQL nie byłoby żadnych parametrów do podstawienia. 

Funkcja zwraca true jeśli dane zostaną poprawnie zaktualizowane oraz false w p.w.

2.6 funkcja insert()

Funkcja insert() służy do dodawanie wpisów do tabeli. Wywołanie:

$mdbd->insert($table,$columns,$values,$data)

Parametry:

$table
nazwa aktualizowanej tabeli
$columns
pole, do których będziemy przypuisywać wartości np. ``name,producer''
$values
wartości pól np. ``?,?'' lub `` 'nazwa 1','producent 1' ``
$data
parametry podstawiane do zapytania SQL
Przykład:

SQL: INSERT INTO main SET (name, producer) VALUES (?,?)

$mdbd->insert(``main'',''name,producer'', 
              array(``nazwa1''=>''text'', 
                    ``producent 1''=>''text'' 
                   ) 
             )
Funkcja zwraca true jeśli dane zostaną poprawnie dodane do bazy oraz false w p.w.

2.7 funkcja delete()

Funkcja delete() służy do usuwania wpisów do tabeli. Wywołanie:

$mdbd->delete($table,$where,$data)

Parametry:

$table
nazwa aktualizowanej tabeli
$where
opcje WHERE z zapytania SQL np. "id=?, name=?"

$data
parametry podstawiane do zapytania SQL
Przykład:

SQL: DELETE FROM main WHERE id=?

$mdbd->delete(``main'',''id=?'', array(``1''=>''int''))
Funkcja zwraca true jeśli dane zostaną poprawnie usunięte z bazy oraz false w p.w.

3 Podsumowanie

Zalecane jest używanie tej klasy zamiast wprowadzania pełnego kodu obsługi Metabase. Klasa ta nie pozwala na dokonywanie dowolnych zapytań itp. do bazy danych, ale ujęte są w niej najczęstsze operacje wykonywane na bazie danych. W SOTEeSKLEP od wersji 2.6 obiekt tej klasy jest automatycznie generowany przy inicjacji bazy danych i jest dostępny pod nazwą $mdbd. Wcześniejsze wywołania klasy metabase.inc powinny zotsać stopniowo zastąpione przez wywołania odwołujące się do klasy MetabaseData.

2 DataForm 1.0

Integralną częścią tej dokumentacji jest opis klasy HTML_Form.

Klasa DataForm jest rozszerzeniem klasy z PEAR HTML_Form. Bazuje ona na danych dostarczanych przez funkcje klasy MetabaseData. Służy ona do szybkiego budowania elementów formularza bezpośrednio z danych pobranych z bazy.

4 Wymagania, lokalizacja

Do poprawnego działania DataForm wymagane są biblioteki MetabaseData i HTML_Form. Obie są automatycznie załaczane przy wywołaniu DataForm. Lokalizacja DataForm w SOTEeSKLEP:

require_once (``MetabaseData/DataForm.php'');
Załączne biblioteki w w/w pliku:

require_once (``MetabaseData/MetabaseData.php''); 
require_once (``PEAR/HTML/Form.php'');

5 Opis klasy

5.1 Tworzenie obiektu

Domyślnym obiektem jest obiekt o nazwie: $dbform
Tworzenie obiektu ma następującą postać:

$dbform = new MetabaseData($mdbd);
gdzie $mdbd to obiekt MetabaseData.

5.2 funkcja db_add_select()

Funkcja generuje element select formularza na podstawie danych pobranych z bazy. Wywołanie:

$dbform->db_add_select(&$data,$name,$title,$default, $size,$blank,$multiple,$attribs)

Parametry:

$data
tablica zwrócona przez wywołanie funkcji $mdbd->select()
Kolejne dane są odpowiednikami danych funkcji addSelect() z klasy HTML_Form.

5.2.1 Przykład wywołania

require_once ("MetabaseData/DataForm.php");  
$dbform = new DataForm($mdbd);  
$dbform->start(); 
$data=$mdbd->select("id,name","main");  
$dbform->db_add_select($data,"item[select]","title",49); 
$dbform->display();  
$dbform->end();
W wywołaniu $mdbd->select ważna jest kolejność column w 1 parametrze. W w/w przykładzie są to: ``id,name''. Pierwsza kolumna będzie wartością przekazywaną w formularzu, druga będzie wartością wyświetlaną w formularzu.

About this document ...

SOTEeSKLEP MetabaseData & DataForm

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -no_subdir -split 0 -show_section_numbers /tmp/lyx_tmpdir6468KEVxtV/lyx_tmpbuf0/metabase_data.tex

The translation was initiated by Marek Jakubowicz on 2003-11-16


Footnotes

...1
lub query_select()

next_inactive up previous
Marek Jakubowicz 2003-11-16