Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż."

Transkrypt

1 Plan prezentacji Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie Wstęp Przykłady Kontroler Model Widok Klasy wspomagające Kontrola dostępu (ACL) Programowanie sterowane testami Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe Wstęp Charakterystyka Wstęp Przydatne adresy CakePHP PHP MVC Active Record CRUD Formularze HTML, skrypty JavaScript - XML, RSS oraz AJAX ACL Rusztowanie Kontrola i walidacja danych Mechanizmy zabezpieczeń i zarządzania sesjami Szablony Inspirowany Ruby on Rails (RoR) Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe

2 Charakterystyka Wstęp CakePHP na tle innych frameworków Charakterystyka Wstęp Struktura Kontrolery Widoki Modele Komponenty (Components) Pomocnicy (Helpers) Zachowania (Behaviors) Źródło: Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Charakterystyka Wstęp Typowe żądanie Instalacja i konfiguracja Wstęp Instalacja Przykładowy adres strony: cakes / buy / 1 Źródła: Wymagania dla serwera Apache Moduł mod rewrite Włączenie obsługi plików.htaccess AllowOverride All 1 cd /tmp / $USER / httpd / htdocs 2 unzip cakephp. zip mv cakephp cakephp Czarny kolor elementy wymagane. Szary kolor elementy opcjonalne, niebieski kolor funkcje wywołań zwrotnych Typy instalacji Rozwojowa Produkcyjna DocumentRoot /tmp/twójlogin/httpd/htdocs/cakephp/app/webroot Zaawansowana Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe

3 Instalacja i konfiguracja Wstęp Ogólna struktura katalogu z instalacją CakePHP Instalacja i konfiguracja Wstęp Ogólna struktura katalogu z kodem aplikacji CakePHP / tmp cakephp app $USER httpd htdocs cakephp app.htaccess index.php lib plugins README.md vendors Config Console Controller.htaccess index.php Lib Locale Model Plugin Test tmp Vendor View webroot Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 10 Przedmiot: Aplikacje internetowe Instalacja i konfiguracja Wstęp Ważniejsze pliki konfiguracyjne Konwencje nazewnicze Wstęp Konwencje dla klas i plików app Config bootstrap.php core.php database.php routes.php 2 class DATABASE_CONFIG { public $default = array ( 4 datasource => Database / Mysql, 5 persistent => false, 6 host => localhost, 7 login => user, 8 password => password, 9 database => database_name, 10 prefix =>, 11 // e n c o d i n g => u t f 8, 12 ) ; 1 14 public $test = array ( datasource => Database / Sqlite,... ) ; 15 } 16?> Typ Nazwa klasy Nazwa pliku z definicją klasy Kontroler KissesAndHugsController KissesAndHugsController.php Komponent MyHandyComponent MyHandyComponent.php Model OptionValue OptionValue.php Zachowanie EspeciallyFunkableBehavior EspeciallyFunkableBehavior.php Widok SuperSimpleView SuperSimpleView.php Pomocnik BestEverHelper BestEverHelper.php public $usedbconfig = test ; Dr inż. Stanisław Polak 11 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 12 Przedmiot: Aplikacje internetowe

4 Konwencje nazewnicze Wstęp Konwencje dla modeli i BD class Apple extends AppModel { } 6?> Nazwa modelu Apple BigAuthor id producer id name 1 4 Jonatan Tabela : apples Nazwa tabeli apples big authors app/model/apple.php id name Kowalski Tabela : producers Konwencje nazewnicze Wstęp Konwencje dla kontrolerów class ApplesController extends AppController { 4 #Request h t t p : / / l o c a l h o s t : 8 080/ a p p l e s / 5 function index ( ) {... } 6 7 #Request h t t p : / / l o c a l h o s t : 8 080/ a p p l e s / getready / 8 function getready ( ) {... } 9 10 #Request h t t p : / / l o c a l h o s t : 8 080/ a p p l e s / f i n d N e w A p p l e s E r r o r 11 function _findnewapples ( ) {... } 12 1 #Request h t t p : / / l o c a l h o s t : 8 080/ a p p l e s / l a t e s t e l e m e n t / 14 function latest_element ( ) { 15 $this >_findnewapples ( ) ; 16 } 17 } app/controller/applescontroller.php Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 14 Przedmiot: Aplikacje internetowe Konwencje nazewnicze Wstęp Konwencje dla widoków Hello World Przykłady Aplikacja Hello World 1 <html> 2 <?php... 4?> 5 </html> app/view/apples/index.ctp 1 <html> 2 <?php... 4?> 5 </html> app/view/apples/get ready.ctp class ApplesController extends AppController { 4 #Request http : / / localhost :8080/ apples / 5 function index(){} 6 #Request http : / / localhost :8080/ apples / getready / 7 function getready(){} 8 } app/controller/applescontroller.php class Apple extends AppModel { } 6?> app/model/apple.php id producer id name Tabela : apples Dr inż. Stanisław Polak 15 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 16 Przedmiot: Aplikacje internetowe

5 Hello World Przykłady Widok Hello World Przykłady Model 1 Hello World app/view/hellos/index.ctp 2 App : : uses ( AppModel, Model ) ; 4 class Hello extends AppModel { 5 } 6?> app/model/hello.php Dr inż. Stanisław Polak 17 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 18 Przedmiot: Aplikacje internetowe Hello World Przykłady Kontroler Lista użytkowników Przykłady Aplikacja Lista użytkowników 2 App : : uses ( AppController, Controller ) ; 4 class HellosController extends AppController { 5 6 function index ( ) { 7 } 8 } 9?> app/controller/helloscontroller.php Mechanizm rusztowania Wymagane Model Kontroler $scaffold Modyfikowalne listy zawartości Założenia Podstawowe informacje o użytkowniku baza danych Funkcjonalność CRUD mechanizm rusztowania URL: Dr inż. Stanisław Polak 19 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 20 Przedmiot: Aplikacje internetowe

6 Lista użytkowników Przykłady Schemat BD Lista użytkowników Przykłady Kontroler 1 CREATE TABLE users ( 2 id integer PRIMARY KEY, username VARCHAR ( 8 ) NOT NULL UNIQUE, 4 password char (40), 5 imie VARCHAR (20), 6 nazwisko VARCHAR (20), 7 VARCHAR ( 0 ) 8 ) ; 2 App : : uses ( AppController, Controller ) ; 4 class UsersController extends AppController { 5 public $scaffold ; 6 } 7?> app/controller/userscontroller.php Dr inż. Stanisław Polak 21 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 22 Przedmiot: Aplikacje internetowe Lista użytkowników Przykłady Model Lista użytkowników Przykłady Aplikacja 2 App : : uses ( AppModel, Model ) ; 4 class User extends AppModel { 5 } 6?> app/model/user.php Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 24 Przedmiot: Aplikacje internetowe

7 Generowanie kodu Przykłady Kontroler Konsola CakePHP Generowanie aplikacji z poziomu linii komend Wybrane atrybuty i metody 1 cake bake project /tmp/$user/httpd/htdocs/aplikacja 2 cd /tmp / $USER / httpd / htdocs / aplikacja sqlite BD. sqlite 4 #tworzymy odpowiednie t a b e l e w bazie danych cake bake db config 7 cake bake 8 cake bake model [nazwa modelu] 9 cake bake controller user 10 cake bake controller user --public 11 cake bake controller user --public --admin 12 cake bake view user class UsersController extends AppController { 4 ############################################# 5 #http : / / localhost :8080/ users / 6 public function index ( ) {... } 7 8 #http : / / localhost :8080/ users / view /1 9 public function view ( $id = null ) {... } ############################################# 12 1 #http : / / localhost :8080/ admin / users / 14 public function admin_index ( ) {... } #http : / / localhost :8080/ admin / users / view /1 17 public function admin_view ( $id = null ) {... } public function admin_add ( ) {... } 20 public function admin_edit ( $id = null ) {... } 21 public function admin_delete ( $id = null ) {... } 22 } Controller/UsersController.php class RecipesController extends AppController { 4 public $name = Recipes ; 5 # Katalog z widokami : app / View /$name/ 6 # Nazwa modelu : L i c z b a P o j e d y n c z a ( $name ) 7 8 public $uses = array ( Recipe, User ) ; 9 #p u b l i c $ u s e s = a r r a y ( ) ; 10 #p u b l i c $ u s e s = f a l s e ; 11 public $helpers = array ( Js => array ( Jquery ) ) ; 12 public $components = array ( Auth ) ; 1 14 function akcja ( ) { 15 $this >set( color, pink ) ; # W widoku j e s t dost ępna zmienna $color ; 16 $this >redirect( array ( controller => orders, action => confirm ) ) ; 17 $this >render( $view, $layout ) ; 18 } 19 } 1 Configure : : write ( Routing. prefixes, array ( admin ) ) ; Config/core.php Dr inż. Stanisław Polak 25 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 26 Przedmiot: Aplikacje internetowe Kontroler Kontroler Aplikacja Hello World Wersja zmodyfikowana Wybrane funkcje wywołań zwrotnych (callbacks) Poprzednia wersja class HellosController extends AppController { 4 5 function index ( ) { 6 } 7 } 8?> app/controller/helloscontroller.php Nowa wersja class HellosController extends AppController { 4 5 function index ( ) { 6 $this >set ( komunikat, Hello World ) ; 7 } 8 } 9?> app/controller/helloscontroller.php Funkcja beforefilter() beforerender() afterfilter() 1 Hello World app/view/hellos/index.ctp 2 echo $komunikat ;?> app/view/hellos/index.ctp Dr inż. Stanisław Polak 27 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 28 Przedmiot: Aplikacje internetowe

8 Komponenty Kontroler Dostępne komponenty Komponenty Kontroler Komponent Auth Włączenie uwierzytelniania Acl Auth Session RequestHandler Security Cookie Paginator 1 function beforefilter ( ) { 2 $this >Auth >authorize = array ( Controller ) ; 4 $this >Cookie >name = CookieMonster ; 5 $this >Cookie >time = ; // or 1 hour 6 } Kontroler 2 App : : uses ( Controller, Controller ) ; 4 class AppController extends Controller { 5 public $components = array ( Session, Auth ) ; } app/controller/appcontroller.php CREATE TABLE users ( 2 id integer INTEGER PRIMARY KEY, username varchar (50), 4 password char ( 4 0 ) 5 ) ; SQL Dr inż. Stanisław Polak 29 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 0 Przedmiot: Aplikacje internetowe Komponenty Kontroler Komponenty Kontroler Komponent Auth Obsługa procedury logowania 2 class UsersController extends AppController { public $components = array ( Session, Auth ) ; #Je ż e l i app / C o n t r o l l e r / A p p o n t r o l l e r. php n i e z a w i e r a t e j l i n i i 4 5 function login ( ) { 6 if ( $this >request >is ( post ) ) { 7 if ( $this >Auth >login ( ) ) 8 return $this >redirect ( $this >Auth > redirecturl ( ) ) ; 9 else 10 $this >Session >setflash ( Nieprawidłowy login lub has ło, default, array ( ), auth ) ; 11 } 12 } 1 function logout ( ) { 14 $this >redirect ( $this >Auth >logout ( ) ) ; 15 } function beforefilter ( ) { 18 parent : : beforefilter ( ) ; 19 $this >Auth >allow( register ) ; 20 } 21 } app/controller/userscontroller.php 2 echo $this >Session >flash ( auth ) ; echo $this >Form >create ( User, array ( action => login ) ) ; 4 echo $this >Form >input ( username ) ; 5 echo $this >Form >input ( password ) ; 6 echo $this >Form >end ( Login ) ; 7 echo $this >Html >link ( " Rejestracja nowego uż ytkownika ", / users / register ) ; 8?> app/view/users/login.ctp Tworzenie własnego komponentu class MathComponent extends Component { 4 function sum ( $x, $y ){ 5 return $x+$y ; 6 } 7 // c a l l e d before C o n t r o l l e r : : b e f o r e F i l t e r ( ) 8 function initialize(&$controller, $settings = array ( ) ) {... } 9 // c a l l e d a f t e r C o n t r o l l e r : : b e f o r e F i l t e r ( ) 10 function startup(&$controller ) {... } 11 // c a l l e d a f t e r C o n t r o l l e r : : beforerender ( ) 12 function beforerender(&$controller ) {... } 1 // c a l l e d a f t e r C o n t r o l l e r : : r e n d e r ( ) 14 function shutdown(&$controller ) {... } 15 // c a l l e d before C o n t r o l l e r : : r e d i r e c t ( ) 16 function beforeredirect(&$controller, $url, $status=null, $exit=true ) {... } 17 }?> app/controller/component/mathcomponent.php class IndexesController extends AppController{ 4 public $components = array ( Math ) ; 5 function index ( ){ 6 $x = 5 ; 7 $y = 5 ; 8 $sum = $this >Math >sum ($x, $y ) ; 9 } 10 }?> app/controller/indexescontroller.php Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe

9 Model Model Charakterystyka Posługiwanie się modelem Dane Tabela BD Pliki Rekordy LDAP Zdarzenia ical Wiersze pliku CVS... Powiązania 2 App : : uses ( AppModel, Model ) ; 4 class Ingredient extends AppModel { 5 } app/model/ingredient.php 2 App : : uses ( AppController, Controller ) ; 4 class IngredientsController extends AppController { 5 public $uses = array ( Ingredient, User ) ; 6 7 function index ( ) { 8 $ingredients = $this->ingredient >find ( all ) ; 9 $this >set ( ingredients, $ingredients ) ; $users = $this->user >find ( all ) ; 1 1 $this >loadmodel( Group ) ; 14 $groups = $this->group >find ( all ) ; } 17 } app/controller/ingredientscontroller.php Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe Model Łączenie modeli Model Pola specjalne Łączenie modeli title name created modified jeden do jeden jeden do wielu wiele do jednego wiele do wielu Przykład / Typ asocjacji Użytkownik posiada jeden profil User hasone Profile Użytkownik posiada wiele komentarzy User hasmany Comment Profil należy do użytkownika Profile belongsto User Lekarz posiada i należy do wielu pacjentów Physician hasandbelongstomany Patient Schemat profiles.user id comments.user id profiles.user id patients physicians.id, patients physicians.patient id, patients physicians.physician id Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe

10 Łączenie modeli Model Przykład Łączenie modeli Model Przykład Lista drużyn class User extends AppModel { 4 public $hasone = Profile ; 5 public $hasmany = array ( 6 Comment => array ( 7 classname => Comment, 8 conditions => array ( Comment.approved => 1 ), 9 order => Comment. created DESC 10 ) 11 ) ; 1 1 $this->comment->jakasfunkcja() ; } app/model/user.php 1 CREATE TABLE players ( 2 id INTEGER PRIMARY KEY, firstname VARCHAR ( 5 0 ) NOT NULL, 4 lastname VARCHAR ( 5 0 ) NOT NULL, 5 position VARCHAR ( 2 5 ) NOT NULL, 6 team_id INTEGER 7 ) ; 2 App : : uses ( AppModel, Model ) ; 4 class Player extends AppModel { 5 public $belongsto = Team ; 6 } 7?> app/model/player.php 1 CREATE TABLE teams ( 2 id INTEGER PRIMARY KEY, name VARCHAR ( 5 0 ) NOT NULL 4 ) ; 2 App : : uses ( AppModel, Model ) ; 4 class Team extends AppModel { 5 public $hasmany = Player ; 6 public $displayfield = name ; 7 } 8?> app/model/team.php 1 $this >User >Comment >jakasfunkcja ( ) ; app/controller/userscontroller.php Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe Pobieranie danych Model Pobieranie danych Pobieranie danych Model Przykłady query(string $zapytanie) find($typ, $parametry) $typ [ all, list, neighbors, count, threaded, first ] $parametry tablica: conditions => array( Model.pole => $danawartość), recursive => 1, fields => array( Model.pole1, Model.pole2 ), order => array( Model.created, Model.pole DESC ), group => array( Model.pole ), limit => n, page => n, callbacks => true findallby<nazwapola>(string $wartość) findby<nazwapola>(string $wartość) field(string $nazwa, array $warunki = null, $porządek=null) read($pola, $id) Model::$data Model::$id 2 $this >Post >find ( list, array ( fields => Post. title ) ) ; $this >Post >id = 2 ; 4 $neighbors = $this >Post >find ( neighbors ) ; 5 $this >Model >find ( all, $condition ) ; 6 $this >User >findallbylastname( Polak ) ; // User. l a s t n a m e = Polak 7 $this >Cake >findbyid (7) ; // Cake. i d = 7 8 $this >Picture >query( " SELECT * FROM pictures LIMIT 2;" ) ; 9 echo $model >field( name, array ( created < => date ( Y-m-d H:i:s ) ), created DESC ) ; 10 $allcategories = $this >Category >find ( threaded ) ; 1 Kontroler Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 40 Przedmiot: Aplikacje internetowe

11 Zapisywanie danych Model Podstawowy format danych Zapisywanie danych Model Wybrane metody 1 Array ( 2 [ NazwaModelu ] => Array ( [ nazwapola1 ] => wartosc 4 [ nazwapola2 ] => wartosc 5 ) 6 ) 2 if (! empty ($this->request->data) ) { // I f t h e form data can be v a l i d a t e d and s a v e d... 4 if ( $this >Comment >save ($this->request->data) ) { 5 // Set a s e s s i o n f l a s h message and r e d i r e c t. 6 $this >Session >setflash ( " Comment Saved!" ) ; 7 $this >redirect ( / comments ) ; 8 } 9 } Kontroler save(array $dane = null, boolean $walidacja = true, array $listapól = array()) save(array $dane = null, array $parametry = array()) create(array $dane = array()) savefield(string $nazwapola, string $wartośćpola, $walidacja = false) #$this->nazwamodelu->id = $id updateall(array $pola, array $warunki) saveall(array $dane = null, array $opcje = array()) nazwy opcji [validate, atomic, fieldlist] Dr inż. Stanisław Polak 41 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 42 Przedmiot: Aplikacje internetowe Zapisywanie danych Model Przykład 1 Zapis danych modelu głównego User oraz stowarzyszonego Profile, za pomocą metody save() Zapisywanie danych Model Przykład 2 Zapis danych modelu głównego Company oraz stowarzyszonego Account, za pomocą metody saveall() 2 if (! empty ( $this >request >data ) ) { // Możemy zapisa ć dane User s ą one przechowywane w $this >request >data [ User ] 4 $uzytkownik = $this >User >save ( $this >request >data ) ; 5 // Je ż e l i zapisano dane o uż ytkowniku, możemy dodać te informacje i zapisa ć P r o f i l 6 if (! empty ( $uzytkownik ) ) { 7 // I d e n t y f i k a t o r nowo utworzonego u ż y t kownika z n a j d u j e s i ę w $ t h i s >User >i d 8 $this >request >data [ Profile ] [ user_id ] = $this >User >id ; 9 // Poniewa ż User i P r o f i l e s ą po ł ą czone r e l a c j ą hasone P r o f i l e, możemy u z y s k a ć d o s t ę p do modelu P r o f i l e z poziomu modelu User 10 $this >User >Profile >save ( $this >request >data ) ; 11 } 12 } 1... app/controller/userscontroller.php 1 echo $this >Form >create ( Company, array ( action => add ) ) ; 2 echo $this >Form >input ( Company. nazwa, array ( label => Nazwa firmy ) ) ; echo $this >Form >input ( Company.opis ) ; 4 echo $this >Form >input ( Company. lokalizacja ) ; 5 echo $this >Form >input ( Account.0. nazwa, array ( label => Nazwa konta ) ) ; 6 echo $this >Form >input ( Account.0. nazwauzytkownika ) ; 7 echo $this >Form >input ( Account.0. ) ; 8 echo $this >Form >end ( Dodaj ) ; app/view/companies/add.ctp 1 #: Company hasmany Account function add ( ) { 4 if (! empty ( $this >request >data ) ) { 5 $this >Company >saveall ( $this >request >data, array ( validate => first ) ) ; 6 } 7 } 8... app/controller/companiescontroller.php Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 44 Przedmiot: Aplikacje internetowe

12 Usuwanie danych Model Dostępne metody Inne zagadnienia Model Wybrane atrybuty delete(int $id = null, boolean $kaskadowo = true) deleteall(mixed $warunki, $kaskadowo = true, $callbacki = false) class Example extends AppModel { 4 public $usedbconfig = alternatywna ; 5 public $usetable = false ; // Ten model nie korzysta z t a b e l i BD 6 public $tableprefix = alternate_ ; // bę dzie szuka ł alte rna te ex ampl es 7 public $primarykey = example_id ; // example id j e s t polem w BD 8 public $displayfield = username ; 9 public $recursive = 1 // warto ś ć domyś lna ; 10 public $order = array ( " Example. pole1 " => "asc ", " Example. pole2 " => "DESC " ) ; 11 print_r ( $this >data ) ; 12 public $_schema = array ( 1 imie => array ( 14 type => string, 15 length => 0 16 ), 17 nazwisko => array ( 18 type => string, 19 length => 0 20 ), 21 => array ( 22 type => string, 2 length => 0 24 ), 25 message => array ( type => text ) 26 ) ; 27 public cachequeries = true ; 28 } app/model/example.php Dr inż. Stanisław Polak 45 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 46 Przedmiot: Aplikacje internetowe Inne zagadnienia Model Funkcje wywołań zwrotnych Funkcja beforefind(array $danezapytania) afterfind(array $wyniki,boolean $pierwotny=false) beforevalidate(array $opcje=array()) beforesave(array $opcje=array()) aftersave($utworzono) beforedelete(boolean $kaskadowo=true) afterdelete() onerror() 2 App : : uses ( AuthComponent, Controller / Component ) ; 4 class User extends AppModel { 5 function beforesave ( $options = array ( ) ) { 6 $this >data [ User ] [ password ] = AuthComponent : : password ( $this >data [ User ] [ password ] ) ; 7 return true ; 8 } 9 } app/model/user.php Inne zagadnienia Model Wirtualne pola 2 // Dla SQLite public $virtualfields = array ( 4 // Dla SQLite 5 nazwa => User. imie \ \ User. nazwisko 6 // Dla MySQL 7 // nazwa => CONCAT( User. imie,, User. n a z w i s k o ) 8 ) ; 9... app/model/user.php 2 $results = $this >User >find( first ) ; 4 // wynik zawiera nast ępujące dane 5 array ( 6 User => array ( 7 imie => Stanis ław, 8 nazwisko => Polak, 9 nazwa => Stanisław Polak, 10 // wi ę c e j pó l. 11 ) 12 ) ; 1 14 $this >User >hasfield ( nazwa ) ; // Zwraca false, gdy nie i s t n i e j e konkretne ( fizyczne ) pole o nazwie nazwa 15 $this >User >hasfield ( nazwa, true ) ; // Zwraca true, gdy i s t n i e j e wirtualne pole o nazwie nazwa 16 $this >User >isvirtualfield ( nazwa ) ; // t r u e 17 $this >User >isvirtualfield ( imie ) ; // f a l s e 18 $this >User >getvirtualfield ( nazwa ) ; // dla MySQL zwraca CONCAT( User. imie,, User. nazwisko ) app/controller/userscontroller.php Dr inż. Stanisław Polak 47 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 48 Przedmiot: Aplikacje internetowe

13 Inne zagadnienia Model Zarządzanie schematem bazy danych oraz migawki Walidacja Model Reguły proste 1 cake schema generate 2 cake schema create cake schema update 4 cake schema update -s 2 #app / Config /Schema/ schema 2. php 5 cake schema dump --write dump.sql 1 class AplikacjaSchema extends CakeSchema { public $users = array ( 4 id => array ( type => integer, null => false, length => 11, key => primary ), 5 username => array ( type => string, null => false, length => 8), 6 password => array ( type => string, null => true, length => 40), 7 imie => array ( type => string, null => true, length => 20), 8 nazwisko => array ( type => string, null => true, length => 20), 9 => array ( type => string, null => true, length => 0), 10 indexes => array ( 11 PRIMARY => array ( column => username, unique => 1) 12 ), 1 tableparameters => array ( ) 14 ) ; 15 } class User extends AppModel { 4 public $validate = array ( 5 login => alphanumeric, 6 => , 7 dataurodzenia => date 8 ) ; 9 } app/model/user.php app/config/schema/schema.php Dr inż. Stanisław Polak 49 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 50 Przedmiot: Aplikacje internetowe Walidacja Model Reguły złożone class User extends AppModel { 4 public $validate = array ( 5 login => array ( 6 alfanumeryczne => array ( 7 rule => alphanumeric, 8 required => true, 9 message => Tylko litery lub cyfry 10 ), 11 pomiedzy => array ( 12 rule => array ( between, 5, 15), 1 message => Od 5 do 15 znak ów 14 ) 15 ), 16 password => array ( 17 rule => array ( minlength, 8 ), 18 message => Mimimum 8 znak ów 19 ), 20 => , 21 dataurodzenia => array ( 22 rule => date, 2 message => Podaj poprawn ą dat ę, 24 allowempty => true 25 ) 26 ) ; 27 } app/model/user.php Walidacja Model Definiowanie własnych reguł 2 public $validate = array ( login => array ( 4 rule => /^[a-z0-9]{,} $/i, 5 message => Tylko cyfry lub litery, min. znaki 6 ) 7 ) ; 8... Użycie wyrażenia regularnego class User extends AppModel { 4 public $validate = array ( 5 promotion_code => array ( 6 rule => array ( limitduplicates, 25), 7 message => Przekroczono limit krotno ści uż ycia kodu. 8 ) 9 ) ; 10 function limitduplicates ( $data, $limit ){ 11 $existing_promo_count = $this >find ( count, array ( conditions => $data, recursive => 1) ) ; 12 return $existing_promo_count < $limit ; 1 } 14 } Własna metoda walidująca Dr inż. Stanisław Polak 51 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 52 Przedmiot: Aplikacje internetowe

14 Zachowania Model Zachowania Zachowania Model Dostępne zachowania class Category extends AppModel { 4 public $actsas = array ( 5 Tree => array ( 6 left => left_node, 7 right => right_node 8 ), 9 Translate 10 ) ; 11 } app/model/category.php class CategoriesController extends AppController { 4 5 public function index ( ) { 6 this >Category >id = 4 2 ; 7 kids = $this >Category >children ( ) ; 8 this >Category >Behaviors >unload ( Translate ) ; 9 this >Category >Behaviors >load ( Tree, array ( left => new_left_node ) ) ; 10 } 11 } app/controller/categoriescontroller.php ACL Containable Translate Tree Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 54 Przedmiot: Aplikacje internetowe Widok Składniki warstwy widoku Widok Składniki warstwy widoku Widoki Widoki (Views) Układy (Layouts) Elementy (Elements) Pomocnicy (Helpers) Motywy (Themes) app webroot View Themed... NazwaKontrolera NazwaMotywu 1 <div class=" logout "><a href="/ users / logout "><img src="/ img / logout. png " width="0" alt="[ logout ]">Wylogowanie</a></div> 2 <aside> <h1>menu</h1> 4 <div> 5 <h2>panele</h2> 6 <ul> 7 <?php echo $this >fetch( panels ) ;?> 8 </ul> 9 </div> 10 </aside> <h2><?php echo $this >fetch( title ) ;?></h2> 1 <?php echo $this >fetch( content ) ;?> 14 <div class=" logout "><a href="/ users / logout "><img src="/ img / logout. png " width="0" alt="[ logout ]">Wylogowanie</a></div> app/view/people/common/main.ctp 2 // Pozosta ł a zawarto ść staje s i ę tre ś ci ą bloku o nazwie c o n t e n t $this >extend( Common/main ) ; 4 $this >assign( title, Panel użytkownika ) ; 5 //Utwó rz blok panels 6 $this >start( panels ) ; 7 echo <li><a href="/notes ">Notek </a></li> ; 8 echo <li ><a href ="/ users "> Administratora </a > </ li > ; 9 $this >end() ;?> // Pozosta ł a zawarto ść staje s i ę tre ś ci ą bloku o nazwie c o n t e n t 12 Treść webroot... NazwaKontrolera app/view/people/index.ctp Dr inż. Stanisław Polak 55 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 56 Przedmiot: Aplikacje internetowe

15 Składniki warstwy widoku Widok Układy Składniki warstwy widoku Widok Pomocnicy 1 <!DOCTYPE html> 2 <html lang="en"> <head> 4 <?php echo $this >Html >charset ( ) ;?> 5 <title><?php echo $title for layout;?></title> 6 <link rel=" shortcut icon " href=" favicon. ico " type=" image /x- icon "> 7 <?php 8 echo $this->fetch( meta ); 9 echo $this->fetch( css ); 10 echo $this->fetch( script );?> 11 </head> 12 <body> 1 <?php echo $this->fetch( content );?> 14 </body> 15 </html> app/view/layouts/uklad.ctp class PeopleController extends AppController { 4 function index ( ) { // Poniż sze l i n i e można również umieś ci ć w pliku widoku 7 $this->set( title_for_layout, Panel u ż ytkownika ); 8 $this->layout = uklad ; } 11 } app/controller/peoplecontroller.php class PeopleController extends AppController { 4 public $helpers = array ( Form, Time ) ; function akcja ( ) { 7 $this->helpers[] = Number ; 8 } } app/controller/peoplecontroller.php Dr inż. Stanisław Polak 57 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 58 Przedmiot: Aplikacje internetowe Składniki warstwy widoku Widok Podstawowi pomocnicy Składniki warstwy widoku Widok Pomocnik Paginator class UsersController extends AppController { 4 public $components=array ( Paginator ) ; 5 public $helpers=array ( Paginator ) ; 6 7 function index ( ) { 8 $this >Paginator >settings = array ( limit => 2, page => 1) ; 9 $this >set ( users, $this >Paginator >paginate ( ) ) ; 10 } 11 } Pomocnik Pomocnik Pomocnik Pomocnik Cache Form Html Js Number Paginator Rss Session Text Time app/controller/userscontroller.php 1 <table cellpadding="0" cellspacing="0"> 2 <tr> <th><?php echo $this >Paginator >sort( id ) ;?></th> </tr> 6 <?php foreach ( $users as $user ) :?> 7 <tr> 8 <td><?php echo $user [ User ] [ id ] ;?></td> </tr> 1 endforeach ;?> 12 </table> 1 <?php 14 echo $this >Paginator >counter ( array ( 15 format => Page {: page } of {: pages }, showing {: current } records out of {: count } total, starting on record {: start }, ending on {: end } 16 ) ) ; 17 echo $this >Paginator >prev( <previous ), array ( ), null, array ( class => prev disabled ) ) ; 18 echo $this >Paginator >numbers(array ( separator => ) ) ; 19 echo $this >Paginator >next( next >, array ( ), null, array ( class => next disabled ) ) ; 20?> app/view/users/index.ctp Dr inż. Stanisław Polak 59 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 60 Przedmiot: Aplikacje internetowe

16 Składniki warstwy widoku Widok Tworzenie pomocnika Przykład Składniki warstwy widoku Widok Elementy 2 App : : uses ( AppHelper, View / Helper ) ; 4 class LinkHelper extends AppHelper { 5 public $helpers = array ( Html ) ; 6 7 function link ( $create, $title, $url ){ 8 if ( $create ) 9 return $this >Html >link ( $title, $url ) ; 10 else 11 return $title ; 12 } 1 } app/view/helper/linkhelper.php 2 <?php echo $this >Link->link( $notespanel, Notek, / notes )?>... class PeopleController extends AppController { 4 public $helpers = array ( Link ) ; 5 6 public function index ( ){ // Sprawd ź czy i s t n i e j e k o n t r o l e r Notes 9 $notespanel = App : : import ( Controller, Notes ) ; // t r u e, j e ś l i k l a s a jest ju ż w pamię ci lub je ś l i plik z o s t a ł z n a l e z i o n y i za ł adowany ; f a l s e j e ś l i n i e 10 $this >set ( notespanel, $notespanel ) ; 1 12 } 1 } app/view/people/index.ctp app/controllers/peoplecontroller.php 2 echo $this >element( logout ) ; echo $this >element( logout, 4 array ( 5 "text" => " Wylogowanie " 6 ), 7 array ( 8 "cache" => true, 9 "callbacks" => true #Funkcje zwrotne beforerender oraz afterrender będą uruchamiane 10 ) 11 ) ; Widok 2 $content =! empty ($text)? $text : Wylogowanie ;?> 4 <div class=" logout "><a href="/ users / logout "><img src="/img / logout.png " width="0 " alt="[ logout ]"><?php echo $content ;?></a></div> app/view/elements/logout.ctp Dr inż. Stanisław Polak 61 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 62 Przedmiot: Aplikacje internetowe Klasy wspomagające Klasy wspomagające Funkcjonalności Oczyszczanie danych Dziennikowanie Buforowanie Umiędzynarodowienie i lokalizacja Operacje tablicowe Operacje łańcuchowe Tworzenie obiektów SimpleXml lub DOMDocument Odmiana wyrazów Gniazda (sockety) HTTP Parsowanie URL Haszowanie i szyfrowanie Oczyszczanie danych Poczta Katalogi i pliki Dostęp do funkcjonalności pomocników Time, Number oraz Text 2 App : : uses( Sanitize, Utility ) ;... 4 $badstring = ";: < script ><html >< // >@@#" ; 5 echo Sanitize : : paranoid( $badstring ) ; // na wyj ś c i u : s c r i p t h t m l 6 echo Sanitize : : paranoid( $badstring, array ) ) ; // na wyj ś c i u : s c r i p t h t m 7 $badstring = <font size ="99" color="# FF0000 ">HEY </ font ><script >... </ script > ; 8 echo Sanitize : : html( $badstring ) ; // na wyj ś c i u : & l t ; f o n t s i z e=&quot ;99& quot ; c o l o r =&quot ;#FF0000&quot ;& gt ; HEY& l t ; / f o n t&gt ;& l t ; s c r i p t&gt ;... & l t ; / s c r i p t&gt ; 9 #zak ł adamy, ż e w t a b l i c y $ o p c j e k l u c z remove w s k a z u j e warto ś ć TRUE 10 echo Sanitize : : html( $badstring, $opcje ) ; // na wyj ś c i u : HEY echo Sanitize : : escape( " Stanislaw Polak s page ", default ) ; // na wyj ś ciu : Stanislaw Polak s page 12 Sanitize : : clean( $this >request >data, array ( encode => false ) ) ; 1... Przykłady użycia Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 64 Przedmiot: Aplikacje internetowe

17 Lokalizacja i umiędzynarodowienie Klasy wspomagające Lokalizacja zawartości statycznej Pojęcia podstawowe Umiędzynarodowienie (i18n) Lokalizacja (l10n) Globalizacja (g11n) = i18n + l10n Przygotowanie danych 1 msgid " first name " 2 msgstr " First name " msgid " message " 4 msgstr " You belong to a group of %s " app/locale/eng/lc MESSAGES/default.po 1 msgid " first name " 2 msgstr " Imi ę" msgid " message " 4 msgstr " Nale ż ysz do grupy %s " app/locale/pol/lc MESSAGES/default.po Przykład użycia 1 echo ( " first name " ) }; 2 echo ( message, $dane [ Group ] [ name ] ) ; Widok 2 Configure : : write ( Config. language, pol ) ;... Kontroler Lokalizacja i umiędzynarodowienie Klasy wspomagające Lokalizacja zawartości bazy danych cake i18n 1 CREATE TABLE notes ( 2 id integer PRIMARY KEY, title varchar ( ) default NULL, 4 body text 5 ) ; SQL 2 public $actsas = array ( Translate => array ( title, body ) ) ;... app/model/note.php 2 function beforefilter ( ) { Configure : : write ( Config. language, pol ) ; 4 } 5... app/controller/notescontroller.php Dr inż. Stanisław Polak 65 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 66 Przedmiot: Aplikacje internetowe Kontrola dostępu (ACL) Kontrola dostępu (ACL) Podstawowe pojęcia Tabele z informacjami o użytkownikach ACL (Access Control List) określa kto ma dostęp do czego ARO (Access Request Object) reprezentuje kto ACO (Access Control Object) reprezentuje czego 1 CREATE TABLE users ( 2 id INTEGER PRIMARY KEY, username CHAR ( 8 ) NOT NULL UNIQUE, 4 password CHAR ( 4 0 ) NOT NULL, 5 group_id TINYINT NOT NULL, ) ; 8 9 CREATE TABLE groups ( 10 id INTEGER PRIMARY KEY, 11 name VARCHAR ( 2 0 ) NOT NULL, 1 1 ) ; SQL Dr inż. Stanisław Polak 67 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 68 Przedmiot: Aplikacje internetowe

18 Autoryzatory Kontrola dostępu (ACL) Dostępne autoryzatory Autoryzatory Kontrola dostępu (ACL) Autoryzator ActionsAuthorize ActionsAuthorize CrudAuthorize ControllerAuthorize 2 class AppController extends Controller {... 4 public $components = array ( 5 Acl, 6 Auth => array ( 7 authorize => array ( Actions => array ( actionpath => controllers / ) ) 8 ), ) ; 1 12 } app/controller/appcontroller.php Dr inż. Stanisław Polak 69 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 70 Przedmiot: Aplikacje internetowe Autoryzatory Kontrola dostępu (ACL) Autoryzator CrudAuthorize Autoryzatory Kontrola dostępu (ACL) Autoryzator ControllerAuthorize class AppController extends Controller { 4 public $components = array ( 5 Acl, 6 Auth => array ( 7 authorize => array ( 8 Crud => array ( 9 / 10 i n d e x => r e a d, 11 add => c r e a t e, 12 e d i t => update, 1 view => r e a d, 14 remove => d e l e t e, 15 c r e a t e => c r e a t e, 16 r e a d => r e a d, 17 update => update, 18 d e l e t e => d e l e t e 19 / 20 actionmap => array ( show => read, pokaz => read ) 21 ) 22 ) 2 ) 24 ) ; } app/controller/appcontroller.php 2 function beforefilter ( ) { parent : : beforefilter ( ) ; 4 $this >Auth >mapactions( 5 array ( 6 create => array ( register, dodaj ), 7 read => array ( wyswietl ) 8 ) 9 ) ; 10 } 1 Kontroler 2 class UsersController extends Controller { public $components = array ( 4 Auth => array ( authorize => Controller ), 5 ) ; 6 7 public function isauthorized( $user = null ) { 8 $usergroup = $user [ Group ] [ name ] ; 9 10 // A d m i n i s t r a t o r z y mogą wykonywa ć dowolne a k c j e k o n t r o l e r a Users, p o z o s t a l i ty lk o akcje index oraz view 11 if ( $usergroup == administrators in_array ( $this >action, array ( index, view ) ) ) { 12 return true ; // zezwolenie na dost ęp do zasobu 1 } if ( $usergroup == users ) { 16 return false ; // brak prawa dost ępu do zasobu 17 } 18 return false ; 19 } 20 } app/controller/userscontroller.php Dr inż. Stanisław Polak 71 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 72 Przedmiot: Aplikacje internetowe

19 Implementacje Kontrola dostępu (ACL) Dostępne implementacje ACL Implementacje Kontrola dostępu (ACL) Implementacja IniAcl IniAcl PhpACl DbAcl 1 Configure : : write ( Acl. classname, IniAcl ) ; 2 #C o n f i g u r e : : w r i t e ( Acl. d a t a b a s e, d e f a u l t ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php 1 ; 2 ; Users ; 4 5 [ polak ] 6 groups = administrators 7 allow = 8 deny = 9 10 [ user ] 11 groups = users 12 allow = 1 deny = ; 16 ; Groups 17 ; [ users ] 20 allow = controllers / People / index 21 deny = 22 2 [ administrators ] 24 allow = controllers / People /index, controllers / Users / index, deny = app/config/acl.ini.php Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 74 Przedmiot: Aplikacje internetowe Implementacje Kontrola dostępu (ACL) Implementacja PhpAcl Implementacje Kontrola dostępu (ACL) Implementacja DbAcl 1 Configure : : write ( Acl. classname, PhpAcl ) ; 2 #C o n f i g u r e : : w r i t e ( Acl. d a t a b a s e, d e f a u l t ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php 1 $config [ map ] = array ( 2 User => User / username, Role => User / group_id, 4 ) ; 5 $config [ alias ] = array ( 6 Role /1 => Role / user, 7 Role /2 => Role / staff, 8 Role / => Role / admin 9 ) ; 10 $config [ roles ] = array ( 11 Role / user => null, 12 Role / staff => null, 1 Role / admin => null, 14 Role / editor => Role /user, Role / staff, 15 User / polak => Role / editor, 16 ) ; 17 $config [ rules ] = array ( 18 allow => array ( 19 * => Role / admin, 20 controllers / Pages / display => Role / default, Role / user, 21 controllers / Users /( index view ) => Role / user, 2 2 ), 24 deny => array ( 25 controllers / Users / delete => Role / editor, ), 28 ) ; app/config/acl.php 1 Configure : : write ( Acl. classname, DbAcl ) ; 2 Configure : : write ( Acl. database, default ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php Tworzenie tabel ACL cake acl initdb 1 CREATE TABLE " aros " ( 2 "id" integer primary key autoincrement, " parent_id " integer ( 1 0 ) DEFAULT NULL, 4 " model " varchar ( ) DEFAULT NULL, 5 " foreign_key " integer ( 1 0 ) DEFAULT NULL, 6 " alias " varchar ( ) DEFAULT NULL, 7 " lft " integer ( 1 0 ) DEFAULT NULL, 8 " rght " integer ( 1 0 ) DEFAULT NULL 9 ) ; CREATE TABLE " acos " ( 12 "id" integer primary key autoincrement, 1 " parent_id " integer ( 1 0 ) DEFAULT NULL, 14 " model " varchar ( ) DEFAULT NULL, 15 " foreign_key " integer ( 1 0 ) DEFAULT NULL, 16 " alias " varchar ( ) DEFAULT NULL, 17 " lft " integer ( 1 0 ) DEFAULT NULL, 18 " rght " integer ( 1 0 ) DEFAULT NULL 19 ) ; CREATE TABLE " aros_acos " ( 2 "id" integer primary key autoincrement, 24 " aro_id " integer ( 1 0 ) NOT NULL, 25 " aco_id " integer ( 1 0 ) NOT NULL, 26 " _create " varchar ( 2 ) DEFAULT 0 NOT NULL, 27 " _read " varchar ( 2 ) DEFAULT 0 NOT NULL, 28 " _update " varchar ( 2 ) DEFAULT 0 NOT NULL, 29 " _delete " varchar ( 2 ) DEFAULT 0 NOT NULL 0 ) ; SQL Dr inż. Stanisław Polak 75 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 76 Przedmiot: Aplikacje internetowe

20 Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Automatyczne dodawanie/usuwanie ARO podczas dodawania/usuwania użytkownika lub grupy class User extends Model { 4 public $belongsto = array ( Group ) ; 5 public $actsas = array ( Acl => array ( type => requester ) ) ; 6 7 function parentnode() { 8 if (! $this >id && empty ( $this >data ) ) { 9 return null ; 10 } 11 if ( isset ( $this >data [ User ] [ group_id ] ) ) { 12 $groupid = $this >data [ User ] [ group_id ] ; 1 } else { 14 $groupid = $this >field ( group_id ) ; 15 } 16 if (! $groupid ) { 17 return null ; 18 } else { 19 return array ( Group => array ( id => $groupid ) ) ; 20 } 21 } 22 } app/model/user.php class Group extends Model { 4 public $hasmany = array ( User ) ; 5 public $actsas = array ( Acl => array ( type => requester ) ) ; 6 7 function parentnode() { 8 return null ; 9 } 10 } app/model/group.php Dr inż. Stanisław Polak 77 Przedmiot: Aplikacje internetowe Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie ARO 1 cake acl create aro root Group. 1 2 cake acl create aro root Group. 2 cake acl create aro root Group. 4 5 cake acl create aro Group. 1 User. 6 cake acl create aro Group. 2 User. 2 7 cake acl create aro Group. User. 1 Tworzenie, przy użyciu skryptu cake 1 cake acl view aro 2 Welcome to CakePHP v2.. 4 Console 4 5 App : aplikacja 6 Path : / home / polak / aplikacja / 7 8 Aro tree : 9 10 [ 1 ] Group [ 4 ] User. 12 [ 2 ] Group. 2 1 [ 5 ] User.2 14 [ ] Group. 15 [ 6 ] User.1 16 Wyświetlenie drzewa ARO 1 $aro = $this >Acl >Aro ; 2 $groups = array ( 0 => array ( 4 alias => Group.1, 5 model => Group, 6 foreign_key => 1 # id grupy z t a b e l i groups 7 ), 8 1 =>..., 9 2 => ) ; 11 foreach ( $groups as $data ) { 12 $aro >create ( ) ; 1 $aro >save ( $data ) ; 14 } 15 ############################### 16 $aro = new Aro ( ) ; 17 $users = array ( 18 0 => array ( 19 alias => User., 20 parent_id => 1, # id węz ł a w drzewie ARO, tu ; id węz ł a o nazwie Group.1 21 model => User, 22 foreign_key =>, # id uż ytkownika z tabeli users 2 ), 24 1 =>..., 25 2 => ) ; 27 foreach ( $users as $data ) { 28 $aro >create ( ) ; 29 $aro >save ( $data ) ; 0 } Z poziomu kontrolera Dr inż. Stanisław Polak 78 Przedmiot: Aplikacje internetowe Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie ACO Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie powiązań pomiędzy ARO a ACO 1 cake acl create aco root controllers 2 cake acl create aco controllers Users cake acl create aco controllers / Users create 4... Za pomocą skryptu cake 1 $aco =& $this >Acl >Aco ; 2 $aco >create ( array ( parent_id => null, alias => controllers ) ) ; $root = $aco >save ( ) ; 4 $controllers_id = $root [ Aco ] [ id ] ; 5 $aco >create ( array ( parent_id => $controllers_id, alias => Users ) ) ; 6 $root = $aco >save ( ) ; 7 $users_id = $root [ Aco ] [ id ] ; 8 $aco >create ( array ( parent_id => $users_id, alias => create ) ) ; 9 $aco >save ( ) ; Z poziomu kontrolera 1 cake acl grant Group. controllers all 2 cake acl grant Group. 2 controllers / Notes all cake acl grant Group. 1 controllers / People read Za pomocą skryptu cake 2 $group = $this >User >Group ; //Uż ytkownicy z grupy mogą wykonywać dowolne ( w s z y s t k i e ) a k c j e 4 $group >id = ; 5 $this >Acl >allow ( $group, controllers ) ; 6 7 //Uż ytkownicy z grupy 2 mogą wykonywać dowolne akcje dla k o n t r o l e r a Notes 8 $group >id = 2 ; 9 $this >Acl >deny ( $group, controllers ) ; 10 $this >Acl >allow ( $group, controllers / Notes ) ; //Uż ytkownicy z grupy 1 mogą wykonywać akcje typu r e a d d l a k o n t r o l e r a People 1 $group >id = 1 ; 14 $this >Acl >deny ( $group, controllers ) ; 15 $this >Acl >allow ( $group, controllers / People, read ) ; Z poziomu kontrolera Dr inż. Stanisław Polak 79 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 80 Przedmiot: Aplikacje internetowe

21 Testowanie Rama testująca PHPUnit Programowanie sterowane testami Tworzenie i wykonywanie testów jednostkowych Instalacja 1 pear upgrade PEAR 2 pear config set auto_discover 1 pear install pear. phpunit. de/ PHPUnit Konfigurowanie CakePHP 1 Configure : : write ( debug, 1) ; #Warto ś ć parametru debug 1 1 public $test = array ( 2 datasource =>...,... 4 ) ; app/config/core.php app/config/database.php Etapy procedury testowania 1. Opcjonalnie, utworzenie osprzętu testowania (fixture) 2. Utworzenie testów. Uruchomienie testów Osprzęt testowania Programowanie sterowane testami Tworzenie osprzętu testowania 2 class UserFixture extends CakeTestFixture { public $fields = array ( 4 id => array ( type => integer, null => false, length => 11, key => primary ), 5 username => array ( type => string, null => false, length => 50), 6 password => array ( type => string, null => true, length => 40), 7 group_id => array ( type => integer, null => true ), 8 indexes => array ( PRIMARY => array ( column => username, unique => 1) ), 9 tableparameters => array ( ) 10 ) ; public $records = array ( 1 array ( 14 id => 1, 15 username => admin, 16 password => fc1ca166055a25701d12f14f0fd74ba50, 17 group_id => 1 18 ), 19 array ( 20 id => 2, 21 username => manager, 22 password => 8951 d5c5c26e451a6a76c55e950d65fd2e145, 2 group_id => 2 24 ) 25 ) ; 26 } app/test/fixture/userfixture.php Dr inż. Stanisław Polak 81 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 82 Przedmiot: Aplikacje internetowe Osprzęt testowania Programowanie sterowane testami Importowanie definicji i rekordów Testy Programowanie sterowane testami Co można testować 2 class UserFixture extends CakeTestFixture { public $import = User ; 4 public $import = array ( model => User, records => true ) ; 5 public $import = array ( table => users ) ; 6 public $import = array ( table => users, records => true ) ; 7 } app/test/fixture/userfixture.php Modele Kontrolery Pomocnicy Komponenty Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 84 Przedmiot: Aplikacje internetowe

22 Testy Programowanie sterowane testami Reguły dla testów Testy Programowanie sterowane testami Testowanie modeli Katalog app/test/case/[typ] Nazwy plików *Test.php Klasy nadrzędne CakeTestCase i ControllerTestCase PHPUnit Framework TestCase Nazwy metod zawierających testy admins() testadmins() class User extends AppModel { 4 function admins( $fields = null ) { 5 $params = array ( 6 conditions => array ( 7 $this >name.. group_id => 8 ), 9 fields => $fields 10 ) ; 11 return $this >find ( all, $params ) ; 12 } 1 } app/model/user.php 2 App : : uses ( User, Model ) ; 4 class UserTestCase extends CakeTestCase { 5 public $fixtures = array ( app. user, app. group, app. profile ) ; 6 7 public function setup() { 8 parent : : setup ( ) ; 9 $this >User = ClassRegistry : : init ( User ) ; 10 } public function teardown() { 1 unset ( $this >User ) ; 14 parent : : teardown ( ) ; 15 } function testadmins() { 18 $result = $this >User > admins( array ( username ) ) ; 19 $expected = array ( 20 array ( User => array ( username => admin1 ) ), 21 array ( User => array ( username => admin2 ) ) 22 ) ; 2 24 $this >assertequals($expected, $result) ; 25 } 26 } app/test/case/model/usertest.php Dr inż. Stanisław Polak 85 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 86 Przedmiot: Aplikacje internetowe Uruchamianie testów Programowanie sterowane testami Źródła Sposoby uruchomienia testów Testowanie przykładowego modelu User Pierwszy sposób 1. DEBUG App / Tests 4. Model / User Drugi sposób cake test app/model/user.php --stderr Źródła I Faheem Abbas. Defining your own components in cakephp. defining-your-own-components-in-cakephp/. the bakery. Dokumentacja CakePHP. Jason Gilmore. Scaffolding with cakephp - managing your fantasy football team. Maciej Grajcarek. L10n i i18n w cakephp 1.2. http: //blog.uplevel.pl/index.php/2008/05/l10n-i-i18n-w-cakephp-12/. Dr inż. Stanisław Polak 87 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 88 Przedmiot: Aplikacje internetowe

23 Źródła Źródła II Matt Inman. 21 things you must know about cakephp things-you-must-know-about-cakephp.html. Wikipedia. Dr inż. Stanisław Polak 89 Przedmiot: Aplikacje internetowe

Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż.

Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż. Plan prezentacji Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie http://artemis.wszib.edu.pl/~polak/ Wstęp Przykłady Kontroler Model Widok Klasy

Bardziej szczegółowo

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

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar) Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Co narzuca MVC? Architekturę aplikacji wykonaną w konwencji Model Widok - Kontroler Model reprezentacja danych i dostępu do nich Widok elementy

Bardziej szczegółowo

Studium Podyplomowe Aplikacje i Us ugi Internetowe Tworzenie witryn internetowych 2012/2013. CakePHP część II

Studium Podyplomowe Aplikacje i Us ugi Internetowe Tworzenie witryn internetowych 2012/2013. CakePHP część II 1. Dodatkowe elementy aplikacji CakePHP część II Przygotowany w poprzedniej części projekt prezentuje podstawowe elementy aplikacji opartej o CakePHP takie jak: klasy modelu, kontrolery, widoki. W tej

Bardziej szczegółowo

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Konfiguracja i przygotowanie przykładowej aplikacji opartej o model Model-View- Controller Konfiguracja frameworka Zainstaluj na serwerze

Bardziej szczegółowo

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11 Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11 Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2 Czym jest ASP.NET

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2012 Plan wykładu Modele danych i bazy danych Modele danych Migracje Bazy danych w Railsach Rusztowania Walidacja modeli Modele danych Definicje

Bardziej szczegółowo

pawel.rajba@gmail.com, http://kursy24.eu/

pawel.rajba@gmail.com, http://kursy24.eu/ pawel.rajba@gmail.com, http://kursy24.eu/ Wprowadzenie, struktura Podstawy Twig Adres i nawigacja Request, Response i parametry Ciasta, sesje i flash messages Model i baza danych Formularze Security Ilustracje

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 1

MVC w praktyce tworzymy system artykułów. cz. 1 MVC w praktyce tworzymy system artykułów. cz. 1 Tworząc różnego rodzaju aplikacje natrafiamy na poważny problem utrzymania dobrej organizacji kodu przejrzystej oraz łatwej w rozbudowie. Z pomocą przychodzą

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2014 Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 38 Zasady Projekt Składowe projektu przynajmniej

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

Bardziej szczegółowo

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3 3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0

Bardziej szczegółowo

Laboratorium 6 Tworzenie bloga w Zend Framework

Laboratorium 6 Tworzenie bloga w Zend Framework Laboratorium 6 Tworzenie bloga w Zend Framework Przygotowanie bazy danych 1. Wykonaj skrypt blog.sql, który założy w bazie danych dwie tabele oraz wpisze do nich przykładowe dane. Tabela blog_uzytkownicy

Bardziej szczegółowo

Wprowadzenie do framework a Symfony

Wprowadzenie do framework a Symfony Wprowadzenie do framework a Symfony mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Bazuje na wzorcu projektowym MVC Niezależność od systemu bazodanowego Programowanie zorientowane

Bardziej szczegółowo

Laboratorium nr 3 Podstawy Ruby on Rails

Laboratorium nr 3 Podstawy Ruby on Rails Laboratorium nr 3 Podstawy Ruby on Rails Elektroniczne Przetwarzanie Informacji Plan prezentacji Utworzenie aplikacji Author Book Końcowe porządki System do obsługi biblioteki Bardzo prosta biblioteka.

Bardziej szczegółowo

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

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar) Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Rodzaje zawartości Zawartość statyczna Treść statyczna (np. nagłówek, stopka) Layout, pliki multimedialne, obrazki, elementy typograficzne,

Bardziej szczegółowo

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Środowisko Django, cz. 3 19 stycznia 2018 Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4 Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu

Bardziej szczegółowo

Internetowe bazy danych

Internetowe bazy danych Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 6 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Kontrola dostępu

Bardziej szczegółowo

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers Tworzenie modułów Wymagania aplikacji Tworzenie modułów Utworzenie katalogu z nazwą modułu oraz wersją (np. blog1) w katalogu modules Utworzenie potrzebnych katalogów takich jak config controllers helpers

Bardziej szczegółowo

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika

Bardziej szczegółowo

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2. Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny

Bardziej szczegółowo

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

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014 Aplikacje WWW Krzysztof Ciebiera 3 kwietnia 2014 Bezpieczeństwo Clickjacking CSRF Cross site scripting (XSS) Migracje ContentType Tłumaczenia Testowanie - RequestFactory Clickjacking Użytkownik odwiedza

Bardziej szczegółowo

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API OPT Open Power Template System szablonów OPT System szablonów PHP5 Niektóre możliwości: Cache Nagłówki HTTP oraz kompresja Rozszerzalność Struktury kontrolne Wysokopoziomowe struktury Ułatwienia Wysoka

Bardziej szczegółowo

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

Wykład 5: PHP: praca z bazą danych MySQL Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych

Bardziej szczegółowo

Bazy danych i usługi sieciowe

Bazy danych i usługi sieciowe Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z

Bardziej szczegółowo

Język SQL, zajęcia nr 1

Język SQL, zajęcia nr 1 Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze

Bardziej szczegółowo

Projektowanie systemów baz danych

Projektowanie systemów baz danych Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do

Bardziej szczegółowo

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków. Igor Wojnicki (AGH, KIS) PHP 23 października 2016 1 / 29 NoSQL Not Only SQL: CouchDB Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków. Igor Wojnicki Katedra Informatyki Stosowanej,

Bardziej szczegółowo

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails Plan prezentacji Framework Rails Ruby on Rails podstawowe założenia DRY: nie powtarzaj się Ruby on Rails podstawowe założenia DRY: nie powtarzaj

Bardziej szczegółowo

Ruby i Ruby on Rails. Mateusz Drożdżyński

Ruby i Ruby on Rails. Mateusz Drożdżyński Ruby i Ruby on Rails Mateusz Drożdżyński Co to Ruby? Dynamiczny, obiektowy język programowania, stworzony przez Yukihiro Matsumoto Pojawił się w tym samym roku co Java (1995) Przejrzysta, prosta i intuicyjna

Bardziej szczegółowo

Wprowadzenie do Doctrine ORM

Wprowadzenie do Doctrine ORM Wprowadzenie do Doctrine ORM Przygotowanie środowiska Do wykonania ćwiczenia konieczne będzie zainstalowanie narzędzia Composer i odpowiednie skonfigurowanie Netbeans (Tools->Options->Framework & Tools->Composer,

Bardziej szczegółowo

Podstawowe wykorzystanie Hibernate

Podstawowe wykorzystanie Hibernate Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia

Bardziej szczegółowo

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT Wprowadzenie do psql i SQL 1 Bazy Danych Wykład p.t. Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT Antoni Ligęza ligeza@agh.edu.pl http://galaxy.uci.agh.edu.pl/~ligeza Wykorzystano

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 6 Marcin Młotkowski 14 listopada 2012 Plan wykładu Trwałość obiektów Bazy danych DBM Bazy danych SQL Active records Szeregowanie obiektów Obiekt Serializacja @tytul = 'Pan Tadeusz'

Bardziej szczegółowo

media Blitz wydajne sytemy szablonów

media Blitz wydajne sytemy szablonów Blitz wydajne sytemy szablonów Dlaczego stosować szablony? MVC Kontroler Model Widok Co to jest Blitz? Rozszerzenie PHP stworzone przez Alexey A. Rybak a. Regularnie rozwijany od 2005 roku. Szybki i lekki

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 13 Marcin Młotkowski 16 stycznia 2013 Plan wykładu Testowanie aplikacji w Ruby on Rails Testowanie modeli Testy funkcjonalne: testowanie kontrolerów Testy integracyjne Testowanie

Bardziej szczegółowo

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty MeetingHelper Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania Instrukcja obsługi dla programisty W tej części został zawarty opis uruchamiania projektu programistycznego,

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 2

MVC w praktyce tworzymy system artykułów. cz. 2 MVC w praktyce tworzymy system artykułów. cz. 2 W drugiej części artykułu o wzorcu MVC stworzymy część skryptu, odpowiedzialną za obsługę kategorii. Tworzymy kontroler kategorii Na początek stwórzmy plik

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Język PHP Paweł Witkowski Wydział Matematyki, Informatyki i Mechaniki Jesień 2011 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 1 /

Bardziej szczegółowo

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki 29 października 2014 Igor Wojnicki (AGH, KIS) CouchDB 29 października 2014 1 / 53 NoSQL Not Only SQL, CouchDB Apache CouchDB has started. Time to relax. Igor Wojnicki Katedra Informatyki Stosowanej, Akademia

Bardziej szczegółowo

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP Baza danych i ORM Struktura Bundle app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP src/ - folder zawiera cały kod PHP aplikacji vendor/

Bardziej szczegółowo

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji Baza danych i ORM Projekt zestaw usług dostępnych pod daną domeną. Aplikacja niezależnie działające programy/serwisy (w obrębie pojektu). Zwyczajowo projekt posiada dwie aplikacje: Frontend Backend Moduł

Bardziej szczegółowo

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Laboratorium nr 4. Temat: SQL część II. Polecenia DML Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze

Bardziej szczegółowo

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Środowisko Django początki 10 stycznia 2014 Plan wykładu 1 2 Plan wykładu 1 2 Co to jest Django Oparty o Pythona framework do tworzenia aplikacji internetowych. Co to jest Django Oparty o Pythona framework

Bardziej szczegółowo

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js Akademia MetaPack Uniwersytet Zielonogórski Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js Daniel Habowski Budowa aplikacji SPA z wykorzystaniem biblioteki Ember.js Agenda: 1. Standardowa

Bardziej szczegółowo

Baza danych do przechowywania użytkowników

Baza danych do przechowywania użytkowników System logowania i rejestracji jest bardzo przydatną funkcjonalnością na każdej stronie. Umożliwia sprawną identyfikację i zarządzanie użytkownikami. Strona ze skryptem logowania nabiera dużej wartości.

Bardziej szczegółowo

Programowanie zorientowane obiektowo. Mateusz Kołecki

Programowanie zorientowane obiektowo. Mateusz Kołecki Programowanie zorientowane obiektowo Mateusz Kołecki Plan MVC Wstęp Separacja odpowiedzialnośći Antyprzykład Dobry przykład Wady/zalety MVC MVC to tylko początek - wzorce projektowe Dlaczego chcemy używać

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 6

Podstawy programowania III WYKŁAD 6 Podstawy programowania III WYKŁAD 6 Jan Kazimirski 1 Projekt: Katalog książek elektronicznych c.d. 2 Diagram przypadków użycia 3 Iteracja 1 Zaprojektowanie panelu głównego aplikacji Realizacja przypadków

Bardziej szczegółowo

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić

Bardziej szczegółowo

Hurtownia Świętego Mikołaja projekt bazy danych

Hurtownia Świętego Mikołaja projekt bazy danych Aleksandra Kobusińska nr indeksu: 218366 Hurtownia Świętego Mikołaja projekt bazy danych Zaprezentowana poniżej baza jest częścią większego projektu bazy danych wykorzystywanej w krajowych oddziałach wiosek

Bardziej szczegółowo

Zarządzanie kontami użytkowników w i uprawnieniami

Zarządzanie kontami użytkowników w i uprawnieniami 106 Plan prezentacji 107 Zarządzanie kontami użytkowników w i uprawnieniami Schematy a użytkownicy Tworzenie użytkowników, uwierzytelnianie Przywileje systemowe i obiektowe, role Profile kontrola wykorzystania

Bardziej szczegółowo

Paweł Cieśla. Dokumentacja projektu

Paweł Cieśla. Dokumentacja projektu Paweł Cieśla Dokumentacja projektu Projekt Project1 został utworzony i skompilowany na próbnej wersji Delphi XE 4. Po uruchomieniu programu należy kliknąć przycisk Wczytaj plik tekstowy, następnie wskazać

Bardziej szczegółowo

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

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science Systemy internetowe Wykład 4 mysql MySQL - wstęp SZBD: komercyjne: Microsoft SQL Server, Oracle, DB2... darmowe: MySQL, PostgreSQL, Firebird... MySQL darmowy (użytek niekomercyjny) Wady: niska wydajność

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński WICKET VS. DJANGO Leszek Gawron vs. Michał Leszczyński 0. Główne ficze 1. Środowisko developerskie AGENDA 2. Uruchomienie projektów 3. Warstwa DAO/serwisów 4. Tworzenie UI 5. Templating 7. i18n 8. Reusability

Bardziej szczegółowo

Database Connectivity

Database Connectivity Oprogramowanie Systemów Pomiarowych 15.01.2009 Database Connectivity Dr inŝ. Sebastian Budzan Zakład Pomiarów i Systemów Sterowania Tematyka Podstawy baz danych, Komunikacja, pojęcia: API, ODBC, DSN, Połączenie

Bardziej szczegółowo

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

Bardziej szczegółowo

Systemowe aspekty baz

Systemowe aspekty baz Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Struktura drzewa w MySQL. Michał Tyszczenko

Struktura drzewa w MySQL. Michał Tyszczenko Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu

Bardziej szczegółowo

Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń. Cel: polecenia T-SQL Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS Authentication: SQL Server Authentication Username: student01,, student21 Password: student01,., student21

Bardziej szczegółowo

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables MYSQL 1 1. Sprawdzenie ustawień konfiguracyjnych Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables 2 2. Wstępna konfiguracja Po zainstalowaniu aplikacji należy przed uruchomieniem wykonać

Bardziej szczegółowo

Bazy danych 10. SQL Widoki

Bazy danych 10. SQL Widoki Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela

Bardziej szczegółowo

BAZA DANYCH SIECI HOTELI

BAZA DANYCH SIECI HOTELI Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykład 5. SQL praca z tabelami 2 Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,

Bardziej szczegółowo

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski Uniwersytet Warszawski 6 kwiecień 2009 Spis Treści 1 MVC Jak to wygląda w JavascriptMVC 2 Prawie jak klasy 3 Hierarchia Widoki Kontrolery Modele 4 Struktura katalogów Generatory kodu Generatory dokumentacji

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych MySQL studia zaoczne II stopnia, sem. I Plan wykładu 1. MySQL: funkcje, procedury, wyzwalacze 2. HTML : tworzenie

Bardziej szczegółowo

JavaScript funkcyjność

JavaScript funkcyjność JavaScript funkcyjność WWW 9 kwietnia 2014 Możliwości tworzenia dynamicznych stron WWW HTML i CSS. Skrypty CGI (Perl, PHP). Serwery (django, java). Plug-iny. Ksiażka Większość przykładów pochodzi z ksiażki:

Bardziej szczegółowo

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014 Igor Wojnicki (AGH, KIS) Smarty 28 marca 2014 1 / 33 Smarty Igor Wojnicki Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie 28 marca 2014 $Id: smarty.tex,v 1.2 2013/06/22 22:09:45 wojnicki

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

Bardziej szczegółowo

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym

Bardziej szczegółowo

Aplikacje www laboratorium

Aplikacje www laboratorium Aplikacje www laboratorium Konfigurowanie zabezpieczeń w oparciu o JAAS w serwerze GlassFish Zabezpieczanie aplikacji webowych z wykorzystaniem JASS jest w podstawowych zastosowaniach procesem dwuetapowym.

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

Backend Administratora

Backend Administratora Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona

Bardziej szczegółowo

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

Bardziej szczegółowo

Politechnika Częstochowska. Projektowanie systemów użytkowych II

Politechnika Częstochowska. Projektowanie systemów użytkowych II Politechnika Częstochowska Wydział Inżynierii Mechanicznej i Informatyki Projektowanie systemów użytkowych II Zdalny wybór Prac Dyplomowych Diana Kisiała Tomasz Jewiarz Jacek Kucharzewski Informatyka,

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

PODSTAWY BAZ DANYCH 13. PL/SQL PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących

Bardziej szczegółowo

Bazy danych 7. SQL podstawy

Bazy danych 7. SQL podstawy Bazy danych 7. SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Structured Query Language Używane standardy: SQL92 SQL99 SQL:2003 Żaden dostawca nie jest w pełni zgodny

Bardziej szczegółowo

Bazy danych. Polecenia SQL

Bazy danych. Polecenia SQL Bazy danych Baza danych, to miejsce przechowywania danych. Dane w bazie danych są podzielone na tabele. Tabele składają się ze ściśle określonych pól i rekordów. Każde pole w rekordzie ma ściśle ustalony

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Wykład 05 Bazy danych

Wykład 05 Bazy danych Wykład 05 Bazy danych Tabela składa się z: Kolumn Wierszy Wartości Nazwa Wartości Opis INT [UNSIGNED] -2^31..2^31-1 lub 0..2^32-1 Zwykłe liczby całkowite VARCHAR(n) n = długość [1-255] Łańcuch znaków o

Bardziej szczegółowo

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com Wstęp do tworzenia pluginów Piotr Wasilewski wasilewski.piotrek (at) gmail.com Akademickie Stowarzyszenie Informatyczne www.asi.pwr.wroc.pl Wrocław, 14 kwietnia 2011 1 2 3 4 tworzyć własną wtyczkę Czego

Bardziej szczegółowo

SAP BASIS Architektura systemu klient Server

SAP BASIS Architektura systemu klient Server SAP BASIS Architektura systemu klient Server Platformy systemowe: Microsoft Windows Server, UNIX, Linux Platformy bazodanowe: Microsoft SQL Server, Oracle, IBM DB2 System SAP WSB: System operacyjny: Windows

Bardziej szczegółowo

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

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja Zagadnienia Konstrukcja bibliotek mysql i mysqli w PHP Dynamiczne generowanie stron Połączenie, zapytanie i sesja Podstawowe opakowanie dla zapytań SQL w PHP Zarządzania uŝytkownikami Włamania do mysql

Bardziej szczegółowo

Automatyka i Robotyka ROK III TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH

Automatyka i Robotyka ROK III TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH Wydział Inżynierii Mechanicznej i Robotyki Jakub Topolski Automatyka i Robotyka ROK III GR 22/I Ćwiczenie 4 SIECI KOMPUTEROWE I BAZY DANYCH TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH 1. Cel

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Wykład 3 2014-04-25 12:45 BD-1 W_3

Wykład 3 2014-04-25 12:45 BD-1 W_3 Wykład 3 SQL - język operacji na bazach danych Schemat przykładowej bazy danych Uczelnia Skrypt SQL - utworzenie bazy Uczelnia Polecenia selekcji i projekcji Interakcyjny dostęp do bazy danych 2014-04-25

Bardziej szczegółowo

Podstawy wzorca MVC 2011-10-18 MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Podstawy wzorca MVC 2011-10-18 MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę. Podstawy wzorca MVC MODEL KON- TROLER WIDOK Zawiera dane aplikacji oraz jej logikę. MODEL WIDOK Odpowiada za wyświetlenie danych użytkownikowi KON- TROLER KON- TROLER MODEL WIDOK Jedyna część aplikacji,

Bardziej szczegółowo

Wykład 2. SQL 1 Structured Query Lenguage

Wykład 2. SQL 1 Structured Query Lenguage Wykład 2 SQL 1 Structured Query Lenguage SQL (Structured Query Language) Język zapytań do bazy danych. IBM lata osiemdziesiąte. Stosowany w systemach zarządzania bazami danych (DBMS); Oracle, Paradox,Access,

Bardziej szczegółowo

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy

Bardziej szczegółowo

Systemowe aspekty baz danych

Systemowe aspekty baz danych Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umoŝliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

mysql> UPDATE user SET Password=PASSWORD('pass') WHERE user='root'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0

mysql> UPDATE user SET Password=PASSWORD('pass') WHERE user='root'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0 Uprawnienia dla uż ytkowników MANIPULACJA UPRAWNIENIAMI Przechodzimy do cześci nadawania oraz odbierania uprawnie ń. Wszelkie zmiany dotyczące tabel w bazie mysql można przeprowadza ć za pomoc ą znanych

Bardziej szczegółowo