Potrebujete niekedy vytvoriť rýchlo formulár alebo webstránku a ovládate len základné veci v php, ale zato ovládaťe html/javascript ? potom je tento článok práve pre vás. A keď nie, tak sa môžete inšpirovať.
Ako som k tomu prišiel
Je tomu už vyše roka, čo som potreboval spraviť html tabuľku, z pokročilým formátovaním. Kedže vtedy bol css3 ešte v plienkach, spravil som si script ktorý mi generoval multi dimenzionálnu tabuľku v php, ktorej prvky som si mohol prechádzať cez smyčku.
Keď som to vyskúšal, bol som sám veľmi prekvapený. Maximálne jednoduché použitie, a pritom tak dokonalé. Jednoducho som len použil
$table = new Table(5,5);
$table[3][3]="obsah 3. bunky 3. riadka";
echo $table;
a už asi tušíte, že na výsledku som mal tabuľku, z textom v 3. bunke tretieho riadku.
Asi si viete predstaviť, ako by to vyzeralo v čistom php. Vtedy ma čosi trklo, a vravím si, že by mohlo byť super, keby som takto mohol spraviť čokoľvek.
Po 4 či piatich dňoch som mal hrubý skript hotový. Nebol to úplne tak hrubý skript. Keď totiž niečo robím, robím to hneď poriadne. A tak v hrubom scripte bola implementovaná w3c špecifikácia hlavných HTML5 prvkov.
Vedel som už v tedy, že skripty nebudú prekvapovať rýchlosťou. Robil som to ako pokus zo zameraním na malé a stredné projekty.
Časom som sa pokúšal na týchto sctiptoch vytvoriť jeden redakčný systém, popri ktorom som dopĺňal w3c definíciu, a doplnil skripty o ďaľšie zaujímavé vecičky. Web som nedokončil, skripty zapadli prachom, aby som ich mohol znova oprášiť po vyše roku z chladnou hlavou.
V práci som mal vytvoriť formulár v Exeli pre výročnú správu. Kódovať makra v exeli sa mi moc nechcelo, a tak som siahol po tomto mojom mini frameworku. Zistil som to, čo som už dávno vedel. Práca v ňom je naozaj lahoda. Poďme si to teda predstaviť.
Niečo do úvodu
Kedže je dodržaná w3c definícia, použitie je úplne rovnaké ako v javascripte, z niekoľkými pridanými hodnotami.
Vytvorenie tabuľky
Jednoduchá ukážka tabuľky. Tabuľka má hlavičku, telo, petu, 3 stĺpec má nastavený styl pre zmenu farby, a po najetí kurzorom na riadok sa zmení farba. Aby to nebolo až tak jednoduché, pridáme ešte spojenie buniek. Nakoniec si to ešte môžeme zabaliť do divu, a ten zobraziť.
$table = new Table(6,6);
$table->createCaption()->innerHTML = "hlavicka tabulky"
$table[3]->onmouseover="this.bgColor = white ";
$table[3]->onmouseout="this.bgColor = ";
foreach ($table as $row){
$row[3]->class="tretiStlpec";
}
$table[3]->createTFoot()->style="border 1px solid red";
$table[4]->colspan = 5;
$div = new Div();
$div->innerHTML = $table;
echo $div;
Formuláre
Z formulárami bol vždy problém v php. je treba ich vytvoriť, skontrolovať či boli odoslané, ak áno, tak či boli správne vyplnené, treba skontrolovať či ich užívateľ nepozmenil, či niektorý prvok nechýba, či sa v prvkoch nenachádza nebezpečný kód, a v neposlednom rade ak bol formulár špatne odoslaný, treba ho vyplniť odoslanými hodnotami, a chybne vyplnené položky zvýrazniť. Vždy sa mi hlava zatočila, keď som si na to len pomyslel. A vám nie ?
Keď vytváram niečo, tak sa nezamýšľam nad tým, ako to spraviť. Najskôr si napíšem príklad použitia. Proste si napíšem syntax, ako by som to chcel používať, aby ma to nebolelo. Keď mám toto dané, potom už rozmýšľam nad tým, ako to zrealizovať. Neviem ako vy, ale ja som si prvú šablónu spravil asi takúto.
$form = new Form();
$inputName = new Input("text", "required" );
$inputEmail= new Input( "text" , "required" , "email" );
$inputPass = new Input( "pasword" , "required" ),
$submit = new Input( "submit" );
$submit->value="odoslat";
$form->innerHTML = array($inputName , $inputEmail, $inputPass, $submit );
if ($form->is_submited){
if ($form->is_valid){
echo "uspesne odoslane
";
echo "udaje budu odoslane na email :".$inputEmail->value;
}else{
echo "chybne polozky"
foreach ($form->noValidElements as $element){
$element->style="border 1px solid red";
}
$inputPass->value= "" ;
echo $form;
}
}else{
echo $form;
}
A v podstate to tak aj ostalo, z menšími vylepšeniami. Jednoduchšie použitie ma už nenapadlo. Aj keď by sa to na prvý pohľad nemuselo zdať, tento formulár je plne dôveryhodný a splňuje úplne všetko čo sme si pred chvíľou popísali. Email sa automaticky validuje. Schválne, trklo vás že som nevyplňoval žiadne názvy inputov ? Malinký detail, ale ušetrí kopu práce. Pokiaľ je vo folmulári niejaká chybne vyplnená položka, formulár mi to oznámi, a ešte mi povie ktorá presne to bola. Odoslané hodnoty sú uložené v inputoch, tam kde majú byť. Bez toho, aby ste museli čokoľvek spraviť.
Samozrejme je možné si jednoducho vytvoriť vlastné nové validácie rôznych typov. Keď napríklad nastavíte inputu, že je typu int, tak si môžete byť istý, že dostanete int.
Samozrejme že inputy nemusíte dávať len do formuláru. môžu byť umiestnené v tabuľke a tá tabuľka v formulári. A dokonca nemusia byť vôbec vo formulári, a aj tak budú pracovať tak ako treba. Na stránke môžete mať formulárov viacej, v každom môžete mať mnoho odosielacích tlačidiel.
Záver
Tento môj mini framework nebol tvorený na niejaké veľké projekty. Nebol určený ani len pre verejnosť. Je plne funkčný, obsahuje mnoho ďalších vecičiek. Napríklad automatické ukadanie do databáze, automatické prihlasovanie, automatické redirectovanie, pekné url adresy a daľšie. Ale to hádam niekedy nabudúce.
Úplne starú verziu je možné nájisť na úplne starej stránke, o ktorú nemal bohužial nikto záujem, a tak som sa jej už nevenoval. https://sites.google.com/site/phpsimplesandbox/
Novú, mnohonásobne obsiahlejšiu knižnicu si musíte zaslúžiť. Komentujte, líbejte a hlavne presvedčte ma, že o to máte záujem.
A na koniec som pripravil prezentačné video
Musíte mi odpustiť trocha preklepov a bugou. Používal som to po roku a nie všetko som si pametal.
http://youtu.be/pER9nQj1UFM?hd=1
Komentáře
Přidat nový
Pro přispívání musíte být přihlášen



