Języki programowania wysokiego poziomu. Forum, Blog, Sample DB - wskazówki

Podobne dokumenty
PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Baza danych do przechowywania użytkowników

Systemy internetowe Wykład 3 PHP

Bazy danych. dr Radosław Matusik. radmat

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Języki programowania wysokiego poziomu. Ćwiczenia

Internetowe bazy danych

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Napisy w PHP. Drukowanie napisów instrukcją echo

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Wybrane działy Informatyki Stosowanej

Oczywiście plik musi mieć rozszerzenie *.php

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Pliki. Informacje ogólne. Obsługa plików w języku C

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Podstawy programowania skrót z wykładów:

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Bazy danych. Andrzej Łachwa, UJ, /14

Język PHP. Studium Podyplomowe Sieci Komputerowe i Aplikacje Internetowe. v1.7, 2007/11/23

1 Przygotował: mgr inż. Maciej Lasota

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

PL/SQL. Funkcje wbudowane

Przydatne sztuczki - sql. Na przykładzie postgres a.

Funkcje wbudowane PHP

Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy

6. Bezpieczeństwo przy współpracy z bazami danych

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

14. POZOSTAŁE CIEKAWE FUNKCJE

Bazy Danych i Usługi Sieciowe

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Podstawy programowania III

Liczniki odwiedzin. Licznik odwiedzin na plikach

Oracle PL/SQL. Paweł Rajba.

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Podstawy JavaScript ćwiczenia

Aplikacje WWW - laboratorium

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Dokumentacja interfejsu MySQL. Platforma BSMS.PL Instrukcja podłączenia po przez mysql

Dokumentacja smsapi wersja 1.4

Języki programowania wysokiego poziomu. Blog

Aplikacje internetowe - laboratorium

0.1 Logowanie do serwisu

System operacyjny Linux

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Podstawy programowania III WYKŁAD 2

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Umieszczanie kodu. kod skryptu

Oracle PL/SQL. Paweł Rajba.

Dlaczego PHP? - zalety

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Facelets ViewHandler

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Poszczególne elementy serwisu można umieścić dla porządku w odpowiednio przemyślanym drzewie katalogów, i tak: -

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Podstawy technologii WWW

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Pliki. Informacje ogólne. Obsługa plików w języku C

Wykład 5: PHP: praca z bazą danych MySQL

Języki programowania obiektowego Nieobiektowe elementy języka C++

Projektowani Systemów Inf.

Tworzenie Stron Internetowych. odcinek 10

Autor: Joanna Karwowska

Spis treści 1. Założenia ogólne 2. Wymagania 3. Typy SMSów 4. Statusy SMSów 5. Wysyłanie SMSów - Web API 6. Wysyłanie SMSów - 7.

Komunikacja między klientem, a skryptem PHP, oraz operacje na plikach

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Wprowadzenie do Doctrine ORM

Podstawy technologii WWW

Zmienne i stałe w PHP

Bazy danych i strony WWW

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Numeracja dla rejestrów zewnętrznych

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Podstawowe wykorzystanie Hibernate

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Personal Home Page PHP: Hypertext Preprocessor

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

CalendarGenerator v0.1 - instrukcja obsługi

Programowanie internetowe

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

Aplikacje WWW - laboratorium

Transkrypt:

Języki programowania wysokiego poziomu Forum, Blog, Sample DB - wskazówki

Wielokrotne użycie kodu Skrypt może włączać (przez inkluzję) inne skrypty; Służą do tego instrukcje (pseudo-funkcje): - include, - require, - require_once Jeżeli włączany skrypt zawiera HTML, jest on wysyłany do wyjściowego strumienia skryptu głównego, jeżeli jest interpretowany Rozszerzenie nazwy pliku nie jest istotne; niektóre podręczniki zalecają.inc; Pliki powinny być umieszczone poza public_html lub zabezpieczone przez wczytaniem do przeglądarki

Wielokrotne użycie kodu Instrukcja include zwykle służy do włączania gotowego, powtarzającego się fragmentu HTML: <?php include "header.php"; include "banner.php"; // zmienne elementy strony include "footer.php";?>

Wielokrotne użycie kodu Instrukcja require_once zwykle służy do włączania pomocniczych skryptów, zawierających definicje funkcji i zmiennych: //index.php <?php require_once "tepmlate.php"; //template.php <?php $pagetemplate = "...";

Wielokrotne użycie kodu Zabezpieczenie przed wczytaniem pomocniczego skryptu, oparte na własnych zmiennych //index.php <?php define ("INDEX", "1"); // $INDEX = true; require_once "tepmlate.php"; //template.php <?php if (!isset (INDEX)) { header ("Location: index.php"); die (); } // zasadnicza treść skryptu

Wielokrotne użycie kodu Zabezpieczenie przed wczytaniem pomocniczego skryptu, oparte na tablicy sesji (zwykle i tak jest używana) //index.php <?php session_start(); include "tepmlate.php"; //template.php <?php if (!isset ($_SESSION)) { header ("Location: index.php"); die (); } // zasadnicza treść skryptu

