[ Pobierz całość w formacie PDF ]
.��PHP jako interfejs PostgreSQLadr in\.Krzysztof JuszkiewiczWiedza" Strona główna: http://www.php.net/" Mirrory w Polsce:http://pl.php.net/ (mainseek.com)http://pl2.php.net/ (estrefa.pl)" Manual: http://www.php.net/manual/en/" Po polsku: http://www.php.net/manual/pl/" Polski FAQ usenetowy: http://php.faq.pl/" Przykłady: http://eit.agh.edu.pl/~juszkiew(mogą pojawić się nowe w zale\ności od potrzeb)2Cechy PHP" Język interpretowanyWersje PHP:vs.szybkość,?????? v.6.0," Przenośność i1.03.07 v.4.4.6,popularność,8.02.07 v.5.2.1," Du\a liczba modułów,13.07.04 v.5.0," Rozwojowość, 22.04.02 v.4.2.0,10.12.01 v.4.1.0," Dynamiczne zmienne,22.05.00 v.4.0," Wyra\enia regularne," Obiektowość3Najprostszy plik php" Nazwa z rozszerzeniem.php(np.plik.php)" Kod php pomiędzy znacznikamilub" Mo\na uruchomić z palca(np.php plik.php)4Kod PHP a HTML" Aączenie kodu HTML z programem w PHPdaje mo\liwość warunkowego wyświetlaniakodu HTML.wartość:5Schemat pliku PHP" start sesji," połączenie do bazy danych," operacje na bazie (modyfikacje, wyciąganiedanych)," prezentacja efektów w HTML" rozłączenie bazą6Zmienne skalarne" Liczba: $x = 3;" Tekst: $y='tekst'; $z="tekst $x";Zmienne wektorowe$w=array();" Pusta lista:count($w);" Liczba elementów:$w[]="wart";" Dodanie na koniec:$w[7]=$x;" Ustawienie ósmego elementu:7Typy wartości" Nieustawiona: NULL, isset(),unset()," Fałsz: False, 0, 0.0, "", "0",array()," yle: jeśli sprawdzmy wartość nieustawioną:PHP Notice: Undefined variable8Tablice są asocjacyjne (hasze)$h=array('A'=>3);" Tworzenie:$h['A'] = 3;" Wartość dla klucza:array_push()array_shift()Tablicaarray_pop()array_unshift()Niepotrzebna jest konwersja z tablicy na hasz9Obsługa tablicDla jest zł10Zmienne predefiniowane" $_SERVER serwera (te\ nagłówki HTTP)" $_ENV środowiska" $_COOKIE ciastek" $_GET metody GET" $_POST metody POST" $_REQUEST trzy powy\sze" $_FILES odbierania plików" $_SESSION sesyjne11Problemy cudzysłowówDodawanie odwrotnych ukośników \$w = pg_escape_string($w);$query = "SELECT id FROM tabela WHEREnazwa='$w'";Zamiana (&,,") na encje z ampersandami &xxx;Lepsza funkcja: htmlentities12Typowe zapytania" Modyfikujące wiersze affected rows: INSERT, UPDATE, DELETE" Wyciągające dane: SELECT * FROM.numery0 1 2 3 4 5kolumnimie nazw data konto debet innenazwy.wiersze.(rows).13PHP funkcje (po zmianie 4.2.0)$dbconn = pg_connect ("dbname=nazwa_bazypołączenieuser=uzytkownik password=haslo");zapytanie SQL$res = pg_query($dbconn,$sql);liczba po SELECT$num = pg_num_rows ($res);liczba po NON-SELECT$num = pg_affected_rows($res);wiersz wyniku$arr = pg_fetch_array($res);wiersz wyniku$arr = pg_fetch_assoc($res);wszystkie wiersze$arr = pg_fetch_all($res);ostatni OID$oid = pg_last_oid($res);rozłączeniepg_close($dbconn);14Obsługa błędówOperator ignorowania błędów @:$dbconn = @pg_connect();Tekst ostatniego błędu w połączeniu:$str = pg_last_error();Tekst błędu dla wyniku $res:$str = pg_result_error($res);Tekst ostatniej informacji serwera:$str = pg_last_notice($dbconn);15PHP przykład fetch_array,16PHP przykład fetch_assoc17Transakcje" Nie da się trzymać pomiędzy \ądaniamiWWW, bo nie ma pewności na trafienie dotego samego procesu." Nie ma specjalnych funkcji w PHP wykonuje się pg_query z kolejnymikomendami (mo\na w jednym wywołaniu).18New func.>= 5.1.0, psql >= 7.4Nie działają na EiT (7.3.1)$dbconn = pg_connect (".");$result = pg_prepare($dbconn, "myq",'SELECT fname FROM pers WHERE sname = $1');$result = pg_execute($dbconn, "myq",array("Juszkiewicz"));$result = pg_execute($dbconn, "myq",array("Stankiewicz"));19Sesje pamiętanie wartości" Przekazywany tylko identyfikator sesji" Przed jakimkolwiek kodem HTML funkcjasession_start()" Mo\na przekazywać jedynie wartościzmiennych (nie referencje)" Odczytujemy i zapisujemy $_SESSION" Inne funkcje session_ obsługizmiennych mogą nie działać20Zalecenia" Nie wykorzystywać kolejności kolumn wbazie (SELECT *) przez odniesienianumeryczne" Jak najwięcej pracy przez silnik bazy (np.sortowanie, wybieranie)" Oddzielać kod PHP i HTML nie stosowaćfunkcji echo i print*" Nie korzystać ze stałych połączeń21Pomocne funkcje" pokazywanie błędów:error_reporting(value)" wyświetlanie wektorów:print_r($arr), var_dump($arr)" dostowanie zmiennych:extract($_REQUEST,EXTR_SKIP)" konwersja znaków nowych wierszy:nl2br($tekst)22Pecl i Pearpecl.php.net PHP ExtensionCommunity Library serwis z dodatkowymirozszerzeniami do PHP (w C).pear.php.net PHP Extension andApplication Repository serwis podobny zwiększą liczbą modułów i instalatorem:pear install23Obiektowośćkonstruktor (__construct),destruktor (__destruct).24Szablon Smarty index.tplInformacja o u\ytkownikuNazwisko: {$name|capitalize}{html_image file="picture.gif"}{include file="footer.tpl"}25Cechy Smarty" Rozdzielenie kodu HTML od aplikacji," Aatwość zmiany wyglądu," Większa szybkość działania (cache).include('Smarty.class.php');$smarty = new Smarty;$smarty->caching = true;$smarty->assign('name', 'juszkiewicz');$smarty->display('index.tpl');26
[ Pobierz całość w formacie PDF ]