phpFormGenerator: naklikejte si webové formuláře v PHP

Tvoříte webové stránky a nechce se vám zdržovat s tak nudnou záležitostí, jako je vytvoření webového formuláře? Není divu, koho by bavilo donekonečna vypisovat nebo kopírovat skoro stejné části kódu. Je tu však možnost celý formulář naklikat, a to včetně vzhledu.

Pokud tvoříte stránku s webovým formulářem, vřele doporučuji použít nějaký vizuální editor, například Microsoft Expression Web nebo Adobe Dreamweaver. Webové formuláře si však můžete nechat vytvořit i pomocí speciálních online aplikací. Přiznám se, že jich moc neznám. Před rokem jsem psal o pForm, jejíž nevýhodou byla nutnost zaplatit poplatek v případě, že jste k formuláři chtěli doplnit i funkcionalitu, jako je třeba odeslání dat na e-mailovou adresu.

Dnes vám představím phpFormGenerator. I tento online nástroj dovede vytvářet webové formuláře. Co je však příjemné, umí vygenerovat i potřebný programový kód, takže vám stačí jen formulář vzít a umístit jej někde na webu. Podle toho, jak si naklikáte jeho vlastnosti, mohou být data z formuláře ukládána někam do databáze nebo odesílána na vaši e-mailovou adresu.

Tvorba webového formuláře pomocí phpFormGenerator

Tvorba webového formuláře pomocí phpFormGenerator

Jak vytvořit webový formulář?

Na úvodní stránce nástroje phpFormGenerator klepněte na odkaz Create a form. Vyberte si z celé řady existujících předloh, nebo zadejte nový název formuláře do políčka Form name a klepněte na tlačítko Start.

Nyní se pusťte do úprav formuláře. Tlačítkem se zápisníkem si zobrazte editaci popisku formuláře, vyplňte text, klepněte na tlačítko Update a po informaci o tom, že byl formulář aktualizován, pokračujte tlačítkem Continue.

Předtím, než přidáte políčka do formuláře, klepněte na tlačítko Add a page a přidejte stránku. Teprve po klepnutí na ni se zobrazí samotný vzhled formuláře. V nabídce nalevo si vyberte jednotlivá formulářová políčka, klepnutím je vložte do formuláře a nastavte jejich vlastnosti. Úpravu potvrďte tlačítkem Click here when done.

Po dokončení úprav políček se vraťte na začátek odkazem Form home. V sekci Delivery settings vyberte způsob ukládání dat z formuláře. Stačí-li vám jejich odeslání na e-mail, pak jej vyberte z nabídky a vpravo zadejte adresu, kam bude obsah formuláře doručen.

Tvorba webového formuláře pomocí phpFormGenerator

Tvorba webového formuláře pomocí phpFormGenerator

Dále se rozhodněte, zda má formulář obsahovat captchu - ochranu proti spamu. Nastavte případné hlášení zobrazené po odeslání formuláře, a adresu, kam může být uživatel přesměrován. Poslední částí je úprava vzhledu formuláře - opět stačí naklikat pomocí barevné palety, pod kterou je náhled na ukázkový formulář.

Jakmile máte formulář dokončen, posuňte se úplně na konec stránky a stáhněte jej do počítače odkazem Zip file. Nyní už jen stačí, abyste si jej přizpůsobili pro svou aplikaci nebo jej tak, jak je, zkopírovali někam na web.

Povedená pomůcka pro tvorbu formulářů

Musím říct, že phpFormGenerator je v současné verzi (3.0 beta) velmi povedená pomůcka pro tvorbu webových formulářů obsluhovaných pomocí PHP. Ve staženém balíčku najdete kromě PHP a HTML souborů i kaskádové styly, obrázky s doplňující grafikou, JavaScriptové soubory pro případné kalendáříky ve formuláři a dokonce i TTF soubor s použitým písmem.

Plusem je samozřejmě i to, že phpFormGenerator je úplně zdarma. Využijete jej?

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

návštěvník

