Publikováno Led 28 2009 autorem Petr Soukup

Povinná pole v objednávce

Navážu na předchozí článek o povinné registraci při nákupu v e-shopu a pokusím se vyvrátit další dogma. Zhruba každý druhý klient při implementaci šablony chce, aby se při odesílání objednávky zkontrolovala vyplněná pole – proč? – protože to viděl jinde.

Upozorňuji, že se zase budu věnovat jen situaci u menších eshopů – alza.cz a podobné giganty neřeším :)

Co se kontroluje?

Typicky jde o vyplněný email, správný formát telefonu, smysluplné jméno, … Zkrátka všechno co je z pohledu obchodníka relevantní. Jenže problémem je právě pohled obchodníka – programátor ani obchodník obvykle nedokáže vystihnout všechny možnosti, které mohou nastat.

Kdy povinná kontrola selže?

Máte v e-shopu kontrolu PSČ? Ukládáte ho jako integer? A přežije zadání slovenského PSČ, které obsahuje na začátku nulu?

Kontrolujete formát telefonu? Musí tedy zákazník telefon zadávat třikrát, než ho napíše dobře? A co když potřebuje zadat telefony dva?

Kontrola emailu vypadá asi nejjednodušeji. Existuje notoricky známý regulární výraz, který kontrolu zařídí. Ale počítá s emailem s diakritikou? A počítá s tím, že zákazník neumí napsat zavináč? Ano, takových je stále spousta. Spousta uživatelů seznamu si navíc myslí, že v emailu záleží na velkých a malých písmenech.

Zjišťujete regulární výrazem, zda je zadáno smysluplné jméno? A počítá výraz s tím, že někdo může mít jméno se třemi částmi? A čtyřmi?

Je mi jasné, že to co jsem vyjmenoval jsou spíš extrémy a na většinu by šlo vymyslet nějaké řešení, ale hlavní otázkou je proč.

Jak se to řeší?

Jak už jsem dříve zmínil, tak naši první cílovkou byly těhotné maminky. Požadavkem tedy bylo, aby objednávka byla extrémně uživatelsky přívětivá. Nějaký povinný formát telefonu tedy nepřipadá v úvahu. Přišlo tedy úplně jednoduché řešení – před odesláním objednávky se javascriptem zkontrolují zběžně zadané informace (ani ne na formát, ale spíš jestli tam vůbec něco je) a pokud něco nesedí, vyskočí:

chyba-kosik

Pokud tedy zákazník skutečně na něco zapomněl, tak řekne Storno a údaj doplní. Pokud však má důvod údaj vynechat, tak ho systém pustí dále.

Druhá pomůcka je spíše tri, než nějaké opatření. Vznikl úplně náhodou, ale výborně se osvědčil. Jednoduše jsme v adrese vytučnili telefon a email – to je zásadní údaj a pokud jiný chybí, tak se prostě zeptáme.

kosik-adresa

Opticky to působí dojmem, že pole je určitě povinné. Dokonce když jsem minule psal o povinné registraci a spousta z vás si to musela hned zkusit, tak jste bez výjimky tyto údaje všichni vyplnili, přestože to systém nijak nehlídá.

Jak to funguje?

Výborně. Nezasvěcený člověk si obvykle myslí, že se musí bránit falešným objednávkám tím, že zavede různé filtry. Jenže efekt je zcela opačný. Pokud údaje nefiltrujeme a zákazník má důvod něco nezadat, tak může.

Občas se třeba stane, že přijde prázdná objednávka (často ale se zmíněným emailem a telefonem) s jedním produktem a v poznámce má napsáno „Můžete mi to přidat k objednávce 54223? děkuji, Nováková„. Ano, tato situace by šla vyřešit editací objednávky, správou odeslaných objednávek a podobně. Ale není to takhle krásně jednoduché?

Není pravda, že do eshopů chodí často prázdné objednávky. Pokud přijde (a je to skutečně zanedbatelné množství) a třeba ji poslal zákazník, který si skutečně chtěl objednat zboží (ještě větší minimum), tak se dá očekávat, že pokud neměl dostatečné IQ na to, aby vyplnil adresu doručení, tak by nebyl schopen ani vyzvednutí zboží na poště.

