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