Zdravím, docela by mne zajímalo, jestli se formulář generovaný tímto programem dá použít v Drupalu. Nejsem zkušená a zatím jsem ještě v Drupalu formulář nevytvářela a popravdě to ani neumím. Proto mne zaujala tato forma. Zkusmo jsem si vyrobila formulář a teď nevím jak ho mám dát do Drupalu. Má to na mne až moc všelijakých složek a stránek a hlavně samej javascript. Nemohl byste prosím Vás napsat návod pro ty lamy jako jsem já? Děkuji. :) l.lenek

návštěvník

Blbost, proč bych to dělala tak složitě. Zkusila jsem webform a mám formulář hotový. Omlouvám se za tak hloupý dotaz. :)
l.lenek

návštěvník

To je dobrý nápad, určitě byste potěšil mnoho lidí. A mne taky protože je tam pár podivností které nechápu. Ale jak jsem Vás měla možnost poznat budete určitě používat i modul Wiews a to je mi teď momentálně k ničemu. Pokud můžu poprosit, kdybyste mohl udělat video i jen na samotný modul webform. :) Děkuji. l.lenek

návštěvník

jak je to s češtinou v příchozím emailu ???
pomůcka je o dobrá, avšak nevím si rady s češtinou

Profile picture for user Jan Polzer

Zkoušel jsem to, e-mail s češtinou dorazí nepoškozený. Ale můžete jej zkusit přinutit, aby byl odeslán v UTF-8.

Najděte si soubor processor.php, kde by měla být funkce pro zpracování formuláře pro odeslání do e-mailu. Čili funkce mail(), její konec je:

 powered by phpFormGenerator.
");

Před začátek funkce doplňte:

$headers = "Content-type: text/plain; charset=utf-8\n";
$headers .= 'From:nejakyodesilatel@email.cz'; //toto není nutné

A na konec funkce mail(), tj. mezi závorku a uvozovky, doplňte toto:

$headers

Čili výsledek v souboru processor.php bude například takovýto:

<?php

$where_form_is="http://".$_SERVER['SERVER_NAME'].strrev(strstr(strrev($_SERVER['PHP_SELF']),"/"));

$headers = "Content-type: text/plain; charset=utf-8\n";

mail("jan.polzer@maxiorel.cz","phpFormGenerator - Form submission","Form data:

         username: " . $_POST['field_1'] . "

 powered by phpFormGenerator.
", $headers);

include("confirm.html");

?>

návštěvník

Super - tak to je přesně to co jsem potřeboval.
Už to fungje jak má ;)
Mnohokráte děkuji za rychlou a dobrou pomoc.
Vítek

návštěvník

Dobrý den, mam podobný problém: V první fázi bylo v příchozím mailu místo diakritiky jen spousta otazníků. Po doplnění $headers = "Content-type: text/plain; charset=utf-8\n"; do proccesor.php již zmizeli otazníky ale stále se špatně zobrazují vybrané položky z formuláře.

Příklad v první fázi:
Barevnost dokumentu a zp?sob tisku : plnobarevn?? oboustrann?? tisk (4/4)

Příklad aktuálně: Barevnost dokumentu a způsob tisku : Ä�ernobĂ­lĂ˝ jednostrannĂ˝ tisk (1/0)

Nevím jak ještě doplnit proccesor.php aby se vše zobrazovalo opravdu dobře.

Děkuji za rady jak na to.

Profile picture for user Jan Polzer

Já bych zkusil ověřit, že všechny soubory (tedy formuláře i to php) jsou také v kódování UTF-8. Případně bych je přes PSPad přeuložil v tomto kódování.

návštěvník

dobrý večer,
řeším podobný problém s češtinou

hází mi to následující patvary:
JmĂŠno:: s
Příjmení:: s
Ulice::
Město/PSČ::
Telefon (nutnĂŠ):: s
Doba, kdy jste na telefonu k zastiĹženĂ­::
Email::
Field question 1: 20
Věk::
Výťka::

zkusila jsem dle vašich rad přidat do php příslušné úpravy, ale problem jsem neodstranila