Wielokrotne użycie kodu Definiowanie długich łańcuchów tekstu $pagetemplate = " <!DOCTYPE...". "<html>". "<head>"; $pagetemplate = <<<EOM <!DOCTYPE... <html> <head>... EOM;

Wielokrotne użycie kodu Definiowanie funkcji function Name ($arg1, $arg2,, $argn) { // dowolne instrukcje // opcjonalnie: return result; } Wywołanie funkcji $val1 = 7; $val2 = "value"; $res = Foo ($val1, $val2, 13, "other");

Argumenty i rezultat funkcji Ponieważ w nie ma deklaracji zmiennych, typ rezultatu i typy argumentów nie są formalnie określone; Każda funkcja zwraca rezultat (niejawnie: NULL) function foo ($arg) { if ($arg>=0) return sqrt(arg); } $re = foo (4); // 2 $re = foo (-7); // NULL $re = foo (0); // 0 if ($re === NULL) //

Argumenty domyślne Wiele standardowych funkcji ma argumenty domyślne, można też ich używać we własnych funkcjach function foo ($str, $low=true, $trm=true) { if ($low) $str = mb_strtolower($str); if ($trm) $str = trim($str); $res = "foo: «". $str. "»"; } $re = foo (" RES "); // "foo: «res»" $re = foo (" RES ", true, true); //jw.

Argumenty przekazywane przez referencję Domyślnie argumenty są przekazywane przez wartość; dodanie znaku "&" przed nazwą zmienia argument w referencję function foo ($def, &$ref) { $def++; $ref++; } $a=1, $b=1; foo ($a, $b); // $a=1, $b=2

Wielokrotne użycie kodu Powtarzające się w wielu skryptach czynności powinny być wykonywane przez funkcje, wczytywane z pliku // index.php require_once "common.php"; $conn = ConnectDatabase(); // common.php function ConnectDatabase() { $conn = new mysqli ( ); if (mysqli_connect_errno()!=0) { // header??? die (); } $res = $conn->query ("SET NAMES 'utf8'"); return $conn; }

Tworzenie strony na podstawie szablonu Opracowanie szablonu wzorcowa strona (tylko HTML), wszystkie elementy, które będą na stronach tworzonych dynamicznie Zastąpienie elementów zmiennych unikalnymi ciągami znaków, (np. ===Nazwa===), zapisanie szablonu do zmiennej Dynamiczne tworzenie w skrypcie tylko elementów zmiennych strony, do zmiennych, np.: $pgbody = "<h2>xxx</h2>"; while (...) $pgbody.= "<p>yyy";

Tworzenie strony na podstawie szablonu (cd.) Na koniec wstawienie utworzonych dynamicznie elementów do szablonu strony i wysłanie całości do przeglądarki: $page = str_replace( "===PageBody===", $pgbody, $pagetemplate ); echo $page;

Korzyści tworzenia strony na podstawie szablonu: Wszystkie strony serwisu mają dokładnie taki sam układ oraz takie samo formatowanie, Zmiana wyglądu jest łatwa zamiast zmieniać kod wielu skryptów, wystarczy zmodyfikować szablon, Szablony można zapisać w bazie danych, wówczas zmiana wyglądu może być dokonana dynamicznie, Dokument HTML, produkowany przez skrypt, jest wysyłany do przeglądarki dopiero na sam koniec działania skryptu: W dowolnej chwili można zaprzestać tej produkcji lub całkowicie zmienić treść (np. w reakcji na błąd) normalnie to niemożliwe W dowolnej chwili można skorzystać z nagłówków HTTP (np. funkcje session_start, set_cookie, header) normalnie jest to możliwe tylko na samym początku działania skryptu.

Obsługa daty i czasu Obsługa daty i czasu jest jednym z najbardziej złożonych problemów, ze względu na olbrzymią liczbę alternatyw, które trzeba uwzględnić: Różne kalendarze (gregoriański, juliański, hebrajski, perski, chiński, ) Nieregularność kalendarzy (np. różne liczby dni miesiąca, lata przestępne, ), Strefy czasowe, czas letni i zimowy, Liczne regionalne i międzynarodowe formaty zapisu daty i czasu (kolejność podawania numeru miesiąca/dnia, zegar 12/24H, ), Sposób kodowania znaków przez funkcje generujące tekstowe reprezentacje daty (np. Środa, 15 styczeń 2012 ), który może być inny niż stosowany dla całej strony pozwala uwzględnić wszystkie te niuanse

Obsługa daty i czasu udostępnia wiele funkcji związanych z datą i czasem: Pobieranie znacznika czasu (bieżąca data i czas, liczbowo) Formatowanie daty i czasu (łańcuch tekstowy, o dowolnym układzie, na podstawie znacznika) Przekształcenie łańcucha lub liczb (oznaczających rok, miesiąc, dzień, godzinę, ) na znacznik czasowy MySQL udostępnia funkcje, które można użyć w zapytaniach m.in. INSERT oraz UPDATE DATE() bieżąca data, rezultat typu DATE, TIME() bieżący czas, rezultat typu TIME NOW() bieżące data i czas, rezultat typu TIMESTAMP

Znacznik czasu (timestamp) udostępnia funkcję time(), która zwraca aktualny znacznik czasu (liczba sekund od 01.01.1970, godz. 00:00): $currtime = time(); echo "<p>datownik: $crrtime "; // 130928376 Datownik udostępniony przez funkcję time() można zamienić na czytelny dla użytkownika napis przy pomocy funkcji : date() lub strftime()

Funkcje date() i strftime() Dają możliwość niemal dowolnego formatowania daty i czasu, np. miesiąc może być podany jako numer, nazwa lub nazwa skrócona, godzina w zapisie 12 lub 24 godzinnym, uzupełniona zerem (08) lub nie (8) itp. Funkcja date ma tę wadę, że nazwy dni tygodnia oraz miesięcy podaje wyłącznie w j. angielskim, jednak jeżeli nazwy te nie są potrzebne, jest wystarczająca

Funkcja date() Funkcja ma dwa argumenty: pierwszym jest łańcuch formatujący, drugim, opcjonalnym, jest datownik: date ($format, [$timestamp]); Jeżeli datownik nie zostanie podany, funkcja pobierze aktualny datownik, zatem poniższe instrukcje są sobie równoważne: $dt = date ($format); $dt = date ($format, time()); Łańcuch formatujący może zawierać dowolną kombinację znaków określających elementy składowe rezultatu funkcji; znaki nierozpoznane jako formatujące są pozostawiane bez zmian, np.: $tm = date ("H:i:s"); // 21:19:03 $dt = date ("Y-m-d"); // 2011-05-19

Funkcja date() Wybrane znaki formatujące (małe i wielkie litery są rozróżniane) d dzień miesiąca, z wiodącym zerem, 01-31 D dzień tygodnia, w skrócie, Mon Sun m numer miesiąca, z wiodącym zerem, 01-12 M nazwa miesiąca, w skrócie, Jan Dec F nazwa miesiąca, np. January Y rok, 4 cyfry, np. 2011 y rok, 2 cyfry, np. 11 H godzina, format 24H, z zerem, 00-23 h godzina, format 12H, z zerem, 01 12 i minuta, z wiodącym zerem, 00-59 s sekundy, z wiodącym zerem, 00-59

Funkcja strftime() Funkcja ma dwa argumenty: pierwszym jest łańcuch formatujący, drugim, opcjonalnym, jest datownik : strftime ($format, [$timestamp]); Sposób wywołania strftime jest analogiczny, jak date, jednak istnieją dwie istotne różnice: - są inne znaki formatujące - strftime uwzględnia ustawienia regionalne;

Funkcja strftime() Aby uzyskać nazwy dni tygodnia i miesięcy w j. polskim: - zmienić ustawienia regionalne na polskie (funkcja setlocale), - wywołać strftime, - przekonwertować wynik z ISO-8859-2 (takiego używa funkcja strftime) na używany dla całej strony UTF-8 (funkcja iconv): setlocale(lc_time, "pl_pl"); $dtiso = strftime("%a"); // np. "Środa" $dtutf = iconv("iso-8859-2", "UTF-8", $dtiso);

Funkcja strftime() Wybrane znaki formatujące (małe i wielkie litery są rozróżniane) %d dzień miesiąca, z wiodącym zerem, 01-31 %a dzień tygodnia, w skrócie, Mon Sun %A dzień tygodnia, np. Sunday %m numer miesiąca, z wiodącym zerem, 01-12 %b nazwa miesiąca, w skrócie, Jan Dec %B nazwa miesiąca, np. January %Y rok, 4 cyfry, np. 2011 %y rok, 2 cyfry, np. 11 %H godzina, format 24H, z zerem, 00-23 %I godzina, format 12H, z zerem, 01 12 %M minuta, z wiodącym zerem, 00-59 %S sekundy, z wiodącym zerem, 00-59

Funkcja strtotime() Przekształca datę i czas, podane w postaci łańcucha znaków, na datownik; ma dwa argumenty: pierwszym jest łańcuch zawierający datę i czas, drugim, opcjonalnym, jest datownik : strtotime ($time, [$timestamp]); Umożliwia (m.in.) przekształcenie datownika uzyskanego z bazy danych na datownik, który następnie można przekształcić do potrzebnej postaci funkcjami date() lub strftime(): $sql = "SELECT * FROM "; $res = $conn->query ($sql); $row = $res->fetch_assoc(); $tm = strtotime ($row["pstts"]); // pole pstts typu TIMESTAMP

Funkcja strtotime() Drugi argument jest potrzebny, jeżeli określenie czasu jest względne, np.: $nextday = strtotime ("+1 day", $someday); jeżeli zostanie pominięty, to czas jest określany względem czasu bieżącego, tj. domyślnie przyjmuje się równy time() Funkcja dobrze rozpoznaje rozmaite opisy, oczywiście tylko po angielsku: $tm1 = strtotime ("+1 week 2 days 4 hours); $tm2 = strtotime ("next Thursday "); $tm3 = strtotime ("last Monday "); $tm4 = strtotime ("yesterday");