Hlavně je ale potřeba i uvědomit, že pokud někdo třeba jen něco zkouší a pošle prázdnou objednávku, tak ji snadno poznáte a ignorujete. Pokud ho však donutíte, aby vyplnil všechna pole, jak potom zjistíte, jestli je pravá nebo ne?


12 komentářů k “Povinná pole v objednávce”

  1. Senyx
    20:52 on Leden 28th, 2009

    Připomnělo mi to, jak se David Grudl zmiňoval, že poté co odnastavil ulici v adrese jako povinnou (kvůli vesnicím) přestali mu ji uživatelé vyplňovat – a to i ti, kteří bydlí ve větších městech.
    Tvoje řešení pomocí „falešných“ povinných políček a upozornění je výborný.

  2. Ciman
    21:11 on Leden 28th, 2009

    Tohle je moooc hezké řešení. Osobně používám, co možná nejméně nutných polí k vyplnění a všude nechávám možnost vyplnit „cokoli“ krom, e-mailu, kde kontroluji správnost tvaru. Těch 5s editace záznamu pak v případě hloupého vyplnění nestojí za to přicházet o konvertované zákazníky. Ale tohle se mi moc líbí.

  3. Petr Soukup
    21:24 on Leden 28th, 2009

    Ciman: Přesně tak – pokud je něco nepřesně, tak si to prostě upravíme v adminu. Telefon máme třeba udělaný tak, že když systém pozná formát, tak ho upraví sám, jinak na to nehrabe.

  4. JustMe
    23:35 on Leden 28th, 2009

    Řeším teď něco podobného v katalogu. Nabízím placený zápis na zkušební dobu a nevím, zda v něm dát fakturační adresu jako povinnou. Dosud většina lidí nechává tohle pole volné, což mě trochu štve – pokud by to vyplnili, nemusel bych je potom otravovat se zadáním adresy telefonicky, když je budu kontaktovat ohledně prodloužení zápisu. Na druhou stranu nevím, jestli to lidi neodradí v registraci. Co si o tom myslíte?

  5. Petr Soukup
    23:42 on Leden 28th, 2009

    JustMe: Nemusel by ale být problém poslat jim emailem odkaz, kde údaje vyplnit až to bude aktuální, ne?

  6. Pyrates GH
    08:32 on Leden 29th, 2009

    Jj, s lidma je sranda, hlavne ty co maji seznam tak pri telefonim kontaktu, kdyz davaji email tak pozornuji, ze se to pise s VELKYMI pismeny :) Jinak lidi moc nepremysli u vyplnovani, u jednoho projektu, kterej jsem prebiral byla policka jmeno, adresa, email, mobil. Takeze registrece byly: Jan, Chrudim, cislo a spatnej mejl :)

  7. JustMe
    10:56 on Leden 29th, 2009

    To máš pravdu, díky za tip!

  8. sh
    18:52 on Leden 29th, 2009

    ^(\+420|\+421)? ?\d{3} ?\d{3} ?\d{3}$, toleruje to prakticky všechny české zvyklosti formátování telefonního číslo. Mimoto u polí techničtějšího typu fakt hodně pomůže uvést pod pole příklad správného zadání.

  9. Petr Soukup
    18:59 on Leden 29th, 2009

    A co dvě nuly? A co mezera za pluskem? A co bez pluska?

  10. sh
    20:05 on Leden 29th, 2009

    Jop to by šlo ještě vylepšit. Nicméně jde o to dostat funkční číslo než číslo v určitém formátu – ostatně špatných čísel mám v nekontrolovaném formu víc než čísel v mezinárodním formátu…

  11. Petr Soukup
    20:14 on Leden 29th, 2009

    sh: V článku mi šlo právě o to, že nelze postihnout všechny možnost.

  12. Medvídek
    13:49 on Květen 13th, 2009

    K registraci sice nic nemám, ale chtěl bych upozornit, že když se koukám na nějaké produkty a zadám filtr, tak se neprojeví v url. Čili nemam možnost odkázat :( Čili pokud chci vybrat pouze výrobce xxx v ceně do yy, tak tento výsledek nemužu nikomu poslat :(

Přidat komentář