mohu poslat soubor php k nahlednuti, kde delam chybu?
dekuji
M.Jiruskova

návštěvník

lze k tomuto formuláři dodělat funkci zpětného emailu
myslím, aby se formulář odeslal i tomu kdo ho vyplnil (na základě vložení jeho adresy do formu)

Profile picture for user Jan Polzer

Jasně. Stačí vzít tu funkci mail, zkopírovat ji tam, aby byla dvakrát. Jednu necháte v původní podobě, ve druhé upravíte adresáta. Takže pro příklad, který jsem uvedl výše, by zduplikovaná funkce vypadala nějak takto:

mail($_POST['field_2'],"Potvrzení formuláře","Form data:

         username: " . $_POST['field_1'] . "

 powered by phpFormGenerator.
", $headers);

Předpokládá to, že e-mail člověka je vyplněn ve druhém políčku formuláře.

návštěvník

Dobrý den, zkusil jsem funkci: mail($_POST['field_2'], vložit do processor.php a funguje.Samostatná pevně nastavená email adresa funguje také (např.mujemail@seznam.cz). Bohužel, ale funkce: mail($_POST['field_2'], nefunguje v kombinaci s pevně nastavenou email adresou k zasílání viz.níže např:

<?php
$where_form_is="http://".$_SERVER['SERVER_NAME'].strrev(strstr(strrev($_SERVER['PHP_SELF']),"/"));
$headers = "Content-type: text/plain; charset=utf-8\n";
mail("vinyl2006@seznam.cz",mail($_POST['field_2'],"Potvrzení formuláře","poptavkovy formular - vinyly.ic.cz","Form data:
username: " . $_POST['field_1'] . " Email: " . $_POST['field_2'] . " Telefon: " . $_POST['field_3'] . " Země: " . $_POST['field_4'] . " Zpráva: " . $_POST['field_5'] . " Jaký je rok?

(Pište číslo): " . $_POST['field_6'] . "mail($_POST['field_2'],"Potvrzení formuláře","Form data: username: " . $_POST['field_1'] . "
powered by phpFormGenerator.
", $headers);
include("confirm.html");
?>

Zkoušel jsem kombinace se středníkem, uvozovkami,měnit pořadí apod., ale bohužel nepomohlo. Díky za reakci předem.

Profile picture for user Jan Polzer

Dobrý den. To je překlep nebo úmysl? Máte funkci mail() zanořenou v jiné mail(). To nemůže fungovat.

návštěvník

Dobrý den pane Polzer,

díky za odpověd.Zkoušel jsem viz.níže a nefunguje:
Navíc ještě spoustu dalších kombinací, ale nic.

mail("mujemail@seznam.cz","poptavkovy formular - neco.ic.cz");
mail($_POST['field_2'],"poptavkovy formular - neco.ic.cz");"Form data:

Můžu požádat o celý funkční processor.php kód generující zasílání na pevnou i proměnnou adresu současně?Díky předem.

-----------
Níže uvedený je 100 % funkční!!
Zasílá jen bud na pevnou adresu nebo proměnnou-pokud zadám. Nezasílá na obě současně.Uvádím protože v předchozích příspěvcích byly v kodu chyby.

<?php
$where_form_is="http://".$_SERVER['SERVER_NAME'].strrev(strstr(strrev($_SERVER['PHP_SELF']),"/"));
$headers = "Content-type: text/plain; charset=utf-8\n";
mail("mujemail@seznam.cz","poptavkovy formular - zaslano z neco.ic.cz","Form data:
username: " . $_POST['field_1'] . " Email: " . $_POST['field_2'] . " Telefon: " . $_POST['field_3'] . " Země: " . $_POST['field_4'] . " Zpráva: " . $_POST['field_5'] . " Jaký je rok? (Pište číslo): " . $_POST['field_6'] . "
powered by phpFormGenerator.
", $headers);
include("confirm.html");
?>

Profile picture for user Jan Polzer

Dejte mi se prosím celý vygenerovaný formulář i s těmtio úpravami. Nechce se mi to celé naklikávat. Stáhnu si to, testuju, vyzkouším, odpovím.

návštěvník

Odesláno na Váš email.Díky.

návštěvník

Dobrý den, nevím co dělám špatně, ale vytvořený formulář mi na email nedorazí. Zkoušel jsem seznam a gmail. Ani na jeden nic nepřišlo. Vše vyplním správně, po kliknutí na "Submit" se mi zobrazí potvrzující stránka, ale v emailu nic. Tak nevím. S php začínám, tak se omlouvám jestli to bude nějaká banalita.
Předem děkuji za odpověď.

návštěvník

Děkuji mnohokrát za Vaši bleskovou odpověď. Již jsem to vyřešil, bylo to v poskytovateli hostingu. Používal jsem PHP5.cz a odtud se mi to nedařilo. Teď už je vše OK.

návštěvník

Prosím o radu
Chtěl bych udělat formulář který bude mít cca 3 rozbalovací nabídky, které spolu budou propojené.
Jako výchozí je možno vybírat z první nabídky a další dvě jsou zašedlé.
Až vyberu první, načtou se mi v závislosti na výběru v první nabídce data do druhé nabídky a po výběru druhé se mi načte poslední rozbalovací nabídka.
Data se budou v následující nabídce vždy měnit v závislosti na té předchozí.
Je na to nějaký lehký fígl, či je potřeba do skriptu hodně zasahovat.
Popř. Nebyl by někde příklad ke stažení.
Děkuji

Profile picture for user Jan Polzer

Asi bych to řešil JavaScriptem, ale zda to jde naklikat, netuším a bohužel ani nemám čas to více zkoumat.

návštěvník

Dobrý den, díky za supertip na tvorbu formulářů. Chci se zeptat, zda je možné názvy polí vkládat i s diakritikou. Když jsem to udělal, tak mi FormGenerator české znaky zmršil ..... Díky za odpověd.

návštěvník

Tak tento problém vyřešen. Měl jsem na stránce špatné kódování. Je tu ještě jeno ale ......Vyplněná pole formuláře mi do mailu příjdou se správnou diakritikou, ale názvy polí se mi v emailu zobrazují s paznaky ....
Příklad:
Form data:

Jm??no a p????jmen??: Pepa Nováček
Datum narozen??: 15.08.2008

nevíte kde bych mohl mít chybu?
Díky

Profile picture for user Jan Polzer

Otevřete všechny soubory v PSPadu a uložte je s kódováním UTF-8. Pak do souboru pro odesílání dat z formuláře doplňte hlavičku mailu pro zpracování znaků do kódování UTF-8. Viz můj komentář z června o něco výše.

návštěvník

lidi prosim vas kdyz mam hotovej dormular a stahnu si ho a mam tam asi 11 souvoru vc. slozek tak jak to dam pres ftp na wz.cz??? nevim co mam naopsat do index.html :D:D aby mi to oteviralo ty slozky soubory....

návštěvník

Dobrý den, můžete mi poradit jak upravit php kód, aby příjemci se zobrazoval v kolonce "od" email odesílatele - aby bylo možné hned odpověďět, děkuji.

Profile picture for user Jan Polzer

Dobrý den. Ve formuláři vytvořte políčko, do kterého dotyčný uvede svůj e-mail. Dejme tomu, že se políčko bude jmenovat "odesilatel". Pak si kód upravte tak, aby tam bylo

$headers .= 'From:'.$_POST['odesilatel'];

Viz výše.

návštěvník

Ano, to je ono, děkuji za Váš čas.

návštěvník

Dobrý den, mám dotaz formulář už mám vytvořený i vložený do svých stránek. Po nahrání na web mi formulář dojde na email vpohodě, ale problém nastává v odeslaní se mi objeví okno že formulář byl odeslán a pro návrat klikni na odkaz.Bohužel se mi nedaří odkázat se zpět na stránky.Můžete mi prosím poradit co s tím.Díky

návštěvník

Myslíte toto?

Nejsem si jistý zda máte na mysli toto.Dál bych měl ještě jeden dotaz. Při vytváření formuláře sem si zadal že chci aby před odesláním formuláře musel dotyčný zadat bezpečnostní kod proti spamu.Při nahrání na web se mi nezobrazí obrázek s kodem. Měl jsem je na webu webzdarma a tam to funguje, ale když jsem je nahrál na ic.cz kod se nezobrazí.Díky za rady

návštěvník

Dobrý den prosím o radu, po odkliknutí tl. Submit se mi zobrazí info, že stránku nelze zobrazit. Je potřeba nastavovat nějaké servry smptp hesla apod?

návštěvník

Sorry, mám naprd. hosting který nepodporuje php :-( Mě nenapadlo že u placeného hostingu nebude podpora php

návštěvník

Zdravím, chtěl jsem se zeptat. Vytvořil jsem si pomocí toho generátoru formulář, který má více stránek a potřeboval bych do něj umístit zpětné tlačítko. Je to možné? Díky za odpověď.

návštěvník

Dobré odpoledne, pane Polzere, prosim vás, bude fungovat generovaný formulář na serveru s windows?

Dostala jsem od serveru tuto odpověď:

 

The page cannot be displayed

The page you are looking for cannot be displayed because an invalid method (HTTP verb) was used to attempt access.

Please try the following:

  • Contact the Web site administrator if you believe that this request should be allowed.
  • Make sure that the Web site address displayed in the address bar of your browser is spelled and formatted correctly.

HTTP Error 405 - The HTTP verb used to access this page is not allowed.
Internet Information Services (IIS)

Technical Information (for support personnel)

  • Go to Microsoft Product Support Services and perform a title search for the words HTTP and 405.
  • Open IIS Help, which is accessible in IIS Manager (inetmgr), and search for topics titled Setting Application Mappings, Securing Your Site with Web Site Permissions, and About Custom Error Messages.

 

 

Děkuji za případnou pomoc.

Profile picture for user Jan Polzer

Měl by bez problémů. Popsaná chyba vypadá na nějaký problém s nastavením IIS.

návštěvník

Dobrý den,

 

chtěl jsem zvolit nahrávání souborů a prohlížeč mi odpověděl toto:

 

Warning: move_uploaded_file(./files/file_10_21320219082010.cdr) [function.move-uploaded-file]: failed to open stream: Permission denied in /DISK3/WWW/vyroba-razitek.eu/www/eshop/processor.php on line 13

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/DISK2/TMP/phpWtLegQ' to './files/file_10_21320219082010.cdr' in /DISK3/WWW/vyroba-razitek.eu/www/eshop/processor.php on line 13
File razĂ­tka.cdr was not uploaded.

 

Nevíte, co s tím?

 

Děkuji za odpověď

návštěvník

Dobrý den,

 

chtěl jsem zvolit nahrávání souborů a prohlížeč mi odpověděl toto:

 

Warning: move_uploaded_file(./files/file_10_21320219082010.cdr) [function.move-uploaded-file]: failed to open stream: Permission denied in /DISK3/WWW/vyroba-razitek.eu/www/eshop/processor.php on line 13

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/DISK2/TMP/phpWtLegQ' to './files/file_10_21320219082010.cdr' in /DISK3/WWW/vyroba-razitek.eu/www/eshop/processor.php on line 13
File razĂ­tka.cdr was not uploaded.

 

Nevíte, co s tím?

 

Děkuji za odpověď

Profile picture for user Jan Polzer

Dobrý den, to vypadá na problém se zápisem do složek na serveru. Zkuste jim přes FTP klienta dát chmod 777.

návštěvník

Děkuji za radu a mám ještě jeden dotaz...

 

Všechno běží s češtinou v pohodě. jen když dám odeslat objednáku, stránka confirm.html háže různé klikyháky i když jsem zkoušel dát všechny kódování.

Nesetkali jste se s tím už? Díky za odpověď.

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru