Pear - hruška Systém pro implementaci a distribuci znovupoužitelných komponent (v PHP) Strukturovaná knihovna open-source (PHP) skriptů Systém pro dis

Podobné dokumenty
Čipové karty Lekařská informatika


Programování v jazyce JavaScript

Programování v jazyce JavaScript

Název Live prez Sear enta Maps

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Koláčky, sezení. Martin Klíma

Základy HTML, URL, HTTP, druhy skriptování, formuláře

AUTOMATICKÉ ŘÍZENÍ S INTERNETOVOU KOMUNIKACÍ V PHP Automatic Control with Internet Communication in PHP

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Úvod do tvorby internetových aplikací

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

1 Webový server, instalace PHP a MySQL 13

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Programování v PHP. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze. Další možnosti formulářů

HTML - Úvod. Zpracoval: Petr Lasák

valid from 1st November 2011

Ajax - úvod. Klíčové pojmy: Ajax, skriptování na straně klienta a serveru, objekt XMLHttpRequest, DOM model.

MBI - technologická realizace modelu

Inovace výuky prostřednictvím šablon pro SŠ

Compression of a Dictionary

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

Návrh a tvorba WWW stránek 1/8. Formuláře

.password xklima:$apr $l sbbajg$ruuy FCr urjfjsvlehsf/ Přídání hesla htpasswd.exe -c c:\www_root\vyuka\autentizace\apache\.

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Vývojařská Plzeň AngularJS

!!Via!AUREA,!s.r.o.!

Formuláře. Internetové publikování. Formuláře - příklad

AJAX. Dynamické změny obsahu stránek

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

První kapitola úvod do problematiky

X36WWW. Vícevrstvá architektura webové aplikace Martin Klíma. Tvorba Webu 2 1

Printris. Hra Printris je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Jaku b Su ch ý 1

Programování v jazyce JavaScript

WORKSHEET 1: LINEAR EQUATION 1

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Tvorba webu. Úvod a základní principy. Martin Urza

Webové Aplikace (6. přednáška)

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Úvod do aplikací internetu a přehled možností při tvorbě webu

Programování v jazyce JavaScript

Přehled kapitol 1. Základní kostra HTML dokumentu 2. Členění dokumentu 3. Kaskádové styly - CSS 4. Pozadí stránky 5.

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Instalace a konfigurace web serveru. WA1 Martin Klíma

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Internet cvičení. ZS 2009/10, Cvičení 4., PHP. Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Programování v jazyce JavaScript

DUM 14 téma: Interakce s uživatelem

PHP a Large Objecty v PostgreSQL

Návod na velmi jednoduchý import z XLS souboru včetně atributů

KAPITOLA 9. Formuláře

1. Webový server, instalace PHP a MySQL 13

Programování v jazyce JavaScript

XHTML 1. Formuláře. Element form. <form>... </form>

Inovace bakalářského studijního oboru Aplikovaná chemie

Příručka aplikace KNetWalk. Fela Winkelmolen Eugene Trounev

KIV/PIA 2013 Jan Tichava

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Formuláře. Internetové publikování

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016

Použití inteligentních značek s informačními službami

LOGBOOK. Blahopřejeme, našli jste to! Nezapomeňte. Prosím vyvarujte se downtrade

Java Cvičení 05. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Aplikace pro srovna ní cen povinne ho ruc ení

Database systems. Normal forms

1. Maple - verze. 2. Maple - prostredi. Document Mode vs. Worksheet Mode

Vytvoření pokročilé Fotogalerie v Drupalu - Views

HTML Hypertext Markup Language

ANOTACE vytvořených/inovovaných materiálů

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí

Základy informatiky. HTML, tvorba WWW stránek. Daniela Szturcová Část převzata z přednášky P. Děrgela

Arduino Ethernet Shield W5100 R3

Dokumentace k API SSLmarketu. verze 1.3

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 2.díl. České vysoké učení technické Fakulta elektrotechnická

JavaScript 101. "Trocha života do statických stránek"

ČERV. Hra Červ je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari)

2. Entity, Architecture, Process

03 - Základy editace dynamických stránek

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Úvodem Seznámení s HTML Rozhraní Canvas... 47

NSWI096 - INTERNET. Úvod do HTML

Střední odborná škola a Střední odborné učiliště, Hořovice

Transportation Problem

Skriptovací jazyky. Obsah

Pantek Productivity Pack. Verify User Control. Uživatelský manuál

(X)HTML, CSS a jquery

Tlačítko Teachers Guide obsahuje odkaz na stručný popis hry a její účel v projektu Ingot.

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Internet WEB stránky HTML, Hypertext MarkUp Language - nadtextový jazyk - Místo příkazů obsahuje tagy - značky

Rezervační systém Tvorba WWW stránek

PG 9.5 novinky ve vývoji aplikací

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Gymnázium, Brno, Slovanské nám. 7 WORKBOOK. Mathematics. Teacher: Student:

Transkript:

X36 WWW Pear Martin Klíma xklima@fel.cvut.cz

Pear - hruška Systém pro implementaci a distribuci znovupoužitelných komponent (v PHP) Strukturovaná knihovna open-source (PHP) skriptů Systém pro distribuci skriptů a jejich správu Definuje standard, jak psát PHP kód Další podpůrné prostředky Web stránky Mailing listy Bug report...... 2

Co to umí Spousta dobře napsaných kódů Objektově orientované Dokumentované Umí se to samo nainstalovat Kde to je http://pear.php.net 3

4

Instalace Pear je součástí standardní distribuce PHP od verze 4.3.0 Instalace jednotlivých komponent pear install <package> př. pear install HTTP_Upload seznam dostupných balíčků: pear remote-list instalace z lokálního souboru pear install soubor.tgz 5

QuickForm HTML_QucickForm Sada tříd pro obsluhu formulářů Validace Server Klient (JavaScript) Read-only Snadno konfigurovatelné Podpora pro Smarty... 6

Ukázka jednoduchý formulář 7

PHP QuickForm <? require_once('html/quickform.php'); $form = new HTML_QuickForm('frmTest', 'POST'); $form->addelement('header', 'MyHeader', 'Test QuickForm'); $form->addelement('text', 'MyTextBox', 'Jak se jmenujete?'); $form->addelement('reset', 'btnclear', 'Smazat'); $form->addelement('submit', 'btnsubmit', 'Odeslat'); $form->addrule('mytextbox', 'Jméno je povinné', 'required'); if ($form->validate()) { $form->process('process_data', false); # If the form validates then freeze the data $form->freeze(); } $form->display(); function process_data ($values) { echo "<pre>"; var_dump($values); echo "</pre>"; }?> 8 Vložení potřebné knihovny Založení formuláře Element textové pole Tlačítka Jméno je povinné Dopadla validace dobře? Ano: výsledek bude zobrazen jako prostý text Zavolá se po úspěšném ověření formuláře

PHP QuickForm Vytvářet elementy lze několika způsoby 1. pomocí metody addelement(typ,jméno, hodnota,další parametry) 2. pomocí metody HTML_QuickForm::createElement(typ) 3. přímo pomocí konstruktoru elemntu daného typu např new HTML_QuickForm_text( tb1, Text box x'); 9

Ukázka 10

<? require_once('html/quickform.php'); $form = new HTML_QuickForm('frmTest', 'POST'); $form->addelement('header', 'MyHeader', 'Test QuickForm'); // metoda 1 $form->addelement('text', 'MyTextBox', 'Jak se jmenujete?'); //metoda 2 $novy_element = & $form->createelement('text'); $novy_element->setname('mytextbox2'); $novy_element->setlabel('vaše příjmení?'); $form->addelement($novy_element); //metoda 3 include_once('html/quickform/text.php'); $dalsi_element = new HTML_QuickForm_text('MyTextBox3', 'Číslo konta?'); $form->addelement($dalsi_element); $form->display();?> 11

Zobrazování jednotlivých 12

Pravidla - rules Pravidla jsou aplikována při validaci formuláře Existující pravidla Vlastní pravidla $form->addelement('text', 'MyTextBox', 'Jak se jmenujete?'); $form->addrule('mytextbox', 'Jméno je povinné', 'required'); 13

Seznam zabudovaných pravidel Rule Name required maxlength minlength rangelength regex email emailorblank lettersonly alphanumeric numeric nopunctuation nonzero uploadedfile maxfilesize mimetype filename Argument $length $length $min,$max $rx $size $mime $file_rx Rule Description Some input is required in the field. The input can be at most $length characters. The input must be at least $length characters. The input must be between $min and $max characters (inclusive). The input must match the regular expression $rx. The input must be a likely syntactically valid e-mail address.* The input must be blank or satisfy the email rule. The input must contain only alphabetic characters. The input must contain only letters and numbers. The input must contain a valid positive or negative integer or decimal number. The input must not contain any of these characters: ( ). / * ^? #! @ $ % + =, " ' > < ~ [ ] { }. The input must not begin with zero. The element must contain a successfully uploaded file. The uploaded file must be no more than $size bytes. The uploaded file must have a MIME type of $mime. If $mime is an array of MIME types, the uploaded file must have a MIME type equal to one of the elements in $mime. The uploaded file must have a filename that matches the regular 14 expression $file_rx.

Příklad <? require_once('html/quickform.php'); $form = new HTML_QuickForm('frmTest', 'POST'); $form->addelement('text','subject','subjekt: '); // nejmene 5 znaku $form->addrule('subject','enter a valid subject','minlength',5); if ($form->validate()) { $form->freeze(); } $form->display();?> 15

Vlastní validační pravidla Lze vytváře vlastní pravidla pomocí metody registerrule() Vlastní pravidlo jsou dvou typů Regulární Callback 16

Ukázka callback pravidla <? function zacinaspravne($value) { if (empty($value)) { return false; } if (strlen($value) < 2) return false; if (substr($value,0,2) == "Ma") return true; else return false; } require_once('html/quickform.php'); $form = new HTML_QuickForm('frmTest', 'POST'); $form->registerrule('zacina_spravne','callback','zacinaspravne'); $form->addelement('text','subject','subjekt: '); $form->addelement('submit','send','odeslat'); $form->addrule('subject','subjekt musi zacina na Ma','zacina_spravne'); if ($form->validate()) { $form->freeze(); } $form->display();?> 17

Ukázka pravidla pomocí regulárního výrazu <? require_once('html/quickform.php'); $form = new HTML_QuickForm('frmTest', 'POST'); $form->addelement('text','subject','subjekt: '); $form->addelement('submit','send','odeslat'); $form->registerrule('zacina_spravne_reg','regex','/^ma*/'); $form->addrule('subject','subjekt musi zacina na Ma','zacina_spravne_reg'); if ($form->validate()) { $form->freeze(); } $form->display();?> 18

Group rule Pravidla lze sdružovat a aplikovat na celou skupinu formulářových polí příklad: jméno se sestává ze 3 částí, každá musí mít alespoň 2 znaky 19

Group rule - ukázka <? require_once('html/quickform.php'); $form = new HTML_QuickForm('frmTest', 'POST'); $group[] =& HTML_QuickForm::createElement('text','jmeno'); $group[] =& HTML_QuickForm::createElement('text','prijmeni'); $group[] =& HTML_QuickForm::createElement('text','titul'); $form->addgroup($group,'jmeno','vase jmeno:'); $form->addgrouprule('jmeno','vlozte jmeno, min 2 znaky','minlength',2); $form->addelement('submit','send','odeslat'); if ($form->validate()) { $form->freeze(); } $form->display();?> 20

Propojení se Smarty Jak se vlastně určuje rozložení formuláře? Bylo by možné toto rozložení ovlivnit? Když ovlivnit, tak jak pomocí Smarty? 21

Renderers Existuje řada rendererů Na základě objektového stromu formuláře tvoří datové struktury Default: HTML_QuickForm_Renderer_Default Můžeme: Použít jiný renderere Implementovat vlastní HTML_QuickForm_Renderer_ArraySmarty renderer speciálně pro Smarty datová struktura je pole 22

HTML_QuickForm_Renderer_ArraySmarty Myšlenka: Vytvořit pole, které se zarigistruje ve Smarty objektu. Toto pole bude obsahovat veškeré informace potřebné k vykreslení V rámci smarty šablony se pak budou zobrazovat jednotlivé prvky pole 23

Struktura pole array ( ['frozen'] => 'whether the complete form is frozen', ['javascript'] => 'javascript for client-side validation', ['attributes'] => 'attributes for <form> tag', ['hidden'] => 'html of all hidden elements', ['requirednote'] => 'note about the required elements', ['errors'] => Array ( ['1st_element_name'] => 'Error for the 1st element',... ['nth_element_name'] => 'Error for the nth element', ), ['header'] => Array ( ['1st_header_name'] => 'Header text for the 1st header',... ['nth_header_name'] => 'Header text for the nth header' ), ['1st_element_name'] => 'Array for the 1st element',... ['nth_element_name'] => Array for the nth element' ); 24

Struktura pole - elementy array( ['name'] => 'element name', ['value'] => 'element value', ['type'] => 'type of the element', ['frozen'] => 'whether element is frozen', ['label'] => 'label for the element', ['required'] => 'whether element is required', // if element is not a group: ['html'] => 'HTML for the element', // if element is a group: ['separator'] => 'separator for group elements', ['1st_gitem_name'] => 'Array for the 1st element in group',... ['nth_gitem_name'] => 'Array for the nth element in group' ); 25

Jak se to použije - PHP <? require_once("funkce.inc"); require_once("init_smarty.php"); require_once('html/quickform.php'); require_once 'HTML/QuickForm/Renderer/ArraySmarty.php'; $form = new HTML_QuickForm('frmTest', 'POST'); $form->addelement('text','subject','subjekt: '); $form->addelement('submit','send','odeslat'); $templatovaci_objekt = & new T_Template(); $renderer =& new HTML_QuickForm_Renderer_ArraySmarty($templatovaci_objekt, true); $form->accept($renderer); // assign array with form data $templatovaci_objekt->assign('form', $renderer->toarray()); // nech to zobrazit $templatovaci_objekt->display('index.tpl');?> 26

Jak se to použije - šablona <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows- 1250"> <title>pokusny formular</title> <body> <form {$form.attributes}> {$form.hidden} <div>toto je label: {$form.subject.label}</div> <div>toto je formularove pole: {$form.subject.html}</div> </form> </body> </html> 27

Děkujeme za pozornost