php, microsoft iis i sql server. projektowanie i programowanie baz danych

26
Wydawnictwo Helion ul. Kociuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: [email protected] PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych Autor: Andrzej Szel„g ISBN: 978-83-246-1513-1 Format: 158x235, stron: 368 Poznaj i wykorzystaj narzŒdzia do projektowania baz danych Jak konfigurowa repozytorium PEAR? Jak przetwarza formularze za pomoc„ jŒzyka PHP? Jak wprowadza dane do tabeli bazy danych, a pniej je usuwa? UmiejŒtno tworzenia interaktywnych stron www typu e-commerce i zarz„dzania nimi jest dzisiaj w‡aciwie niezbŒdna. Przydaje siŒ nie tylko administratorom sieci, ale tak¿e wszystkim informatykom i w‡acicielom firm. Relacyjne bazy danych stanowi„ podstawŒ nowoczesnej aplikacji internetowej, wiŒc przede wszystkim nale¿y pozna najpopularniejsze jŒzyki wykorzystywane podczas pracy na tych bazach: jŒzyk skryptowy PHP oraz jŒzyk zapytaæ SQL, a tak¿e internetowe us‡ugi informacyjne (IIS) wystŒpuj„ce w najnowszych serwerowych systemach operacyjnych Microsoft Windows. Ksi„¿ka PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych w przystŒpny sposb i na konkretnym przyk‡adzie przedstawia zagadnienia dotycz„ce projektowania, programowania i implementowania relacyjnej bazy danych. Mimo ¿e podrŒcznik przeznaczony jest dla osb, ktre przynajmniej w niewielkim stopniu orientuj„ siŒ w tej tematyce, szeroka skala prezentowanych informacji (od prostych zagadnieæ teoretycznych do problemw zaawansowanych technicznie) sprawia, ¿e ka¿dy mo¿e z niego skorzysta aby na przyk‡ad nauczy siŒ podstawowych instrukcji jŒzyka SQL i PHP, instalowania i konfigurowania ich w systemie Windows, korzystania z us‡ug IIS i wreszcie zarz„dzania w‡asn„ baz„ danych. System zarz„dzania baz„ danych Nazwy i typy danych Indeksy, klucze i schematy Architektura baz danych Normalizacja i projektowanie baz danych rodowisko jŒzyka SQL Podstawowe klauzule jŒzyka SQL Podstawowe w‡aciwoci jŒzyka PHP Architektura us‡ug IIS Obs‡uga baz danych Microsoft SQL z poziomu PHP PEAR Znajdziesz tu wszystko, czego potrzebujesz, aby stworzy w‡asn„ profesjonaln„ bazŒ danych!

Upload: wydawnictwo-helion

Post on 29-Nov-2014

2.410 views

Category:

Technology


0 download

DESCRIPTION

Poznaj i wykorzystaj narzędzia do projektowania baz danych * Jak konfigurować repozytorium PEAR?* Jak przetwarzać formularze za pomocą języka PHP?* Jak wprowadzać dane do tabeli bazy danych, a później je usuwać?Umiejętność tworzenia interaktywnych stron www typu e-commerce i zarządzania nimi jest dzisiaj właściwie niezbędna. Przydaje się nie tylko administratorom sieci, ale także wszystkim informatykom i właścicielom firm. Relacyjne bazy danych stanowią podstawę nowoczesnej aplikacji internetowej, więc przede wszystkim należy poznać najpopularniejsze języki wykorzystywane podczas pracy na tych bazach: język skryptowy PHP oraz język zapytań SQL, a także internetowe usługi informacyjne (IIS) występujące w najnowszych serwerowych systemach operacyjnych Microsoft Windows.Książka „PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych” w przystępny sposób i na konkretnym przykładzie przedstawia zagadnienia dotyczące projektowania, programowania i implementowania relacyjnej bazy danych. Mimo że podręcznik przeznaczony jest dla osób, które przynajmniej w niewielkim stopniu orientują się w tej tematyce, szeroka skala prezentowanych informacji (od prostych zagadnień teoretycznych do problemów zaawansowanych technicznie) sprawia, że każdy może z niego skorzystać - aby na przykład nauczyć się podstawowych instrukcji języka SQL i PHP, instalowania i konfigurowania ich w systemie Windows, korzystania z usług IIS i wreszcie zarządzania własną bazą danych.* System zarządzania bazą danych* Nazwy i typy danych* Indeksy, klucze i schematy* Architektura baz danych* Normalizacja i projektowanie baz danych* Środowisko języka SQL* Podstawowe klauzule języka SQL* Podstawowe właściwości języka PHP* Architektura usług IIS* Obsługa baz danych Microsoft SQL z poziomu PHP* PEARZnajdziesz tu wszystko, czego potrzebujesz, aby stworzyć własną profesjonalną bazę danych!

TRANSCRIPT

Page 1: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Wydawnictwo Helionul. Ko�ciuszki 1c44-100 Gliwicetel. 032 230 98 63e-mail: [email protected]

PHP, Microsoft IIS i SQLServer. Projektowaniei programowanie baz danychAutor: Andrzej Szel¹gISBN: 978-83-246-1513-1Format: 158x235, stron: 368

Poznaj i wykorzystaj narzêdzia do projektowania baz danych

� Jak konfigurowaæ repozytorium PEAR? � Jak przetwarzaæ formularze za pomoc¹ jêzyka PHP? � Jak wprowadzaæ dane do tabeli bazy danych, a pó�niej je usuwaæ?

Umiejêtno�æ tworzenia interaktywnych stron www typu e-commerce i zarz¹dzania nimi jest dzisiaj w³a�ciwie niezbêdna. Przydaje siê nie tylko administratorom sieci, ale tak¿e wszystkim informatykom i w³a�cicielom firm. Relacyjne bazy danych stanowi¹ podstawê nowoczesnej aplikacji internetowej, wiêc przede wszystkim nale¿y poznaæ najpopularniejsze jêzyki wykorzystywane podczas pracy na tych bazach: jêzyk skryptowy PHP oraz jêzyk zapytañ SQL, a tak¿e internetowe us³ugi informacyjne (IIS) wystêpuj¹ce w najnowszych serwerowych systemach operacyjnych Microsoft Windows.

Ksi¹¿ka �PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych� w przystêpny sposób i na konkretnym przyk³adzie przedstawia zagadnienia dotycz¹ce projektowania, programowania i implementowania relacyjnej bazy danych. Mimo ¿e podrêcznik przeznaczony jest dla osób, które przynajmniej w niewielkim stopniu orientuj¹ siê w tej tematyce, szeroka skala prezentowanych informacji (od prostych zagadnieñ teoretycznych do problemów zaawansowanych technicznie) sprawia,¿e ka¿dy mo¿e z niego skorzystaæ � aby na przyk³ad nauczyæ siê podstawowych instrukcji jêzyka SQL i PHP, instalowania i konfigurowania ich w systemie Windows, korzystania z us³ug IIS i wreszcie zarz¹dzania w³asn¹ baz¹ danych.

� System zarz¹dzania baz¹ danych � Nazwy i typy danych � Indeksy, klucze i schematy � Architektura baz danych � Normalizacja i projektowanie baz danych � �rodowisko jêzyka SQL � Podstawowe klauzule jêzyka SQL � Podstawowe w³a�ciwo�ci jêzyka PHP � Architektura us³ug IIS � Obs³uga baz danych Microsoft SQL z poziomu PHP � PEAR

Znajdziesz tu wszystko, czego potrzebujesz,aby stworzyæ w³asn¹ profesjonaln¹ bazê danych!

Page 2: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Spis tre!ci

Wprowadzenie .................................................................................. 9Kto powinien przeczyta+ t% ksi$!k%? ..............................................................................10O czym jest ta ksi$!ka? ..................................................................................................11Informacje o testowym #rodowisku sieciowym .............................................................13Przyk"ady do ksi$!ki .......................................................................................................24

Rozdzia 1. Podstawy baz danych ..................................................................... 25Czym jest baza danych? ................................................................................................. 25System Zarz$dzania Baz$ Danych .................................................................................. 27Podstawowe poj%cia zwi$zane z bazami danych ............................................................ 30

Tabele, kolumny i wiersze danych ........................................................................... 31Nazwy i typy danych ................................................................................................ 36Indeksy, klucze i schematy ....................................................................................... 38

