Wykład (Juszkiewicz) Wstep do PHP


PHP jako interfejs PostgreSQLa
dr in\. Krzysztof Juszkiewicz
Wiedza
" 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)
2
Cechy PHP
" Język interpretowany
Wersje PHP:
vs. szybkość,
?????? v.6.0.0,
" Przenośność i
1.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.0,
" Rozwojowość, 22.04.02 v.4.2.0,
10.12.01 v.4.1.0,
" Dynamiczne zmienne,
22.05.00 v.4.0.0,
" Wyra\enia regularne,
" Obiektowość
3
Najprostszy plik php
" Nazwa z rozszerzeniem .php
(np. plik.php)
" Kod php pomiędzy znacznikami
lub
" Mo\na uruchomić  z palca
(np. php plik.php)

4
Kod PHP a HTML
" Aączenie kodu HTML z programem w PHP
daje mo\liwość warunkowego wyświetlania
kodu HTML.


wartość:




5
Schemat pliku PHP
" start sesji,
" połączenie do bazy danych,
" operacje na bazie (modyfikacje, wyciąganie
danych),
" prezentacja efektów w HTML
" rozłączenie bazą
6
Zmienne 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:
7
Typy wartości
" Nieustawiona: NULL, isset(),
unset(),
" Fałsz: False, 0, 0.0, "", "0",
array(),
" yle: jeśli sprawdzmy wartość nieustawioną:
PHP Notice: Undefined variable
8
Tablice są asocjacyjne (hasze)
$h=array('A'=>3);
" Tworzenie:
$h['A'] = 3;
" Wartość dla klucza:
array_push()
array_shift()
Tablica
array_pop()
array_unshift()
Niepotrzebna jest konwersja z tablicy na hasz
9
Obsługa tablic
continue; //Dalszy ciąg pętli
break; //Wyjście z pętli
}?>
}?> // Te\ pętla po wartościach
$wart){
?> Dla jest }?>
10
Zmienne 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
 sesyjne
11
Problemy cudzysłowów
Dodawanie odwrotnych ukośników \
$w = pg_escape_string($w);
$query = "SELECT id FROM tabela WHERE
nazwa='$w'";
Zamiana (&,<,>,") na encje z ampersandami &xxx;
value="">
Lepsza funkcja: htmlentities
12
Typowe zapytania
" Modyfikujące wiersze  affected rows:
 INSERT, UPDATE, DELETE
" Wyciągające dane: SELECT * FROM ...
numery
0 1 2 3 4 5
kolumn
imie nazw data konto debet inne
nazwy
... ... ... ... ... ...
wiersze
... ... ... ... ... ...
(rows)
... ... ... ... ... ...
13
PHP  funkcje (po zmianie 4.2.0)
$dbconn = pg_connect ("dbname=nazwa_bazy
połączenie
user=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łączenie
pg_close($dbconn);
14
Obsługa błędów
Operator 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);
15
PHP przykład fetch_array
$db = @pg_connect("...."); if(!$db) ...
$res = pg_query ($db,
"SELECT imie FROM pers"); if(!$res) ...
while($row = pg_fetch_array($res)){?>
  • ,

  • pg_close($db);
    ?>
    16
    PHP przykład fetch_assoc
    $db = pg_connect("....");
    $res = pg_query ("SELECT imie FROM pers");
    while($row = pg_fetch_assoc($res)){?>

  • pg_close();
    ?>
    17
    Transakcje
    " Nie da się trzymać pomiędzy \ądaniami
    WWW, bo nie ma pewności na trafienie do
    tego samego procesu.
    " Nie ma specjalnych funkcji w PHP 
    wykonuje się pg_query z kolejnymi
    komendami (mo\na w jednym wywołaniu).
    18
    New func. >= 5.1.0, psql >= 7.4
    Nie 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"));
    19
    Sesje  pamiętanie wartości
    " Przekazywany tylko identyfikator sesji
    " Przed jakimkolwiek kodem HTML funkcja
    session_start()
    " Mo\na przekazywać jedynie wartości
    zmiennych (nie referencje)
    " Odczytujemy i zapisujemy $_SESSION
    " Inne funkcje session_ obsługi
    zmiennych mogą nie działać
    20
    Zalecenia
    " Nie wykorzystywać kolejności kolumn w
    bazie (SELECT *) przez odniesienia
    numeryczne
    " 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ń
    21
    Pomocne 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)
    22
    Pecl i Pear
    pecl.php.net  PHP Extension
    Community Library  serwis z dodatkowymi
    rozszerzeniami do PHP (w C).
    pear.php.net  PHP Extension and
    Application Repository  serwis podobny z
    większą liczbą modułów i instalatorem:
    pear install
    23
    Obiektowość
    public $var = 'a default value';
    private $v = 'private';
    protected function MyProtected() {
    echo $this;
    }
    } ?>
    konstruktor (__construct),
    destruktor (__destruct).
    24
    Szablon Smarty index.tpl


    Informacja o u\ytkowniku


    Nazwisko: {$name|capitalize}

    {html_image file="picture.gif"}
    {include file="footer.tpl"}
    25
    Cechy 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


    Wyszukiwarka

    Podobne podstrony:
    Wstęp do projektowania 2014 15 wykład 6,7
    WSTĘP DO PAŃSTWA brakujący wykład
    Ingarden Wstep do Fenomenologii Husserla wyklad 2
    Wstęp do filozofii notatki z wykładów
    Beśka Marek wstęp do teorii miary wykład 3
    Ingarden Wstep do Fenomenologii Husserla wyklad 1
    Wstęp do projektowania 2014 15 wykład 3
    Wstęp do antropologii wykłady
    Wajch E Wstęp do topologii Wykłady i ćwiczenia
    wstęp do energetyki wiatrowej wyklad2
    R Ingarden Wstęp do fenomenologii Husserla wyklad pierwszy
    Wstęp do projektowania 2014 15 wykład 9,10
    WYKLADY Wstep do prawoznawstwa
    R Ingarden Wstęp do fenomenologii Husserla wyklad drugi
    Wstep do R Pr MAP2037 wyklad 7

    więcej podobnych podstron