Autor | Zpráva | ||
---|---|---|---|
mrkus Profil * |
#1 · Zasláno: 17. 7. 2011, 20:34:57
Ahoj, chci vytvořit více stránkový formulář. Našel jsem několik řešení. Každé řešení má své plusy i mínusy. Chtěl bych poradit, které je nejlepší nebo poradit ještě jiné řešení než zde uvedu.
1) skryté formulářové pole Na jednotlivých stránkách by byly textové pole, které již byly na předchozích stránkách vyplněny a měli nastaveno type="hidden", aby je běžný návštěvník v dalších krocích neviděl. A poté na poslední stránce bych vyhodnotil všechny pole. 2) ukládání do cookies Uživatel by vyplnil input. Pomocí javascriptu bych detekoval odejití z textového pole a dále bych pomocí javascriptu uložil hodnoty do cookies, ale tady je problém ten, co když bude mít uživatel cookies vyplé. Nechci ho nutit do zapínání cookies. 3) ukládání do session Bylo by to stejné jako u cookies, ale zase je tu problém, co když uživatel bude vyplňovat formulář na jedné stránce dlouho a session mu vyprší? Díky za vaše postřehy a nápady |
||
o_O Profil |
#2 · Zasláno: 17. 7. 2011, 20:38:28
Myslím, že první možnost je asi nejlepší.
|
||
mrkus Profil * |
#3 · Zasláno: 17. 7. 2011, 20:44:23
dobrý, ale co když budu mít na každé stránce nad formulářem navigaci s odkazi a bude možné se kdykoliv vrátit k jakémukoliv kroku. Pro tento případ by skryté inputy nešly použít nebo nad možností kdykoliv se vrátit kamkoliv neuvažovat?
|
||
o_O Profil |
#4 · Zasláno: 17. 7. 2011, 20:49:18
Chtějí-li vyplňovat formulář nebo navštěvovat stránku, budou to dělat odděleně. Viz. plaváčkovy použitelné formuláře, odstavec „Formulář je obrovský a děsně nepřehledný, čert aby se v tom vyznal“.
„- klidně ho rozdělte do několika stránek a ponechte uživateli možnost se na všech vyplněných stránkách volně pohybovat (znáte to - postačí tlačítko s názvem "předchozí" a "další", nic neřešitelného).“ |
||
mrkus Profil * |
#5 · Zasláno: 17. 7. 2011, 20:56:50
místo menu použiji tlačítka další a předchozí, ale jak toto pomocí sjrytých polí vyřešit? Napadá mě jediní a to, že bych na každé stránce musel mít všechny formulářová pole, které jsou na všech stránkách nebo jak udělat aby nedošlo ke ztracení dat když se vrátím zpět?
|
||
o_O Profil |
#6 · Zasláno: 17. 7. 2011, 21:22:21
Co takto si prostě do hidenn inputů vložit vše a na každé stránce?
<input type="hidden" name="jmeno" value="<?php if(isset($_POST['jmeno']))echo $_POST['jmeno']; ?>"> <input type="hidden" name="prijmeni" value="<?php if(isset($_POST['prijmeni']))echo $_POST['prijmeni']; ?>"> ... |
||
mrkus Profil * |
#7 · Zasláno: 17. 7. 2011, 21:24:43
no takže musím mít na každé stránce všechny pole které se nacházejí na všech stránkách formuláře ano?
|
||
Medvídek Profil |
#8 · Zasláno: 17. 7. 2011, 21:37:45
mrkus:
Já mam 8 "stránkový" formulář a každou sekci mam obalenou divem s id sekce. Pak tlačítka předchozí, další - ty jen javascriptem zobrazují a schovávají divy. Výhoda je, že mam celý formulář od začátku načtený a v některých sekcích si kopíruju hodnoty inputů z jiných sekcí (např mail). |
||
tatyalien Profil |
#9 · Zasláno: 17. 7. 2011, 21:58:26
Já ukládám do sessionu, nic neřešitelného, prostě když se vrátím na stránku co už vyplňoval, zobrazí se data pokud dá další má je prázdné... expirace u proměnné do zavření prohlížeče...
|
||
fruity Profil * |
#10 · Zasláno: 17. 7. 2011, 22:45:10
o_O:
Jeho řešení je nejlepší, ale použij spíš tohle <input type="hidden" name="jmeno" value="<?php echo $_POST['jmeno']; ?>"> |
||
o_O Profil |
#11 · Zasláno: 17. 7. 2011, 23:38:26
fruity:
„ale použij spíš tohle“ Ano ano, necháme si pěkně vypisovat errory, už vidím obsah inputu: Notice: Undefined index: jmeno in ... on line X Dalo by se to ještě přepsat na: <?php echo isset($_POST['jmeno']) ? $_POST['jmeno']:''; ?> což je o 4 znaky kratší. |
||
fruity Profil * |
#12 · Zasláno: 17. 7. 2011, 23:59:49
at si každý dělá podle svého já jsem pro volny co nejméně zatěžovat načítání :-) Vypnutím erroru se stěží něco vypíše :-)
|
||
o_O Profil |
#13 · Zasláno: 18. 7. 2011, 01:05:02
fruity:
„Vypnutím erroru se stěží něco vypíše“ Vypínání errorů je jasná věc, ovšem co takový error log? Určitě by jste nechtěl hledat určitý řádek v 30MB souboru. |
||
Časová prodleva: 13 let
|
0