Architektura baz danych ................................................................................................. 43Typy baz danych ............................................................................................................. 46Normalizacja relacyjnej bazy danych ............................................................................. 48Projektowanie relacyjnej bazy danych ............................................................................ 51Tworzenie relacyjnej bazy danych ................................................................................. 56Dodatkowe &ród"a informacji ......................................................................................... 68

Rozdzia 2. J:zyk SQL ...................................................................................... 69Czym jest SQL? .............................................................................................................. 69=rodowisko j%zyka SQL ................................................................................................. 73Podstawowe instrukcje j%zyka SQL ............................................................................... 77Data Definition Language (DDL) ................................................................................... 78

Instrukcja CREATE DATABASE ........................................................................... 79Instrukcja CREATE TABLE .................................................................................... 81Instrukcja CREATE VIEW ...................................................................................... 83Instrukcja CREATE INDEX .................................................................................... 84

Data Manipulation Language (DML) ............................................................................. 85Instrukcja INSERT ................................................................................................... 86Instrukcja SELECT .................................................................................................. 88Instrukcja UPDATE ................................................................................................. 93Instrukcja DELETE .................................................................................................. 95

Data Control Language (DCL) ....................................................................................... 96

Page 3: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

6 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Podstawowe klauzule j%zyka SQL .................................................................................. 97Klauzula FROM ............................................................................................................. 97

Klauzula WHERE .................................................................................................... 98Klauzula ORDER BY .............................................................................................. 99Klauzula GROUP BY ............................................................................................ 100Klauzula HAVING ................................................................................................. 101

Dodatkowe &ród"a informacji ....................................................................................... 102

Rozdzia 3. PHP ............................................................................................. 103Czym jest PHP? ............................................................................................................ 104Podstawowe elementy j%zyka PHP ............................................................................... 114

Zmienne i sta"e ....................................................................................................... 114Wyra!enia i operatory ............................................................................................ 117Struktury kontroluj$ce ............................................................................................ 124Funkcje ................................................................................................................... 129Tablice .................................................................................................................... 131

Podstawowe w"a#ciwo#ci j%zyka PHP .......................................................................... 133Przetwarzanie formularzy ....................................................................................... 133Zapis i odczyt plików ............................................................................................. 138Data i czas .............................................................................................................. 141

Instalowanie PHP w systemie Windows Server 2003 i Windows Vista ....................... 143Pobieranie PHP ...................................................................................................... 144Instalowanie i konfigurowanie PHP w systemie Windows .................................... 146

Dodatkowe &ród"a informacji ....................................................................................... 156

Rozdzia 4. Microsoft IIS ................................................................................ 157Podstawowe informacje o us"ugach IIS ........................................................................ 158Architektura us"ug IIS .................................................................................................. 160Instalowanie serwera IIS 6.0 w systemie Windows Server 2003 .................................. 165Instalowanie serwera IIS 7.0 w systemie Windows Vista ............................................ 180Rozszerzenia ISAPI i CGI/FastCGI ............................................................................. 184Dodawanie obs"ugi PHP do serwera IIS 6.0 jako rozszerzenia ISAPI .......................... 185Dodawanie obs"ugi PHP do serwera IIS 7.0 jako rozszerzenia ISAPI .......................... 204Dodawanie obs"ugi PHP do serwera IIS 6.0 jako rozszerzenia CGI ................................... 210Dodatkowe &ród"a informacji ....................................................................................... 218

Rozdzia 5. Microsoft SQL Server ................................................................... 221Microsoft SQL Server 2000 .......................................................................................... 222

Wprowadzenie ........................................................................................................ 222Przygotowanie do instalacji .................................................................................... 223Wymagania sprz%towe i programowe .................................................................... 224Instalowanie bazy danych programu Microsoft SQL Server 2000 ......................... 225Instalowanie dodatku Service Pack 4 dla Microsoft SQL Server 2000 .................. 233

Microsoft SQL Server 2005 .......................................................................................... 238Wprowadzenie ........................................................................................................ 238Przygotowanie do instalacji .................................................................................... 240Wymagania sprz%towe i programowe .................................................................... 241Instalowanie bazy danych programu Microsoft SQL Server 2005 ......................... 241Instalowanie dodatku Service Pack 2 dla Microsoft SQL Server 2005 .................. 257

Logowanie do serwera bazy danych programu Microsoft SQL Server 2005 ............... 264Implementacja relacyjnej bazy danych w programie

Microsoft SQL Server 2005 ................................................................................. 265Dodatkowe &ród"a informacji ....................................................................................... 270

Page 4: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Spis treKci 7

Rozdzia 6. Obs uga bazy danych Microsoft SQL Server z poziomu PHP ............ 271Aplikacja Obs"uga bazy danych programu Microsoft SQL Server z poziomu

skryptów PHP ............................................................................................................ 272Standardy sieciowe W3C ....................................................................................... 276Oddzielenie struktury, prezentacji i zachowania .................................................... 276Deklaracja typu dokumentu i typu przestrzeni nazw .............................................. 278Deklaracja typu kodowania znaków ....................................................................... 279Deklaracja typu arkusza stylów .............................................................................. 279

Konfigurowanie obs"ugi bazy danych w PHP .............................................................. 281Obs"uga bazy danych z poziomu skryptów PHP .......................................................... 286Podstawowe funkcje PHP obs"uguj$ce baz% danych Microsoft SQL Server ................ 291

Funkcja mssql_connect() ........................................................................................ 292Funkcja mssql_select_db() ..................................................................................... 293Funkcja mssql_query() ........................................................................................... 293Funkcja mssql_num_rows() ................................................................................... 294Funkcja mssql_fetch_array() .................................................................................. 295Funkcja mssql_free_result() ................................................................................... 296Funkcja mssql_close() ............................................................................................ 296Pozosta"e funkcje PHP ........................................................................................... 296

Dost%p do bazy danych Microsoft SQL Server 2005 z poziomu skryptów PHP .......... 297Po"$czenie z serwerem bazy danych ...................................................................... 298Po"$czenie z relacyjn$ baz$ danych ........................................................................ 299Wprowadzanie nowych danych do tabeli bazy danych ........................................ 300Wy#wietlanie zawarto#ci tabeli bazy danych ......................................................... 303Uaktualnianie zawarto#ci tabeli bazy danych ......................................................... 305Usuwanie danych z tabeli bazy danych .................................................................. 309Wyszukiwanie danych w tabeli bazy danych ......................................................... 311

Dodatkowe &ród"a informacji ....................................................................................... 314

Rozdzia 7. PEAR ........................................................................................... 315Czym jest PEAR? ......................................................................................................... 315Instalowanie PEAR DB w systemie Windows ............................................................. 317

Pobieranie repozytorium PEAR ............................................................................. 317Instalowanie repozytorium PEAR .......................................................................... 317Instalowanie modu"u DB ........................................................................................ 321

Obs"uga bazy danych Microsoft SQL Server 2005 z wykorzystaniem modu"uPEAR DB ................................................................................................................... 324

Po"$czenie z serwerem bazy ................................................................................... 325Po"$czenie z relacyjn$ baz$ .................................................................................... 327Wprowadzanie nowych danych do tabeli bazy danych .......................................... 328Wy#wietlanie zawarto#ci tabeli bazy danych ......................................................... 332Uaktualnianie zawarto#ci tabeli bazy danych ......................................................... 334Usuwanie danych z tabeli bazy danych .................................................................. 336Wyszukiwanie danych w tabeli bazy danych ......................................................... 338

Dodatkowe &ród"a informacji ....................................................................................... 339

Page 5: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

8 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Dodatek A Struktura relacyjnej bazy danych WirtualnySklep ........................... 341

Dodatek B Operatory stosowane w klauzuli WHERE ....................................... 345

Dodatek C Funkcje PHP do kontroli typów zmiennych .................................... 347

Dodatek D Zmienne superglobalne wyst:puj"ce w PHP .................................. 349

Dodatek E ZawartoKX folderu skompresowanego phiisq.zip ............................ 351

Skorowidz .................................................................................... 353

Page 6: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia 6.

Obs"uga bazy danychMicrosoft SQL Serverz poziomu PHP

Jedn z najwa"niejszych zalet j#zyka PHP jest mo"liwo$% pozyskiwania ró"nych infor-macji z relacyjnych baz danych znajduj cych si# na serwerach baz danych firmy Micro-soft: SQL Server 2000 lub SQL Server 2005 za pomoc skryptów PHP. St d te" j#zykPHP jest logicznym wyborem dla dynamicznego tworzenia zawarto$ci stron czy apli-kacji internetowych, za pomoc których mo"liwa jest obs(uga relacyjnej bazy danych.

Poza wspomnianymi wy"ej Systemami Zarz dzania Bazami Danych j#zyk PHP standar-dowo udost#pnia wiele wbudowanych oraz wyspecjalizowanych funkcji umo"liwiaj cychdost#p do wi#kszo$ci popularnych Systemów Zarz dzania Bazami Danych, do którychmo"na zaliczy%:

Database firmy Oracle,

MySQL firmy MySQL AB,

PostgreSQL firmy PostgreSQL Global Development Group,

DB2 firmy IBM.

J#zyk PHP umo"liwia równie" wspó(prac# z relacyjnymi bazami danych obs(uguj cymiuniwersalny standard ODBC (ang. Open DataBase Connectivity)1, którym nie b#dzie-my si# zajmowali w tej ksi "ce. Skupimy si# tu przede wszystkim na przedstawieniuobs(ugi bazy danych programu Microsoft SQL Server 2005 za pomoc wbudowanychw j#zyk PHP 5.2.5 funkcji do obs(ugi tego typu bazy danych.

1 ODBC to niezale"ny od j#zyka programowania, systemu operacyjnego i bazy danych interfejs API

(ang. Application Programming Interface), który pozwala programom ( czy% si# z systemamizarz dzania baz danych.

Page 7: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

272 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Dost#p do przyk(adowej relacyjnej bazy danych o nazwie WirtualnySklep zostanieprzedstawiony na przyk(adzie aplikacji internetowej o nazwie Obs/uga bazy danychMicrosoft SQL Server z poziomu skryptów PHP, na któr sk(ada si# kilkana$cieskryptów PHP. Aplikacja ta b#dzie uruchamiana z poziomu przegl darki internetowejklienta WWW. Z kolei za pomoc serwera internetowego IIS firmy Microsoft i odpo-wiednio skonfigurowanego interpretera skryptów PHP b#dzie realizowana obs(uga rela-cyjnej bazy danych.

Aplikacja Obs"uga bazy danychprogramu Microsoft SQL Serverz poziomu skryptów PHP

W poprzednich rozdzia(ach zosta(y opisane ró"ne sk(adniki i zastosowania j#zyka struk-turalnego PHP oraz baz danych firmy Microsoft: SQL Server 2000 oraz SQL Server2005. Z kolei dalsze podrozdzia(y koncentruj si# na podstawowych elementach i meto-dach dost#pu do relacyjnych baz danych przy wykorzystaniu przegl darki interneto-wej oraz skryptów PHP. Przyk(ady te z pewno$ci nie mówi wszystkiego o dost#pie dotego typu baz danych. Nale"y je raczej traktowa% jako wst#p do projektowania czyprogramowania na wi#ksz skal#, tj. tworzenia w pe(ni profesjonalnych i rozbudowa-nych aplikacji internetowych, za pomoc których mo"liwa b#dzie obs(uga baz danychdowolnych typów.

Podane dalej przyk(ady daj solidne podstawy do zrozumienia kolejnych czynno$ci,jakie maj miejsce podczas obs(ugi relacyjnej bazy danych programu Microsoft SQLServer 2005 z poziomu skryptów j#zyka PHP. Do tych czynno$ci mo"na zaliczy%:

po( czenie z serwerem bazy danych o nazwie EA-SQL2005,

wybranie relacyjnej bazy danych o nazwie WirtualnySklep,

wykonanie zapytania SQL (lub kilku zapyta+) na tabeli bazowej o nazwietKlienci relacyjnej bazy danych,

obejrzenie wyników przygotowanych przez interpreter PHP, przes(anychprzez serwer internetowy i wy$wietlonych w przegl darce internetowej klienta,

zwolnienie zajmowanych zasobów systemu przez wynik zapytaniaoraz po( czenie z serwerem bazy danych.

Wszystkie przyk(ady zawarte w tym i w nast#pnym rozdziale b#d uruchamianew uproszczonym $rodowisku testowym, które zosta(o przedstawione na rysunku 6.1.Za pomoc przegl darki internetowej Internet Explorer 7.0, która jest cz#$ci systemuklienckiego Microsoft Windows Vista Business zainstalowanego na komputerze o na-zwie EA-K1, b#dzie uzyskiwany dost#p do relacyjnej bazy danych o nazwie Wirtualny-Sklep, która zosta(a zainstalowana na serwerze cz(onkowskim EA-SQL2005. Na tymserwerze zosta(y równie" zainstalowane trzy aplikacje: interpreter PHP w wersji 5.2.5,

Page 8: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 273

Rysunek 6.1. Uproszczone >rodowisko testowe do obs/ugi bazy danych Microsoft SQL Server 2005z poziomu skryptów PHP

us(ugi IIS w wersji 6.0 (serwer internetowy) i baza danych programu Microsoft SQLServer 2005 w wersji Enterprise Evaluation Edition. Serwer cz(onkowski EA-SQL2005,jak ju" wiemy z wcze$niejszych rozdzia(ów, b#dzie pracowa( pod kontrol systemu ope-racyjnego Microsoft Windows Server 2003 w wersji Enterprise Edition z dodatkiemService Pack 2. Dost#p do serwera internetowego firmy Microsoft realizowany b#dzieza pomoc lokalnej sieci komputerowej, która pracuje w domenie sieciowej o na-zwie EA.local.

Na serwerze internetowym IIS w wersji 6.0 (w jego domy$lnym katalogu %System-Drive%\Inetpub\wwwroot) powinny znajdowa% si# skrypty PHP, które sk(adaj si#na prost aplikacj# internetow o nazwie Obs/uga bazy danych programu MicrosoftSQL Server z poziomu skryptów PHP. Wszystkie skrypty s dost#pne pod adresemftp://ftp.helion.pl/przyklady/phiisq.zip w folderze Skrypty PHP. Po $ci gni#ciu i rozpa-kowaniu tego katalogu nale"y je skopiowa% do powy"szej lokalizacji na serwerze in-ternetowym. Okno g(ówne tej aplikacji zosta(o przedstawione na rysunku 6.2, a jej kodna listingu 6.1. Aplikacja ta sk(ada si# z kilkunastu przyk(adowych skryptów PHPzawieraj cych kod XHTML, CSS, PHP i tzw. osadzony SQL, który przeznaczony jestg(ównie do manipulowania danymi zawartymi w relacyjnej bazie danych WirtualnySkleppracuj cej pod kontrol programu Microsoft SQL Server 2005. Aplikacja internetowa,która stanowi cz#$% tej ksi "ki, zosta(a w skrócie przedstawiona szerzej w nast#pnympodrozdziale.

Page 9: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

274 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rysunek 6.2. Okno g/ówne aplikacji internetowej Obs/uga bazy danych programu Microsoft SQL Serverz poziomu skryptów PHP

Listing 6.1. Kod aplikacji internetowej Obs/uga bazy danych programu Microsoft SQL Serverz poziomu skryptów PHP (index.php)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/tr/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">

<head> <title>Obs/uga bazy danych programu Microsoft SQL Server z poziomu skryptów PHP</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" /> <link href="style.css" type="text/css" rel="stylesheet" /></head>

<body> <div id="wyrownanie_do_srodka"> <h1> <?php require_once('nazwa_programu.php'); ?></h1>

<h2>&nbsp;<a href="index.php"><img style="border:none;width:16px;height:16px" src="home.gif" alt="" title="Strona g/ówna" /></a></h2> <h3>&nbsp;<img src="kropka.jpg" alt="" title="Strona g/ówna" /> Zapraszamy!</h3>

<table> <tbody> <tr> <td class="td_kolor_glowna_nagl">&nbsp;Zadania do wykonania</td> <td class="td_kolor_glowna_nagl">&nbsp;Skrypt PHP</td> <td class="td_kolor_glowna_nagl">&nbsp;Skrypt PHP [PEAR DB]</td></tr>

Page 10: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 275

<tr> <td class="td_kolor_glowna">&nbsp;&#187; Testowanie po/\czenia z serwerem</td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="polacz_z_serwerem.php"> polacz_z_serwerem.php</a></td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="polacz_z_ serwerem_DB.php"> polacz_z_serwerem_DB.php</a></td></tr>

<tr> <td class="td_kolor_glowna">&nbsp;&#187; Testowanie po/\czenia z baz\ danych</td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="polacz_z_bd.php"> polacz_z_bd.php</a></td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="polacz_z_bd_DB.php"> polacz_z_bd_DB.php</a></td></tr>

<tr> <td class="td_kolor_glowna">&nbsp;&#187; Dodawanie nowego rekordu do tabeli</td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="insert.php"> insert.php</a></td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="insert_DB.php"> insert_DB.php</a></td></tr>

<tr> <td class="td_kolor_glowna">&nbsp;&#187; Wy]wietlanie rekordów z tabeli</td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="select.php"> select.php</a></td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="select_DB.php"> select_DB.php</a></td></tr>

<tr> <td class="td_kolor_glowna">&nbsp;&#187; Aktualizacja rekordu w tabeli</td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="update.php"> update.php</a></td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="update_DB.php"> update_DB.php</a></td></tr>

<tr> <td class="td_kolor_glowna">&nbsp;&#187; Usuwanie rekordu z tabeli</td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="delete.php"> delete.php</a></td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="delete_DB.php"> delete_DB.php</a></td></tr>

<tr> <td class="td_kolor_glowna">&nbsp;&#187; Wyszukiwanie rekordów w tabeli</td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="szukaj.php"> szukaj.php</a></td> <td class="td_kolor_glowna">&nbsp;&#187; <a href="szukaj_DB.php"> szukaj_DB.php</a></td></tr></tbody></table></div></body></html>

Page 11: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

276 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Powy"szy kod zostanie do$% szczegó(owo opisany w kolejnych podrozdzia(ach — szcze-gólnie te jego elementy, które s zwi zane ze standardami sieciowymi organizacji W3C,czyli mi#dzy innymi z technologiami CSS i XHTML.

Aplikacja internetowa Obs/uga bazy danych programu Microsoft SQL Server z poziomuskryptów PHP jest niezwykle prostym projektem zawieraj cym kilkana$cie skryptówPHP, za pomoc których realizowana jest obs(uga bazy danych programu Microsoft SQLServer 2005 przy wykorzystaniu funkcji bazodanowych dost#pnych w PHP. Skrypty teilustruj zastosowanie j#zyków strukturalnych: PHP i SQL oraz bazy danych progra-mu Microsoft SQL Server 2005. Oczywi$cie kod tej aplikacji mo"na zoptymalizowa%tak, by w jeszcze mniejszym stopniu obci "a( zasoby systemu i lepiej realizowa(swoje funkcje.

Standardy sieciowe W3C

W przypadku budowania witryn i aplikacji internetowych opartych na nowoczesnychstandardach sieciowych nale"y pami#ta% o tym, aby mo"liwe by(o ich szybkie prze-budowanie w przysz(o$ci, je"eli kiedykolwiek zajdzie taka potrzeba. Pozwalaj na totechnologie rekomendowane przez mi#dzynarodowe konsorcjum o nazwie W3C (ang.World Wide Web Consortium). Generalnie, aplikacja internetowa o nazwie Obs/uga bazydanych programu Microsoft SQL Server z poziomu skryptów PHP jest prostym projek-tem, którego struktura zosta(a zbudowana przy u"yciu tzw. standardów sieciowych2.

Co daje projektowanie i budowanie witryn oraz aplikacji internetowych z u"yciem stan-dardów sieciowych? Odpowied= jest prosta: obni"enie kosztów produkcji i utrzyma-nia przy zapewnieniu dost#pno$ci dla klientów czy u"ytkowników, a tak"e zgodno$% zprzegl darkami internetowymi i dzia(anie na ró"nych platformach systemowych (Win-dows, Unix itp.). Generalnie mówi c, standardy sieciowe s pot#"nym i profesjonalnymnarz#dziem, dzi#ki któremu mo"na projektowa% oraz budowa% zaawansowane i profe-sjonalnie wygl daj ce witryny czy aplikacje internetowe. S one kluczem do projekto-wania w niezwykle efektywny, efektowny, a zarazem dost#pny dla wielu osób sposób.

Oddzielenie struktury, prezentacji i zachowania

Powszechnie znana w$ród projektantów i programistów witryn czy aplikacji interne-towych jest idea stosowania kodu XHTML3 do opisywania struktury dokumentu in-ternetowego (np. strony internetowej), stylów CSS4 do opisywania jego wygl du (czyliprezentacji), a j#zyków PHP czy JavaScript — jego zachowania. Koncepcja oddziele-nia sposobu prezentacji (za pomoc plików z rozszerzeniem .css) od zawarto$ci (plikiz rozszerzeniem .html) mo"e by% z powodzeniem rozszerzona na skrypty PHP, tj. pliki

2 Standardy sieciowe stanowi kontynuacj# istniej cych dot d technik internetowych. S to wi#c j#zyki

strukturalne (takie, jak XHTML czy XML), j#zyki warstwy aplikacji (takie, jak CSS) czy j#zykiskryptowe (takie, jak ECMAScript).

3 Wi#cej informacji na temat XHTML-a mo"na znale=% na stronie pod adresem http://www.w3.org/MarkUp/.4 Wi#cej informacji na temat CSS mo"na znale=% na stronie pod adresem http://www.w3.org/Style/CSS/.

Page 12: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 277

z rozszerzeniem .php. Przyk(adem takiego rozszerzenia jest w(a$nie przedstawionatutaj aplikacja internetowa Obs/uga bazy danych programu Microsoft SQL Server z po-ziomu skryptów PHP. Dlaczego warto stosowa% tego typu rozwi zanie? Otó" dlatego,"e du"o (atwiej utrzymywa%, u"ywa% czy te" modyfikowa% poszczególne pliki sk(adaj -ce si# na aplikacj# internetow przez d(u"szy czas, je"eli logika (pliki .php) b#dzieoddzielona od zawarto$ci (pliki .html), a ta z kolei od sposobu prezentacji (pliki .css).Generalnie mówi c, sprowadza si# to do rozdzielenia kodu PHP od kodu XHTML i CSS.Bez tego kod aplikacji internetowej stanie si# znacznie trudniejszy w utrzymaniu, u"yt-kowaniu czy modyfikowaniu. Szczególnie wa"ne jest to np. w przypadku wi#kszychprojektów. Otó" mo"e si# np. okaza%, "e w przypadku wi#kszych zmian w kodzie wi-tryny czy aplikacji internetowej niemo"liwe b#dzie przystosowanie jej do nowej rzeczy-wisto$ci. Problemem mo"e okaza% si# np. du"a cz#$% kodu XHTML, który zawieraznaczniki HTML decyduj ce o wygl dzie poszczególnych jej elementów. Ich usuni#-cie czy zmodyfikowanie mo"e zaj % naprawd# bardzo du"o czasu oraz stworzy% wieleproblemów.

JJzyk znaczników XHTML mo"e zawiera% sformatowane dane tekstowe, obiekty osa-dzone (jak rysunki, filmy, prezentacje itp.). JJzyk prezentacyjny CSS z kolei formatujeposzczególne witryny czy aplikacje internetowe oraz kontroluje rozmieszczenie, u(o"e-nie czy kolor poszczególnych ich elementów. Za$ jJzyk strukturalny PHP czy JavaScriptumo"liwia tworzenie zaawansowanych funkcji witryny czy aplikacji internetowej,a tak"e efektów dzia(aj cych w ró"nych przegl darkach internetowych czy platformachsystemowych (Windows, Unix, MacOS itp).

Odseparowanie struktury dokumentu od prezentacji i zachowania jest oznak# pro-fesjonalnego podej$cia do projektowania oraz programowania witryn i aplikacji inter-netowych. Mówi#c jeszcze inaczej, jest to metoda, wed ug której b%d# projektowanewitryny i aplikacje internetowe w przysz o$ci.

Autor niniejszej ksi "ki jest zdania, "e strony czy aplikacje internetowe powinny by%tworzone w oparciu o kaskadowe arkusze stylów (jak j#zyk prezentacji CSS) i standar-dy sieciowe (jak j#zyk znaczników XHTML). Dlaczego? Otó" powy"sze mechanizmyrozwi zuj liczne problemy nie tylko projektantów czy programistów, ale równie"zwyk(ych u"ytkowników, którzy korzystaj z witryn i aplikacji internetowych.

Technologie takie, jak CSS czy XHTML, pozwalaj :

zmniejsza% nak(ad pracy projektantów i programistów oraz skróci% czasprojektowania,

projektowa% zaawansowane funkcje interaktywne witryn lub aplikacjiinternetowych, które dzia(aj w ró"nych przegl darkach internetowychi na ró"nych platformach systemowych (Windows, Unix, MacOS itp.),

kontrolowa% rozmieszczenie w przegl darkach internetowych poszczególnychelementów czy cz#$ci witryn lub aplikacji internetowych,

(atwo i szybko modyfikowa% cz#$% czy ca(o$% witryn lub aplikacji internetowych,

odci "a% serwery internetowe i ( cza internetowe,

Page 13: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

278 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

oddziela% styl witryn lub aplikacji internetowych od ich struktury czy zachowania,

skróci% czas wczytywania witryn internetowych,

zapewni% wzrost dost#pno$ci witryny internetowej,

obs(ugiwa% urz dzenia przeno$ne, takie jak np. telefony komórkowe czy inneurz dzenia bezprzewodowe.

Deklaracja typu dokumentu i typu przestrzeni nazw

Aplikacja internetowa Obs/uga bazy danych programu Microsoft SQL Server z poziomuskryptów PHP jest projektem, którego struktura zosta(a zbudowana przy u"yciu jed-nego z trzech aktualnie wykorzystywanych standardów sieciowych — XHTML 1.0Transtional, który rekomendowany jest przez konsorcjum W3C. Mo"na si# o tym prze-kona%, edytuj c kod dowolnego ze skryptów PHP, które sk(adaj si# na t# aplikacj#.Mianowicie ka"dy dokument zaczyna si# od deklaracji typu dokumentu internetowe-go wraz z deklaracj typu przestrzeni nazw, które zosta(y pokazane na listingu 6.2.

Listing 6.2. Deklaracja typu dokumentu internetowego wraz z deklaracjM typu przestrzeni nazw(index.php)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/tr/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">

Dokumenty internetowe, które zosta(y stworzone przy u"yciu j#zyka znacznikówXHTML, rozpoczynaj si# od elementów informuj cych dowoln przegl dark# inter-netow o tym, w jaki sposób maj by% one interpretowane i sprawdzane. St d te"pierwszy z tych elementów (DOCTYPE) jest deklaracjM typu dokumentu internetowego.Generalnie j#zyk XHTML pozwala projektantom i programistom tworzy% klika ró"nychtypów dokumentów, ka"dy z zestawem innych regu(, które s wymieniane w specyfika-cji XHTML jako definicja typu dokumentu (w skrócie DTD). Wspomniana deklaracjatypu dokumentu internetowego (DOCTYPE) informuje przegl dark# internetow o tym,jakiej definicji typu dokumentu trzyma( si# programista tworz cy dan stron# inter-netow . Deklaracja ta jest niezwykle wa"na w dokumencie internetowym stworzonymw j#zyku znaczników XHTML. Bez poprawnie zdefiniowanej deklaracji DOCTYPE "adnaprzegl darka internetowa nie zweryfikuje kodu znaczników XHTML i stylu CSS.W efekcie pojawi si# problemy, gdy" przegl darka internetowa nie b#dzie potrafi(aobs(u"y%, tj. sprawdzi% i poprawnie wy$wietli%, strony internetowej. Po deklaracjiDOCTYPE znajduje si# deklaracja typu przestrzeni nazw XHTML. Przestrze+ ta jestkolekcj typów elementów i nazw atrybutów skojarzonych z definicj typu dokumentuinternetowego. Deklaracja przestrzeni nazw pozwala zidentyfikowa% swoj przestrze+nazw przez wskazanie jej lokalizacji (http://www.w3.org/1999/xhtml).

Page 14: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 279

Deklaracja typu kodowania znaków

Aby dokumenty internetowe utworzone za pomoc j#zyka znaczników o nazwie XHTMLmog(y by% poprawnie zinterpretowane przez dowoln przegl dark# internetow i przej$%pomy$lnie wszystkie testy sprawdzaj ce, musz deklarowa% tzw. typ kodowania zna-ków u"yty do ich stworzenia. W przypadku aplikacji Obs/uga bazy danych programuMicrosoft SQL Server z poziomu skryptów PHP jest to charset=iso-8859-2, zgodniez tym, co zosta(o przedstawione na listingu 6.3.

Listing 6.3. Deklaracja typu kodowania znaków w dokumencie internetowym (index.php)

<head> <title>Obs/uga bazy danych programu Microsoft SQL Server z poziomu skryptów PHP</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" /> <link href="style.css" type="text/css" rel="stylesheet" /></head>

Jak wida% na powy"szym listingu, typ kodowania znaków, który zapewnia popraw-ne wy$wietlanie znaków narodowych, zosta( zadeklarowany za pomoc elementuhttp-equiv="content-type" umieszczonego w elemencie <meta… /> cz#$ci nag(ówko-wej dokumentu internetowego, czyli pomi#dzy znacznikami <head>…</head>. Zaznaczo-ny na listingu 6.3 czcionk pogrubion wiersz pokazuje zapis dla kodowania iso-8859-2.Takie oznaczenie nosi polska strona kodowa, tj. dla polskich czcionek.

W przypadku tworzenia mi%dzynarodowej witryny czy aplikacji internetowej, którab%dzie zawiera& znaki niewyst%puj#ce w kodzie ASCI, nale'y u'y& kodowania utf-8zamiast iso-8859-2.

Standard ISO 8859 stworzony zosta( w po(owie lat 80. XX w. przez Europejskie Sto-warzyszenie Producentów Komputerów. Jest on seri standaryzowanych wieloj#zycz-nych zestawów znaków graficznych, które s kodowane na jednym bajcie (1 B), czyli8 bitach (1 B = 8 bitów). Jednym z tych zestawów jest wspomniany ju" wy"ej standardiso-8859-2.

Deklaracja typu arkusza stylów

Kaskadowe arkusze stylów mog wyst#powa% jako zewn#trzne, by% osadzone w ko-dzie XHTML danej witryny internetowej lub wyst#powa% w tzw. miejscu (ang. inline).W niniejszej ksi "ce zostanie omówione jedynie pierwsze z tych wyst pie+ arkuszystylów. Dlaczego? Otó" dlatego, "e przy zastosowaniu zewn#trznych arkuszy stylówotrzymujemy szereg wymiernych korzy$ci, które wynikaj cho%by ze znacznego zmniej-szenia obci "enia serwera internetowego czy ( czy internetowych. Poza tym s oneobs(ugiwane przez wi#kszo$% popularnych przegl darek internetowych (w tym rów-nie" Internet Explorer, która jest sk(adnikiem systemów operacyjnych z rodziny Micro-soft Windows).

Page 15: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

280 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Zewn#trzny arkusz stylów, czyli plik z rozszerzeniem .css (np. style.css, który jest do-st#pny pod adresem ftp://ftp.helion.pl/przyklady/phiisq.zip w folderze Skrypty PHP, a jegoprzyk(adowa zawarto$% zosta(a pokazana na rysunku 6.3), jest dokumentem tekstowymzawieraj cym kod CSS w postaci okre$lonych regu( CSS. Mo"e on by% wykorzystanyz powodzeniem na stronie internetowej zgodnej ze standardami sieciowymi. Inaczejmówi c, strona internetowa XHTML mo"e u"ywa% pliku z rozszerzeniem .css (plikuarkusza stylów), odwo(uj c si# do niego poprzez element o nazwie link, który zosta(umieszczony w nag(ówku dokumentu internetowego, tj. w sekcji <head>…</head>.

Rysunek 6.3. Przyk/adowa zawarto>O pliku style.css

Przyk(adowy element link mo"e wygl da% podobnie to tego z listingu 6.4.

Listing 6.4. Deklaracja arkusza stylów w dokumencie internetowym (index.php)

<head> <title>Obs/uga bazy danych programu Microsoft SQL Server z poziomu skryptów PHP</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" /> <link href="style.css" type="text/css" rel="stylesheet" /></head>

Regu a w kodzie CSS jest to kompletne okre$lenie stylu sk adaj#cego si% z selek-tora oraz bloku deklaracji umieszczonych pomi%dzy nawiasami klamrowymi, np.w postaci: p {font-family: Verdana, sans-serif;}.

Takie podej$cie powoduje, "e plik ten jest pod( czany w trakcie pierwszego urucho-mienia skryptu PHP o nazwie index.php, w którym zadeklarowany zosta( arkusz sty-lów CSS. Zmniejsza to nie tylko obci "enie samego serwera internetowego, ale i ( cz,za pomoc których plik ten jest wywo(ywany.

Page 16: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 281

Konfigurowanie obs"ugibazy danych w PHP

Gdy ju" poznali$my podstawowe elementy j#zyków SQL, PHP czy XHTML, a tak"eutworzyli$my relacyjn baz# danych o nazwie WirtualnySklep wraz z poszczególnymijej tabelami bazowymi w programie Microsoft SQL Server 2005, mo"emy przyst pi%do skonfigurowania obs(ugi tej"e bazy z poziomu skryptów PHP.

W niniejszym podrozdziale skupimy si# g(ównie na klientach wirtualnego sklepu, tj. naobs(udze tabeli bazowej o nazwie tKlienci, która znajduje si# w relacyjnej bazie danycho nazwie WirtualnySklep. To w(a$nie na jej przyk(adzie zostanie zaprezentowany do-st#p do serwera bazy danych Microsoft SQL Server 2005 z poziomu skryptów PHP(za pomoc wbudowanych funkcji obs(uguj cych tego typu baz# danych), do relacyj-nej bazy danych WirtualnySklep oraz jej tabeli bazowej tKlienci, a tak"e wszelkiegorodzaju operacje zwi zane z dodawaniem, odczytywaniem, modyfikacj , usuwaniem czywyszukiwaniem danych.

Aby w ogóle mo"liwa by(a jakakolwiek komunikacja pomi#dzy baz danych progra-mu Microsoft SQL Server 2005 a interpreterem PHP, nale"y wykona% pewne wst#pnekroki konfiguracyjne, które zostan opisane w tym podrozdziale. W przypadku j#zykaPHP w wersji 5.2.5 ka"demu serwerowi baz danych odpowiada dynamiczna bibliote-ka, czyli zazwyczaj jaki$ plik z rozszerzeniem .dll, który znajduje si# w katalogu in-stalacyjnym PHP z rozszerzeniami, tj. C:\PHP5\ext. Plik ten zawiera zbiór okre$lo-nych z góry funkcji, które s wykorzystywane w komunikacji z okre$lon relacyjn baz danych.

Przyk(adowa zawarto$% katalogu rozszerze+ j#zyka PHP w wersji 5.2.5 zosta(a przed-stawiona na rysunku 6.4. Warto tu doda%, "e w przypadku bazy danych programu Micro-soft SQL Server 2005 bardzo wa"ne s dwa pliki: php_mssql.dll (znajduj cy si# w loka-lizacji C:\PHP5\ext) oraz ntwdblib.dll (znajduj cy si# w lokalizacji C:\PHP5), którydo dzia(ania wymaga wspomnianej biblioteki php_mssql.dll. W przypadku innych bazdanych, np. Oracle Database, niezwykle wa"ny jest plik php_oci8.dll, dla MySQLAB MySQL — php_mysql.dll, z kolei dla bazy danych PostgreSQL Global DevelopmentGroup PostgreSQL — php_pgsql.dll.

Po czystej instalacji bazy danych programu Microsoft SQL Server 2005 oraz dodatkuService Pack 2 dla tego programu, która zosta(a przedstawiona szczegó(owo w po-przednim rozdziale, nale"y uruchomi% na komputerze klienta EA-K1 przegl dark# inter-netow i wpisa% jako adres URL http://ea-sql2005. Po wybraniu klawisza Enter zostaniewy$wietlona testowa aplikacja internetowa Obs/uga bazy danych programu MicrosoftSQL Server z poziomu skryptów PHP, której okno g(ówne zosta(o przedstawionewcze$niej, tj. na rysunku 6.2. Po klikni#ciu odno$nika polacz_z_serwerem.php, za po-moc którego mo"na przetestowa% po( czenie z serwerem bazy danych o nazwie EA-SQL2005 z poziomu skryptu PHP, pojawi si# „pusta strona internetowa” — zgodniez tym, co zosta(o pokazane na rysunku 6.5. Termin „pusta strona internetowa” nale"ytutaj rozumie% jako „strona bez przetworzonego kodu PHP”, tj. kodu znajduj cego si#pomi#dzy znacznikami j#zyka PHP <?php //… ?>. Czyli inaczej mówi c, bez kodu

Page 17: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

282 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rysunek 6.4.Zawarto>O katalogu

C:\PHP5\ext

z plikami do obs/ugi

róSnych typów

relacyjnych

baz danych

pokazanego na listingu 6.5, który pochodzi z pliku polacz_z_serwerem.php. Plik ten, jakju" wiemy, znajduje si# w katalogu g(ównym serwera internetowego EA-SQL2005,tj. C:\Inetpub\wwwroot. Wy$wietlany jest jedynie statyczny kod strony internetowej,tj. kod HTML. Dlaczego tak si# dzieje? Otó" dzieje si# tak z kilku przedstawionychponi"ej powodów.

Brak w katalogu %SystemRoot%\system32 serwera cz(onkowskiego EA-SQL2005(na którym dzia(a interpreter PHP 5.2.5 i us(ugi IIS 6.0) bardzo wa"nego plikuo nazwie ntwdblib.dll, który dostarczany jest wraz z interpreterem PHP 5.2.5,czyli z repozytorium o nazwie php-5.2.5-Win32.zip. W przypadku programuMicrosoft SQL Server 2000 plik ten jest domy$lnie instalowanyw powy"szym katalogu.

Wy( czone jest rozszerzenie php_mssql.dll w sekcji Windows Extensionspliku konfiguracyjnego %SystemRoot%\php.ini, które po domy$lnej instalacjiinterpretera PHP 5.2.5 nie jest aktywne (znak $rednika w linii ;extension= php_mssql.dll, który oznacza komentarz). Jak pami#tamy, polecenia zeznakiem komentarza nie s wczytywane do pami#ci operacyjnej serweracz(onkowskiego podczas uruchamiania interpretera PHP.

Nie zosta(a poprawnie zdefiniowana $cie"ka w dyrektywie extension_dir= "C:\PHP5\ext" pliku konfiguracyjnego %SystemRoot%\php.ini, którapo domy$lnej instalacji interpretera PHP 5.2.5 ma posta% extension_dir = "./".Powoduje to, "e nie mo"e by% wczytany plik php_mssql.dll, który znajduje si#w katalogu rozszerze+ PHP.

Dodatkowo — w przypadku gdy PHP wykorzystuje rozszerzenie CGI(plik wykonywalny php-cgi.exe zamiast php5isapi.dll) — nie zosta(aw( czona (odpowiednio skonfigurowana) w pliku konfiguracyjnym%SystemRoot%\php.ini linijka tekstu ;cgi.force_redirect = 1. Nale"y j w( czy%, usuwaj c znak $rednika, który, jak wiemy, jest komentarzem,i ustawi% na warto$% 0. Poprawna linijka kodu powinna wygl da% tak:cgi.force_redirect = 0.

Page 18: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 283

Rysunek 6.5. Negatywny wynik testowania po/Mczenia z serwerem bazy danych programu MicrosoftSQL Server 2005 z poziomu skryptu polacz_z_serwerem.php

Listing 6.5. Kod PHP realizujMcy po/Mczenie z serwerem bazy danych programuMicrosoft SQL Server 2005 (polacz_z_serwerem.php)

<?php require_once('funkcje.php'); polacz_z_serwerem_bd();?>

Jak wida% na powy"szym listingu, wykorzystana zosta(a instrukcja require_once()pozwalaj ca na za(adowanie pliku funkcje.php do skryptu PHP i wywo(ana funkcjapolacz_z_serwerem_bd(), która znajduje si# w tym pliku. Funkcja ta zawiera para-metry potrzebne do zestawienia po( czenia z serwerem bazy danych Microsoft SQLServer 2005, który dzia(a na serwerze cz(onkowskim o nazwie EA-SQL2005, oraz obs(u-gi b(#dów, jakie mog wyst pi% podczas zestawiania tego po( czenia.

Biblioteka dynamiczna ntwdblib.dll, która do dzia(ania wymaga innej biblioteki— php_mssql.dll, znajduje si# w katalogu instalacji interpretera PHP, czyli C:\PHP5(po rozpakowaniu repozytorium php-5.2.5-Win32.zip), oraz jest wykorzystywana pod-czas dost#pu do relacyjnej bazy danych programu Microsoft SQL Server 2005 z po-ziomu skryptów PHP. Plik ten wykorzystywany jest w komunikacji z serwerem bazydanych Microsoft SQL Server 2005.

Ze wzgl%du na szybko$& wykonywania skryptów PHP najlepiej jest, kiedy zarówno PHP,jak i Microsoft SQL Server 2005 dzia aj# na tym samym komputerze.

Page 19: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

284 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Aby istnia(a mo"liwo$% odczytywania plików z rozszerzeniami .php (skryptów PHP)i wy$wietlania wyników ich dzia(ania z poziomu przegl darki internetowej klientaEA-K1, nale"y wykona% poni"sze kroki na serwerze cz(onkowskim EA-SQL2005,na którym zosta(y zainstalowane:

interpreter skryptów PHP w wersji 5.2.5,

serwer internetowy IIS w wersji 6.0,

serwer bazy danych Microsoft SQL Server 2005.

1. Skopiowa% plik ntwdblib.dll z katalogu C:\PHP5 do katalogu %SystemRoot%\ system32. Mo"na to wykona% bardzo szybko np. za pomoc komendywydanej z okna Wiersz polecenia: copy C:\PHP5\ntwdblib.dll %SystemRoot%\ system32.

2. Zatrzyma% i ponownie uruchomi% us(ugi IIS 6.0 na serwerze cz(onkowskimEA-SQL2005 — zgodnie z tym, co przedstawia rysunek 6.6 — czyli z poziomukonsoli Mened"er internetowych us(ug informacyjnych (IIS), któr mo"nauruchomi% za pomoc komendy inetmgr (wydanej z poziomu okna dialogowegoUruchamianie) lub start inetmgr (wydanej z poziomu okna Wiersz polecenia).

Rysunek 6.6. Ponowne uruchamianie us/ugi IIS na serwerze cz/onkowskim EA-SQL2005

3. W oknie dialogowym o nazwie Zatrzymywanie/uruchamianie/uruchamianieponowne…, które zosta(o przedstawione na rysunku 6.7, nale"y sprawdzi%,czy wybrana jest czynno$% Uruchom ponownie Us/ugi internetowena EA-SQL2005, i klikn % przycisk OK.

Page 20: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 285

Rysunek 6.7.Okno dialogowe

o nazwie

Zatrzymywanie/

uruchamianie/

uruchamianie

ponowne…

Zatrzymanie i ponowne uruchomienie us ug IIS 6.0 na serwerze cz onkowskimEA-SQL2005 mo'na szybko wykona& za pomoc# nast%puj#cej komendy wierszapolece/: iisreset EA-SQL2005.

4. Sprawdzi% w skryptach PHP, czy zosta(y zdefiniowane poprawnie takiezmienne, jak: nazwa serwera bazy danych Microsoft SQL Server 2005 (EA-SQL2005), nazwa u"ytkownika (sa) i has(o (27aB.#cd75) — zgodnie z tym, coprzedstawia listing 6.6. Dodatkowo nale"y te" sprawdzi% zmienn $bazaDanych, która powinna mie% przypisan nazw# WirtualnySklep, czyli$bazaDanych = 'WirtualnySklep'. Zmienna ta nie jest potrzebna w przypadkunawi zywania po( czenia z samym serwerem bazy danych Microsoft SQLServer 2005. Jest za to wr#cz niezb#dna w pozosta(ych skryptach PHP, którenp. operuj na danych zgromadzonych w tabeli bazowej tKlienci.

Listing 6.6. Zmienne wymagane do po/Mczenia z serwerem bazy danych Microsoft SQL Server 2005i bazM danych WirtualnySklep

<?php $nazwaSerwera = 'EA-SQL2005'; $bazaDanych = 'WirtualnySklep'; $nazwaUzytkownika = 'sa'; $hasloUzytkownika = '27aB.#cd75';

/* blok kodu skryptu PHP */?>

Po wykonaniu powy"szych kroków próba po( czenia za pomoc przegl darki inter-netowej klienta EA-K1 z serwerem bazy danych Microsoft SQL Server 2005 z po-ziomu skryptu PHP (za pomoc adresu http://ea-sql2005/polacz_z_serwerem.php)powinna si# powie$%, co przedstawia rysunek 6.8, czyli komunikat o tre$ci [+] Po/M-czono siJ z serwerem bazy danych. Je"eli tak si# stanie, to mo"emy za(o"y%, "e odt dmo"liwa jest komunikacja nie tylko pomi#dzy relacyjna baz danych programu Micro-soft SQL Server 2005 a interpreterem PHP 5.2.5, ale tak"e pomi#dzy serwerem IIS 6.0

Page 21: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

286 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rysunek 6.8. Pozytywny wynik testowania po/Mczenia z serwerem bazy danych programuMicrosoft SQL Server 2005 z poziomu skryptu polacz_z_serwerem.php

i przegl dark internetow klienta EA-K1. Inaczej mówi c, mo"liwa jest obs(uga bazydanych programu Microsoft SQL Server 2005 z poziomu aplikacji internetowej Ob-s/uga bazy danych programu Microsoft SQL Server z poziomu skryptów PHP, któraznajduje si# na serwerze internetowym IIS 6.0 (w katalogu g(ównym tego serwera).

W razie problemów z pod( czeniem si# do serwera bazy danych Microsoft SQL Server2005 z poziomu skryptu PHP o nazwie polacz_z_serwerem.php nale"y sprawdzi% usta-wienia w pliku konfiguracyjnym w katalogu %SystemRoot%\php.ini. Najwa"niejszeustawienia zosta(y zaprezentowane w podrozdziale „Instalowanie i konfigurowanie PHPw systemie Windows” niniejszej ksi "ki.

Obs"uga bazy danychz poziomu skryptów PHP

Obs(ug# relacyjnej bazy danych o nazwie WirtualnySklep znajduj cej si# na serwerzebazy danych Microsoft SQL Server 2005 o nazwie EA-SQL2005 (z poziomu skryptuPHP, np. select.php, który jest dost#pny pod adresem ftp://ftp.helion.pl/przyklady/ phiisq.zip w folderze Skrypty PHP) mo"na podzieli% na pi#% poni"ej przedstawio-nych kroków.

Krok 1. Nawi zanie po( czenia z serwerem bazy danych programu Microsoft SQLServer 2005 o nazwie EA-SQL2005.

Page 22: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 287

Przyk(adowy kod PHP zosta( przedstawiony na listingu 6.7. Istotne elementy kodu PHPzosta(y zaznaczone tekstem pogrubionym.

Listing 6.7. NawiMzanie po/Mczenia z serwerem bazy danych programu Microsoft SQL Server 2005o nazwie EA-SQL2005

<?php $nazwaSerwera = 'EA-SQL2005'; $bazaDanych = 'WirtualnySklep'; $nazwaUzytkownika = 'sa'; $hasloUzytkownika = '27aB.#cd75';

$polacz_z_serwerem = @mssql_connect($nazwaSerwera, $nazwaUzytkownika, $hasloUzytkownika) or die("[-] Nie moMna poNOczyP siQ z serwerem bazy danych!<br /><br />");

/* kod skryptu PHP */?>

Krok 2. Nawi zanie po( czenia z relacyjn baz danych o nazwie WirtualnySklep,która znajduje si# na serwerze bazy danych programu Microsoft SQL Server 2005o nazwie EA-SQL2005.

Przyk(adowy kod PHP zosta( przedstawiony na listingu 6.8. Jego istotne elementy zo-sta(y zaznaczone tekstem pogrubionym.

Listing 6.8. NawiMzanie po/Mczenia z relacyjnM bazM danych o nazwie WirtualnySklep

<?php $nazwaSerwera = 'EA-SQL2005'; $bazaDanych = 'WirtualnySklep'; $nazwaUzytkownika = 'sa'; $hasloUzytkownika = '27aB.#cd75';

$polacz_z_serwerem = @mssql_connect($nazwaSerwera, $nazwaUzytkownika, $hasloUzytkownika) or die("[-] Nie movna po/\czy{ si| z serwerem bazy danych!<br /><br />");

$polacz_z_baza = @mssql_select_db($bazaDanych, $polacz_z_serwerem) or die("[-] Nie moMna poNOczyP siQ z bazO danych!<br /><br />");

/* kod skryptu PHP */?>

Page 23: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

288 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Krok 3. Wys(anie zapytania SQL do tabeli bazowej tKlienci relacyjnej bazy danychWirtualnySklep programu Microsoft SQL Server 2005 o nazwie EA-SQL2005.

Przyk(adowy kod zosta( przedstawiony na listingu 6.9. Jego istotne elementy zosta(yzaznaczone tekstem pogrubionym.

Listing 6.9. Wys/anie zapytania SQL do tabeli bazowej tKlienci

<?php /* kod skryptu PHP */

$zapytanie = "SELECT * FROM tKlienci";

/* kod skryptu PHP */?>

Krok 4. Pobranie i wykorzystanie otrzymanych wyników (np. wy$wietlenie zawarto-$ci tabeli bazowej tKlienci relacyjnej bazy danych WirtualnySklep) w postaci statycznejtabeli HTML.

Przyk(adowy kod zosta( pokazany na listingu 6.10. Jego istotne elementy zosta(y za-znaczone tekstem pogrubionym.

Listing 6.10. Pobranie i wykorzystanie otrzymanych wyników w postaci statycznej tabeli HTML

<?php /* kod skryptu PHP */

$wynik = @mssql_query($zapytanie);

if (!$wynik) { echo "[-] Wykonanie zapytania nie powiodNo siQ!<br /><br />"; exit; } else { echo "<table cellspacing='3' cellpadding='5'>"; echo "<tr bgcolor='#dddddd' align='left'>"; echo "<th>Nr ID</th> <th>Nazwisko</th> <th>ImiQ</th> <th>Ulica</th> <th>Kod poczt.</th> <th>MiejscowojP</th> <th>Województwo</th> <th>Telefon</th> <th>Email</th>";

Page 24: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 289

echo "</tr>"; while ($wiersz = @mssql_fetch_array($wynik)) { echo "<tr align='left'>"; echo "<td>".$wiersz['KlientID']."</td>"; echo "<td>".$wiersz['Nazwisko']."</td>"; echo "<td>".$wiersz["Imie"]."</td>"; echo "<td>".$wiersz["Ulica"]."</td>"; echo "<td>".$wiersz["KodPocztowy"]."</td>"; echo "<td>".$wiersz["Miejscowosc"]."</td>"; echo "<td>".$wiersz["Wojewodztwo"]."</td>"; echo "<td>".$wiersz["Telefon"]."</td>"; echo "<td>".$wiersz["Email"]."</td>"; echo "</tr>"; } echo "</table>"; }

/* kod skryptu PHP */?>

Krok 5. Zwolnienie zaj#tych zasobów serwera bazy danych Microsoft SQL Server 2005o nazwie EA-SQL2005 (g(ównie jego pami#ci operacyjnej RAM) przez zmienne $wyniki $polacz_z_serwerem oraz zamkni#cie po( czenia z tym serwerem bazy danych.

Przyk(adowy kod PHP zosta( przedstawiony na listingu 6.11. Jego istotne elementy zo-sta(y zaznaczone tekstem pogrubionym.

Listing 6.11. Zwolnienie zajJtych zasobów serwera bazy danych Microsoft SQL Server 2005o nazwie EA-SQL2005 i zamkniJcie po/Mczenia z tym serwerem

<?php /* blok kodu skryptu PHP */

@mssql_free_result($wynik); @mssql_close($polacz_z_serwerem);

/* blok kodu skryptu PHP */?>

Reasumuj c, spróbujmy okre$li%, jakie czynno$ci wykonuje skrypt PHP o nazwieselect.php. W skrócie mo"na przedstawi% je w nast#puj cych krokach.

Krok 1. Na samym pocz tku zestawiane jest po( czenie z serwerem bazy danychMicrosoft SQL Server 2005 o nazwie EA-SQL2005, na którym znajduje si# relacyjnabaza danych o nazwie WirtualnySklep — przy u"yciu funkcji wewn#trznej PHPmssql_connect(), której podstawowymi parametrami s :

Page 25: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

290 PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

nazwa serwera bazy danych Microsoft SQL Server 2005 (EA-SQL2005),

nazwa u"ytkownika (sa), którego konto ma przyznane odpowiednieuprawnienia do relacyjnej bazy danych WirtualnySklep,

has(o u"ytkownika (27aB.#cd75).

Krok 2. Kiedy po( czenie z serwerem bazy danych Microsoft SQL Server 2005 o na-zwie EA-SQL2005 zostanie pomy$lnie nawi zane, wynikiem dzia(ania funkcji o nazwiemssql_connect() b#dzie identyfikator po( czenia (np. Resource id #1), który jest prze-chowywany w zmiennej o nazwie $polacz_z_serwerem. W przypadku jakichkolwiekproblemów z po( czeniem z serwerem bazy danych zostanie wy$wietlony (przy wyko-rzystaniu funkcji o nazwie die()) komunikat b(#du o nast#puj cej tre$ci: [-] Nie moSnapo/MczyO siJ z serwerem bazy danych!.

Krok 3. Po poprawnym zestawieniu po( czenia z serwerem bazy danych MicrosoftSQL Server 2005 o nazwie EA-SQL2005 kolejnym krokiem jest wybranie (za pomoc funkcji o nazwie mssql_select_db()) relacyjnej bazy danych WirtualnySklep, która znaj-duje si# na tym serwerze.

Krok 4. Je"eli nie wyst pi "aden krytyczny b( d (identyfikator po( czenia wynosi 1),kolejnym krokiem b#dzie utworzenie zmiennej $zapytanie, która b#dzie przechowy-wa(a instrukcj# SQL, tj. zdefiniowane zapytanie j#zyka SQL.

Krok 5. W nast#pnym kroku tworzona jest zmienna $wynik, która przechowuje iden-tyfikator wyniku zapytania przeprowadzonego przez funkcj# o nazwie mssql_query().Kiedy zapytanie zostanie poprawnie wykonane (nie pojawi si# komunikat o tre$ci [-]Wykonanie zapytania nie powiod/o siJ!), wtedy wydzielane s wiersze wyniku za po-moc funkcji PHP o nazwie mssql_fetch_array(), które s przechowywane w zmiennej$wynik. Wcze$niej jednak jest tworzona statyczna tabela HTML. P#tla while tworzytablic# o nazwie $wiersz dla ka"dego rekordu wynikowego. Wiersze s podstawianedo tablicy dopóty, dopóki warto$ci ca(ego wyra"enia nie b#dzie warto$% False. Ma tomiejsce wówczas, gdy nie ma ju" wi#cej wierszy do przetworzenia. Wtedy p#tla whileko+czy swoje dzia(anie.

Krok 6. Na ko+cu skryptu PHP nast#puje zwolnienie wykorzystywanych do przepro-wadzenia zapytania SQL zasobów systemowych (g(ównie pami#ci operacyjnej RAMserwera cz(onkowskiego o nazwie EA-SQL2005) — przy wykorzystaniu funkcji wbu-dowanej PHP o nazwie mssql_free_result(), oraz zamkni#cie po( czenia z serwerembazy danych Microsoft SQL Server 2005. Odpowiedzialna jest za to funkcja wewn#trz-na j#zyka PHP o nazwie mssql_close().

U'ycie funkcji wewn%trznej PHP o nazwie mssql_close() (na ko/cu skryptu PHP)nie jest wymagane, gdy' po #czenia nietrwa e (ang. nonpersistent) s# automatyczniezamykane po zako/czeniu dzia ania tego skryptu. Niemniej jednak dobrym nawykiemprogramistycznym jest, aby zwalnia& zajmowane przez zmienne zasoby oraz zamyka&otwarte po #czenia z relacyjn# baz# danych.

Page 26: PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych

Rozdzia> 6. Obs>uga bazy danych Microsoft SQL Server z poziomu PHP 291

Wynik skryptu PHP select.php, który zosta( wywo(any z poziomu przegl darki inter-netowej komputera klienta EA-K1 pracuj cego pod kontrol systemu operacyjnegoMicrosoft Windows Vista Business, zosta( pokazany na rysunku 6.9. Jak wida% natym rysunku, w wyniku " dania o tre$ci http://ea-sql2005/select.php zwróconych zo-sta(o pi#% przyk(adowych rekordów z relacyjnej bazy danych WirtualnySklep, któraznajduje si# na serwerze cz(onkowskim o nazwie EA-SQL2005.

Rysunek 6.9. Wynik wykonania skryptu PHP o nazwie select.php

Podstawowe funkcje PHP obs"uguj<cebaz= danych Microsoft SQL Server

Jak ju" wspomniano na pocz tku niniejszego rozdzia(u, interpreter j#zyka skryptowegoPHP w wersji 5.2.5 posiada wbudowan obs(ug# ró"nych typów baz danych (w tymbazy danych programu Microsoft SQL Server 2005) za pomoc wewn#trznych funkcji.Oznacza to tyle, "e wiele popularnych typów serwerów baz danych jest obs(ugiwanychz poziomu skryptów PHP.

W niniejszej ksi "ce zostan opisane wybrane funkcje j#zyka PHP, za pomoc którychmo"liwy jest dost#p z poziomu kodu PHP do bazy danych programu Microsoft SQLServer 2005.