Laboratorium z przedmiotu Aplikacje WWW

Transkrypt

Laboratorium z przedmiotu Aplikacje WWW
Aplikacje WWW
Laboratorium z przedmiotu Aplikacje WWW - zestaw 05
Cel zajęć. Celem zajęć jest zapoznanie się z realizacją aplikacji WWW posiadających dostęp do danych.
Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć tematyka stanowi wprowadzenie do tworzenia
aplikacji WWW w języku ASP.NET, które to posiadają dostęp do bazy danych – MSSQL Server 2008. Aby ze
zrozumieniem zrealizować zadania, przewidziane do wykonania w ramach zajęć laboratoryjnych, należy zapoznać się
z następującymi zagadnieniami: kontrolka GridView, kontrolka DataList, kontrolka DetailsView, klasa DataSet, klasa
DataTable i klasa DataRow.
Kontrolkę jaką używamy w celu otrzymania źródeł danych korzystamy z SqlDataSource.
1.
Kontrolka GridView
Posiadając kontrolkę która dostarcza nam danych pierwszym zadaniem jest ich wyświetlenie. Do tego celu
między innymi służy kontrolka GridView. Jest ona traktowana jako podstawowa kontrolka wyświetlająca
dane otrzymane ze źródła danych. Wywodzi się z klasy BaseDataBoundControl, ale posiada wiele właściwości
nie dziedziczonych po tejże klasie. Najważniejsze przedstawia tabela:
AllowPaging
Określa, czy zostaje włączone stronicowanie,
domyślnie false.
AllowSorting
Określa, czy zostaje włączone sortowanie,
domyślnie false.
AutoGenerateColumns
Dla
wartości
true(domyślnie)
zostaje
automatycznie utworzone pole dla każdego pola
w źródle danych.
AutoGenerate[DeleteButton/EditButton/SelectButton]
Domyślnie false dla każdego przycisku. Jeżeli jest
true, dla każdego pola zostanie automatycznie
dodany przycisk(usuwania, edycji bądź wyboru).
Caption
Teks wygenerowany jako element nagłówka
HTML.
CellPadding
Liczba pikseli między zawartością komórki a jej
krawędzią.
Columns
Zwraca zbiór obiektów DataControlField.
DataKeys
Zbiór wartości klucza każdego rekordu.
DataSource
Określa źródło danych kontrolki.
EditIndex
Rozpoczynający się od zera indeks wierszy do
edycji. Domyślna -1 wskazuje, że nie ma wierszy
do edycji.
EmptyDataRowStyle
Wywodzi się z klasy WebControls.Style. Własność
stylu pustego wiersza danych.
EmptyDataText
Tekst, który zostanie wyświetlony, gdy kontrolka
dołączona do źródła danych nie zawiera żadnych
rekordów.
FooterRow
Zwraca wiersz stopki jako obiekt GridViewRow.
GirdLines
Określa, które linie siatki zostaną wyświetlone,
1
Aplikacje WWW
domyślnie None.
2.
HorizontalAlign
Określa poziome wyrównanie elementów
wewnątrz pojemnika takiego jak komórka.
Wartością domyślną jest NotSet.
PageCount
Wymagana liczba stron do wyświetlenia danych.
PageIndex
Rozpoczynający się od zera indeks bieżącej
strony.
PageSize
Liczba rekordów, które mają zostać wyświetlone
na stronie.
Rows
Zwraca zbiór GridRowView,
z danych w kontrolce.
SelectedDataKey
Zwraca wartość DataKey wraz z wartością klucza
aktualnie zaznaczonego wiersza.
SelectedIndex
Rozpoczynający się od zera indeks aktualnie
zaznaczonych elementów. Jeżeli takich brak(nie
zostały zaznaczone) to wartością zwróconą
będzie -1.
SelectedValue
Zwraca wartość DataKey aktualnie zaznaczonego
wiersza.
SortDirection
Zwraca aktualny kierunek sortowania.
SortExpression
Zwraca nazwę sortowanej kolumny.
TopPaperRow
Zwraca górny wiersz stronicowania jako obiekt
GridViewRow.
składający
się
Kontrolka DataList
Służy do tworzenia list danych na podstawie szablonów(wymienione niżej) Na podstawie niego jest jedną
z tych, w której sterujemy kodem HTML użytym do wygenerowania listy przez zdefiniowanie szablonów:
kodu HTML, opisującego sposób wyświetlania pojedynczego elementu listy.
Szablony kontrolki DataList:
AlternativeItemTemplate
Określa zawartość i wygląd każdego innego
elementu. Jeżeli nie zostanie zdefiniowany, dla
każdego elementu w kontrolce DataList zostanie
zastosowany ItemTemplate.
EditItemTemplate
Określa zawartość i wygląd każdego elementu,
który jest poddawany edycji w danej chwili.
Domyślnie gdy nie zdefiniowany to ItemTemplate.
FooterTemplate
Określa zawartość i wygląd stopki. Jeżeli się tego
nie określi, DataList nie będzie jej posiadać.
HeaderTemplate
Określa zawartość i wygląd nagłówka, tak jak ze
stopką, nie określenie tego parametru oznacza jego
brak.
2
Aplikacje WWW
ItemTemplate
Wymagany. Domyślna definicja dla zawartości
i wyglądu każdego elementu.
SelectedItemTemplate
Określa zawartość i wygląd separatorów między
elementami. Jeżeli nie zostanie zdefiniowany to ich
nie będzie.
Właściwości kontrolki DataList, nie dziedziczone z klasy WebControl:
3.
Caption
Teks wygenerowany
HTML.
jako
element
nagłówka
CellPading
Liczba pikseli między zawartością komórki a jej
krawędzią.
DataKeyField
Określa pole klucza w źródle danych.
DataKeys
Zbiór wartości kluczy każdego rekordu.
DataMember
Określa element danych w wieloelementowym
źródle danych.
DataSource
Określa źródło danych komórki.
EditItmeIndex
Rozpoczynający się od zera indeks elementów
aktualnie zaznaczonych w celu edycji. Jeżeli nie
zostały zaznaczone żadne to wartość -1.
EditItemStyle
Własność stylu(z WebControl.Style) dla aktualnie
zaznaczonego w celu edycji elementu.
GridLines
Określa, które linie siatki zostaną wyświetlone,
domyślnie None.
Items
Zbiór wszystkich elementów kontrolki.
RepeatColumns
Określa liczbę wyświetlanych kolumn.
RepeatDirection
Dla wartości Horizontal elementy zostaną
wyświetlone od lewej do prawej strony – potem od
góry do dołu. Dla wartości Veritical będzie to od
góry do dołu – do lewej do prawej(wartość
domyślna).
SelectedIndex
Rozpoczynający się
zera indeks aktualnie
zaznaczonych elementów. Jeżeli ich brak to -1.
SelectedItem
Zwraca aktualnie zaznaczony element.
SelectedValue
Zwraca zaznaczony aktualnie element.
Kontrolka DetailsView
Służy do wyświetlania danych podobnie jak DataList, przy czym tutaj wyświetlany jest jeden rekord
w danym momencie. Wywodzi się z klasy BaseDataBoundControl i współpracuje z kontrolką GridView
i ma wiele tych samych właściwości.
3
Aplikacje WWW
Niektóre właściwości kontrolki DetailsView:
AllowPaging
Określa, czy zostało włączone stronicowanie,
domyślnie false.
AutoGenerateDeleteButton
Jeżeli przyjmie wartość true, to do każdego wiersza
zostanie dołączony przycisk Delete(domyślnie
false).
AutoGenerateRows
Dla wartości true, wyświetli automatycznie pola
połączonych danych(domyślnie).
BottomPagerRow
Zwraca dolny wiersz stronicowania jako obiekt
DetailsViewRow.
CellSpacing
Liczba pikseli między komórkami a siatką.
CurrentMode
Zwraca aktualny tryb edycji kontrolki. Dopóki nie
zostanie ustawione inaczej za pomocą DefaultMode
wartością domyślną jest ReadOnly.
DataItem
Zwraca odniesienie do aktualnie wyświetlanego
elementu w komórce.
DataKey
Zwraca klucz podstawowy bieżącego elementu.
DataKeyNames
Tablica pól podstawowych elementów.
DataSource
Określa źródło danych kontrolki.
EmptyDataText
Tekst wyświetlany gdy kontrolka jest dołączona do
źródła danych, które nie zawiera rekordów.
EnablePagingCallbacks
Dla true, do stronicowania będą wykorzystywane
wywołania zwrotne po stronie klienta – domyślnie
false.
Fields
Zwraca zbiór wszystkich pól w kontrolce.
GridLines
Określa, które linie siatki zostaną wyświetlone –
domyślnie None.
InsertRowStyle
Wywodzące się z klasy WebControl.Style właściwości
stylów dla umieszczanego wiersza.
PageIndex
Rozpoczynający się od zera indeks bieżącej strony.
PagerSettings
Zwraca obiekt PagerSettings, który pozwala na
przeprowadzenie
konfiguracji
przycisków
stronicowania.
SelectedValue
Zwraca wartość klucza aktualnie zaznaczonego
wiersza.
TopPagerRow
Zwraca górny wiersz stronicowania jako obiekt
DetailsViewRow.
4
Aplikacje WWW
4.
Klasa DataSet
Klasa DataSet stanowi bogaty podzbiór całej bazy danych. Jest buforowany w stanie sesji lub w pamieci
komputera – czyli bez ciągłego połączenia z bazą danych. Zbiór ten będzie okresowo nawiązywał
połączenie ze swoją bazą danych w celu aktualizacji i wprowadzenia zmian do bazy.
Ważne właściwości klasy DataSet(read only):
5.
DefaultViewManager
Zwraca podgląd danych w klasie DataSet, który
pozwala
na
filtrowanie,
wyszukiwanie
i nawigowanie między nimi.
HasErrors
Zwraca wartość true, jeżeli wystąpiły jakiekolwiek
błędy w dowolnym rekordzie jakiejkolwiek tabeli.
Relations
Zwraca zbiór obiektów DataRealtions.
Tables
Zwraca zbiór obiektów DataTable.
AcceptChanges
Akceptuje wszystkie zmiany, które zostały
wprowadzone od momentu wczytania lub
poprzedniego wywołania metody AcceptChanges.
Clear
Usuwa dowolne dane ze zbioru danych.
GetChanges
Zwraca kopię zbioru danych zawierającego
wszystkie zmiany wprowadzone od momentu
wczytania poprzedniego wywołania lub wywołania
metody AcceptChanges.
GetXML
Zwraca reprezentację danych XML w zbiorze
danych.
GetXMLSchema
Zwraca schemat XSD dla reprezentacji danych
XML w zbiorze danych.
Merge
Scala dane ze zbioru z innym zbiorem danych.
ReadXML
Wczytuje schemat XML oraz dane do zbioru
danych.
RejectChanges
Powoduje powrót do stanu ostatniej operacji
AcceptChanges.
WriteXML
Zapisuje schemat XML oraz dane ze zbioru
danych.
Klasa DataTable
Właściwość Tables obiektu DataSet zwraca zbiór DataTableCollection, który z kolei zawiera wszystkie
obiekty DataTable ze zbioru danych. Najważniejsze właściwości i metody klasy DataTable przedstawia
tabela:
Ważne właściwości i metody klasy DataTable:
ChildRelations
Zwraca zbiór relacji obiektów potomnych.
Columns
Zwraca zbiór kolumn.
Constrains
Zwraca zbiór powiązań.
5
Aplikacje WWW
6.
DefaultView
Zwraca widok tabeli z możliwością filtrowania.
PrimaryKey
Tablica kolumn jako klucz podstawowy danej tabeli.
AcceptChanges
Akceptuje wszystkie zmiany, które zostały
wprowadzone od momentu wczytania lub
poprzedniego wywołania metody AcceptChanges.
Clear
Usuwa wszystkie dane z tabeli.
GetChanges
Zwraca kopię obiektu DataTable, który zawiera
wszystkie zmiany wprowadzone od momentu
poprzedniego wywołania metody AcceptChanges.
GetErrors
Zwraca tablice rekordów zawierających błędy.
ImportRow
Kopiuje rekord do tabeli, włączając wszystkie
wartości i ustawienia.
LoadDataRow
Odnajduje i uaktualnia określony rekord. Jeżeli nie
zostanie znaleziony pasujący rekord, wówczas
metoda tworzy nowy.
Merge
Scala określony obiekt
obiektem DataTable.
NewRow
Tworzy obiekt DataRow, zachowując ten sam
schemat który jest w tabeli.
DataTable
z bieżącym
Klasa DataRow
Zwraca zestaw rekordów dla podanej tabeli. Ten zbiór jest wykorzystywany do analizowania wyników
zapytania względem bazy danych – przechodząc przez rekordy i je odpowiednio analizując.
Ważne właściwości i metodyklasy DataRow:
Item
Pobiera lub ustawia dane przechowywane
w określonej kolumnie(w C# jest to indexer).
HasErrors
Zwraca wartość true, jeżeli wystąpiły jakiekolwiek
błędy w dowolnym rekordzie jakiejkolwiek tabeli.
ItemArray
Pobiera lub ustawia wszystkie wartości rekordu,
używając w tym celu tablicy.
Table
Pobiera tablicę, która posiada dany rekord.
AcceptChanges
Akceptuje wszystkie zmiany, które zostały
wprowadzone od momentu wczytania lub
poprzedniego wywołania metody AcceptChanges.
BeginEdit
Rozpoczyna operacje edycji.
6
Aplikacje WWW
CancelEdit
Przerywa operacje edycji.
Delete
Usuwa obiekt DataRow z DataTable.
EndEdit
Kończy operacje edycji.
GetChildRows
Pobiera rekordy potomne danego rekordu.
GetParentRow
Pobiera rekord nadrzędny danego rekordu.
RejectChanges
Powoduje powrót do stanu ostatniej operacji
AcceptChanges.
Zadanie 1. Proszę zrealizować aplikację WWW, która powinna odznaczać się następującymi cechami:

Aplikacja ma łączyć się z bazą danych zawierającą informacje na temat studentów kierunku informatyka.

Na stronie internetowej mają zostać wyświetlone pobrane z bazy rekordy.

Strona ma umożliwiać edycję danych, usuwanie rekordów oraz dodawanie rekordów do bazy.

Do realizacji aplikacji należy użyć kontrolek typu SqlDataSource oraz kontrolki GridView.
Aby zrealizować zadanie należy wykonać następujące kroki:

Proszę w swoim katalogu utworzyć projekt o nazwie „Zadanie 5.1”.
UWAGA! Przy dodawaniu do strony kolejnych kontrolek proszę o używanie unikalnych ID kontrolek
o nazwie związanej z ich przeznaczeniem, np. „buttonDodaj”.

Proszę o sprawdzenie, czy włączony został SQL Server. W tym celu proszę o wybranie z Menu Start opcji
„Programy” > „Microsoft SQL Server 2008” > „Configuration Tools” > „SQL Server Configuration
Manager”. Po uruchomieniu okna menedżera konfiguracji proszę o wybór z lewego panelu opcji „SQL Server
2005 Services”. Pozycje po prawej stronie powinny posiadać stan „Running”, w przeciwnym wypadku proszę
o ich zaznaczenie i naciśnięcie guzika oznaczonego zielonym trójkątem.

Następnie proszę o przejście do Visual Studio oraz wybranie z menu opcji „View” > „Server Explorer”.
W nowo otwartym panelu proszę o kliknięcie prawym przyciskiem myszy na opcję „Data Connections”,
a następnie o wybranie opcji „Create New SQL Server Database…”. W nowo otwartym oknie proszę
o wybór nazwy serwera z listy, a następnie o podanie nazwy bazy „AWWW”.
7
Aplikacje WWW

Po wykonaniu powyższej operacji proszę o przejście do Server Explorer i rozwinięcie elementów nowo
utworzonej bazy (znaczek plus). Następnie proszę o kliknięcie prawym przyciskiem myszy na element
„Tables” oraz wybór opcji „Add New Table”. W nowo otwartej zakładce proszę o utworzenie tabeli
„Studenci”, a następnie o jej zapis (CTRL + S).
Tabela powinna być zgodna z poniższym schematem:

Następnie proszę o powrót do okna Server Explorer, kliknięcie prawym przyciskiem myszy na utworzoną
tabelę „Studenci” i wybranie opcji „Show Table Data”. W nowo otwartej zakładce proszę o dodanie do tabeli
kilku przykładowych rekordów.

Po wykonaniu powyższych czynności proszę o dodanie do strony kontrolki typu SqlDataSource. Następnie
zgodnie z poniższym rysunkiem proszę o wybranie opcji Configure Data Source.
Następnie proszę o wybór bazy „AWWW” z rozwijanej listy (proszę zwrócić uwagę na utworzony opis
połączenia - connection string). Po wykonaniu tej czynności proszę o dwukrotne naciśnięcie przycisku „Next”.
W widocznym oknie proszę o wybór opcji zgodnie z poniższym rysunkiem.
8
Aplikacje WWW
Następnie proszę o wybór przycisku „Next”. W aktywnym oknie proszę o przetestowanie połączenie
(przycisk „Test Query”), co powinno spowodować wyświetlenie dodanych wcześniej rekordów. Po
wykonaniu tej operacji proszę o naciśnięcie przycisku „Finish”.

Następnie proszę o umieszczenie na stronie kontrolki typu GridView i przyporządkowanie jej dodanej
wcześniej kontrolki typu SqlDataSource jako źródło danych (właściwość DataSourceID).

Po wykonaniu tej czynności proszę o zaznaczenie kontrolki typu GridView i wybór opcji Add New Column, co
przedstawia poniższy rysunek.

W nowo otwartym oknie proszę o podanie następujących danych:
9
Aplikacje WWW
Po wykonaniu tej operacji proszę o przetestowanie działania aplikacji.

Aby móc zapisać edytowane dane, proszę dodać do strony kontrolkę typu Button służącą do zapisu. Proszę
o przypisanie jej zdarzeniu OnClick następującego kodu (gdzie „GridView1” należy zmienić na nazwę
kontrolki typu GridView):

Następnie proszę o przetestowanie próby zapisu zmian w dowolnym edytowanym rekordzie. Próba ta
powinna spowodować błąd, ponieważ kontrolka typu SqlDataSource nie posiada zdefiniowanego polecenia
typu Update. Aby zdefiniować polecenie, proszę o zaznaczenie tej kontrolki oraz o wybór z panelu
właściwości znaku trzech kropek przy właściwości UpdateQuery. Po odpowiedniej edycji, okno powinno
wyglądać następująco:
Opcja Parameter Source danego parametru ustawiona jako „Control” świadczy o tym, że wartość wybranego
parametru będą pobierane z kontrolki o nazwie ustalonej poprzez ControlID.

Należy także do właściwości DataKeyNames kontrolki typu GridView dopisać nazwę klucza głównego tabeli.

Po wykonaniu powyższych czynności proszę o przetestowanie edycji rekordów z poziomu aplikacji.

Następnie proszę o dodanie do strony przycisku powodującego anulowanie edycji aktualnie wybranego
rekordu. Proszę o implementację jego zdarzenia OnClick.
Podpowiedź: należy zmienić wartość parametru EditIndex kontrolki typu GridView.

Po wykonaniu powyższych czynności proszę o dodanie nowej kolumny do kontrolki GridView, zawierającej
przycisk odpowiedzialny za usunięcie rekordu (przy dodawaniu przycisku właściwość CommandName musi być
ustawiona jako „Delete”). Następnie proszę o edycję właściwości DeleteQuery kontrolki typu SqlDataSource,
w celu umożliwienia usunięcia rekordu przez naciśnięcie przycisku.

Po wykonaniu powyższej czynności proszę o dodanie do strony następujących kontrolek:
10
Aplikacje WWW
Następnie proszę o dodanie funkcjonalności polegającej na dodaniu do bazy nowego rekordu po naciśnięciu
przycisku „Dodaj”. Dane nowego rekordu mają być pobierane z powyższych kontrolek.
Podpowiedź: zdarzenie OnClick przycisku wywołuje metodę insert kontrolki typu SqlDataSource. Należy
uprzednio zdefiniować właściwość InsertQuery tej kontrolki.
Przy ocenie zadania główny nacisk będzie kładziony na:

Wykonanie wszystkich założeń ujętych w treści zadania.

Prawidłowe nazewnictwo obiektów kontrolek.

Rozmieszczenie kontrolek na stronie (użycie CSS).

Sposób implementacji kasowania rekordu.

Sposób implementacji dodawania rekordu do bazy.
Zadanie 2. Proszę zrealizować aplikację WWW, która powinna odznaczać się następującymi cechami:

Aplikacja ma łączyć się z bazą danych zawierającą informacje na temat samochodów.

Na stronie internetowej mają zostać wyświetlone pobrane z bazy rekordy.

Strona ma umożliwiać dodanie nowych rekordów do bazy.

Tabela „Samochody” ma zawierać następujące pola:

NrRejestracyjny

Marka

RokProdukcji

IloscPasazerow

Strona ma zawierać listę z wszystkimi numerami rejestracyjnymi samochodów znajdujących się w bazie.

Aplikacja nie może wykorzystywać kontrolki typu SqlDataSource.
11
Aplikacje WWW
Aby zrealizować zadanie należy wykonać następujące kroki:

Proszę w swoim katalogu utworzyć projekt o nazwie „Zadanie 5.2”.
UWAGA! Przy dodawaniu do strony kolejnych kontrolek proszę o używanie unikalnych ID kontrolek
o nazwie związanej z ich przeznaczeniem, np. „buttonDodaj”.

Proszę o utworzenie tabeli „Samochody” zgodnie z założeniami zadania.

Proszę o dodanie do projektu kontrolki typu GridView.

Następnie proszę o zdefiniowanie w klasie „Default” pola „connectionString” zgodnie z podanym
schematem (zastępując fragment „nazwa_hosta” nazwą komputera):
private string connectionString = "Data Source='[nazwa_hosta]\\SQLEXPRESS';Integrated
Security=True;Pooling=False;Initial Catalog='AWWW'";

Następnie proszę o implementację metody powodującej załadowanie danych tabeli samochody do kontrolki
typu GridView:
Po wykonaniu tej czynności proszę o wykorzystanie tej metody przy każdym załadowaniu strony.

Następnie proszę o dodanie do strony kontrolek zgodnie z poniższym rysunkiem:

Po wykonaniu tej czynności proszę o implementację metody „UpdateDB”, odpowiedzialnej za dokonywanie
zmian w tabeli:
12
Aplikacje WWW

Następnie proszę o implementację obsługi zdarzenia OnClick przycisku „Dodaj samochód” (ma powodować
dodanie samochodu o podanych danych do bazy), wykorzystując przy tym metodę „UpdateDB”.

Następnie proszę o dodanie do strony kontrolki typu DropDownList, która docelowo ma przechowywać
numery rejestracyjne samochodów.

Następnie proszę o implementację metod, które będą odpowiedzialne za wyświetlenie w kontrolce typu
DropDownList wymaganych informacji:

Metoda „LoadList” ma być wywoływana każdorazowo przy ładowaniu aplikacji.
Przy ocenie zadania główny nacisk będzie kładziony na:

Wykonanie wszystkich założeń ujętych w treści zadania.

Prawidłowe nazewnictwo obiektów kontrolek.

Wygląd aplikacji.

Sposób implementacji metod.
13
Aplikacje WWW
Zadanie do domu. Proszę zrealizować aplikację WWW, która powinna odznaczać się następującymi cechami:

Aplikacja ta ma stanowić rozszerzenie aplikacji z zadania drugiego.

Aplikacja ma posiadać dostęp do tabeli „Ubezpieczenia”, która ma składać się z następujących pól:

NrUbezpieczenia (klucz główny)

NrRejestracyjny (klucz obcy powiązany z polem tabeli „Samochody”)

RodzajUbezpieczenia

Kwota

DataRozpoczecia

DataZakonczenia

Aplikacja ma umożliwiać wyświetlenie i edycję danych z tabeli ubezpieczenia.

Aplikacja ma umożliwiać dodanie do tabeli nowego ubezpieczenia (nr rejestracyjny ubezpieczanego
samochodu ma zostać wybrany z zaimplementowanej wcześniej listy).
Zagadnienia, które należy uznać za przyswojone w trakcie zajęć. Po zajęciach będzie obowiązywać praktyczna
znajomość:

Znajomość języka zapytań SQL.

Umiejętność zarządzania bazą danych z poziomu aplikacji ASP.NET.

Znajomość ADO.NET.

Znajomość SQL Server.
Zagadnienia do samodzielnego zgłębienia dla dociekliwych. Osoby zainteresowane mogą dodatkowo
zapoznać się z następującymi tematami:

Technologia LINQ.
Zagadnienia do powtórzenia na następne zajęcia. Przed kolejnymi zajęciami należy powtórzyć następujące
zagadnienia:

Tworzenie szablonu strony za pomocą Master Page.

Kontrolki własne i kontrolki użytkownika.
Wybrane aspekty dotyczące implementacji z wykorzystaniem języka PHP. Język darmowy często pojawia się
w parze z darmową bazą danych – MySQL. Baza ta posiada wiele różnych wersji rozwojowych od 4.x do 5.x, posiada
też wiele typów licencyjnych – niektórych płatnych innych mniej. Jest jedną trzecią z najbardziej znanych baz danych.
Między innymi przez darmową licencję jest bardzo często spotykanym połączeniem z językiem PHP(ASP tez może
z niej korzystać). Połączenie bazy z skryptem wygląda następująco:
14
Aplikacje WWW

W linii 3 zaprezentowano pierwszą z funkcji – ta służy do połączenia się z bazą danych – pierwszy parametr
to adres serwera bazy danych, drugi i trzeci to odpowiednio login i hasło do konta na tym serwerze.

Kolejną funkcją jest wybór bazy danych – odpowiednio parametrem jest nazwa bazy. Przed funkcją można
dodać znak „@” ‘uciszający’ komunikat o ewentualnym błędzie braku takiej bazy. Zabieg ten stosuje się
w celu uchronienia klienta przez naocznym spostrzeżeniem parametrów logowania do bazy danych – co
może być poufne ;)

Jak zastosować te dwie funkcje w praktyce – oto przykład:

W linii 2 sprawdzone zostaje połączenie z serwerem – jeżeli nie istnieje – zwrócony zostanie błąd. W linii 4
jest analogiczna sytuacja – tutaj jeżeli taka nazwa bazy nie będzie istnieć. Widać na tym przykładzie
automatycznie jak działają funkcje i co zwracają w razie niepowodzenia(prawdę lub fałsz).

Kolejny kod prezentuje działanie pytania na istniejącą już bazę danych. Ciekawostką jest, że w ten sposób
można wykonywać wszystkie najważniejsze polecenia SQL – Selekt, Insert, Update oraz Delete.

Linia 7 to pytanie SQL’owe. Linia 8 to funkcja wywołująca zadane pytanie na zadanym połączeniu
z serwerem. Drugi parametr jest opcjonalny – ale czasem przydatny… Funkcja mysql_query zwraca wartość
różną od zera jeżeli pytanie zostało poprawnie przetworzone.
15
Aplikacje WWW

Pierwszym sposobem na wydobycie danych z zapytania SQL jest użycie funkcji mysql_fetch_row(). Różni się
ona od kolejnej tylko i wyłączeni sposobem odczytu danych – tu odpowiednio indeksowane.

Widać na listingu wyżej różnice między trzema sposobami odczytu danych z pytania SQL. Proszę zwrócić na
linię 23. Po każdej operacji odczytu, zapisu w bazie danych należy zamknąć połączenie. Nie zamknięcie
powoduje memory leak i może znacząco spowolnić pracę serwera, a zamknięcie podwójne(np. dwa razy
wywołanie tej metody pod rząd) powoduje również błąd. Metoda ta szczególnie dobrze pasuje do destruktora
klasy obsługi połączenia z bazą danych. Posiadając kilka połączeni z różnymi serwerami – należy zawsze na
końcu dokonać rozłączenia – czyli zamknąć połączenie.

Ciekawostką i ważnym elementem jest obsługa wyjątków problemów z pytaniem SQL. W PHP istnieje pewna
funkcja kończąca połączenie oraz zgłaszająca błąd:
Jak widać jej nazwa jest adekwatna do pełniącej roli.
16