![]() |
|||
|
|
|
Objednávkový minishop v PHP Začít něco prodávat pomocí své stránky můžeme
s minimem příprav téměř ihned. Jednou z možností je hromadit
objednávky v mailu a zboží rozesílat na dobírku. Tentokrát se
ale dobírce vyhneme tak, že necháme zákazníka zaplatit předem a zboží
mu doručíme poštou nebo jinak až po doručení platby na náš účet. Ušetříme
tím za vyšší poštovné, které je pro prodávání drobností omezující
položkou. Dobírce se sice vyhneme, ovšem z důvodu platby předem se tento systém hodí tam, kde máme určitou komunitu, která věří, že jim po zaplacení nepošleme zabalenou cihlu, nebo tam, kde třeba naši předchozí zákazníci dobře referují o naší službě. Prostě tam, kde o nás zákazníci alespoň něco vědí a důvěřují nám. Je to daň za laciné řešení, ovšem pokud máme například server pro chovatele králíků, kteří se pak většinou znají z našeho diskusního fóra, a chceme jim nabídnout k objednání hrníček s logem nebo tričko, je nejspíš zbytečné budovat robustní e-shop. Základem úspěšnosti našeho e-shopu je snadnost použití, žádné komplikované "Pokud si chcete objednat, napište na bla bla bla...". Tento obchod bude opravdu jednoduchý, a tak si vystačí i bez databáze. Objednávky nám budou chodit mailem a pokud s nimi nebudeme pracovat přímo v poštovním programu, ručně si je z poštovního programu přeneseme do nějaké zvláštní složky (například z Outlook Expressu je lze ukládat jako soubory *.eml nebo i *.txt).
Podívejte se na ukázkun objednávky zaslané e-mailem (údaje zákazníka jsou smyšlené): Tričko Králíci.cz
Objednal: Petr Plšek Adresa: Pampelišková 812, Pohořelice 691 23 Email: mailto:33333333@seznam.cz Počet kusů: 1 Cena: 289,- Kč Uvedenou částku zašlete na účet 152153154/0600 Variabilní symbol: 0210302104 Potreboval bych jej do 25.11.2002. Dekuji moc. Zasláno z e-shopu na http://www.kralici.cz/ V zaslaném e-mailu vidíme jak my, tak zákazník, jaké zboží si objednal, kolik kusů a kam má zboží zaplatit. Na konci je ještě vidět poznámka, kterou náš minishop umožňuje připojit. To je dostatečné pro uskutečnění obchodu. Zákazník ví, jak a kolik má zaplatit, my víme, komu po obdržení platby zboží poslat. Aby byla objednávka zboží opravdu snadná a neodrazovala zákazníka, připravíme si "chytrý" formulář, který bude sám počítat cenu podle počtu kusů, případně je možné zahrnout i nějaký algoritmus na počítání množstevní slevy. Zároveň doplníme kontrolu, zda jsou vyplněny všechny povinné údaje. Můžete se také podívat na ukázku simulace minishopu (odesílání mailu je zakomentováno, objednávka se pouze zobrazuje). Samozřejmě si můžete stáhnout i hotový zdrojový kód. <script
type="text/javascript">
<!-- function Recount(theform) { var celkcena = 0 var floop = true for( var i=1; floop; i++ ) { kusu = eval("theform.ks" + i ) if(kusu) { if( isNaN(parseInt(kusu.value)) ) { kusu.value = "" } else { kusu.value = parseInt(kusu.value) celkcena += (279 * kusu.value + 10) } } else { floop = false } } theform.cena.value = celkcena } function Validate(theForm) { for(var i=0; i<theForm.length; i++ ) { with(theForm.elements[i]) { if( type=="text" ) { if( value.length==0) { alert('Zadejte potřebné údaje!'); focus(); return false; } } } } return true; } // --> </script> <form method="POST" action="ordtshirt.php" name="tshirt" onsubmit="return Validate(this)"> Jméno a Příjmení: <input type="text" name="adr_name" size="40" /><br /> Adresa (ulice, město, psč):<br /> <input type="text" name="adr_loc" size="50" /><br /> počet triček <select name="ks1" onchange="Recount(this.form)"> <option value="1" selected>1 <option value="2">2 <option value="3">3 <option value="4">4 <option value="5">5 <option value="6">6 <option value="7">7 <option value="8">8 <option value="9">9 <option value="10">10 <option value="20">20 <option value="30">30 </select> cena <input type="text" id="cena" size="7" value="289" readonly> Kč velikost XL<br /> email: <input type="text" name="from" size="22"> <input type="checkbox" name="t_copy" value="1" checked>zaslat kopii<br /> poznámka:<br/ ><textarea name="commt" rows="4" cols="42"></textarea><br /> <input type="submit" value=" Objednat " /> <input type="submit" name="printord" value="Objednat a vytisknout" /> </form> <ul> <li>Platba (konečná cena včetně DPH a poštovného) se provádí po objednání na účet číslo <b>153154155/0600</b> (GECB).</li> <li>Po odeslání objednávky systém sdělí veškeré potřebné údaje pro zaplacení.</li> <li>Jako variabilní symbol použijte pouze číslo, které Vám náš obchod automaticky přidělí!</li> <li>Při objednání více triček je cena každého dalšího již jen 279,- Kč.</li> <li>V případě jakýchkoli nejasností napište na <a href="mailto:tshirts@kralici.cz">tshirts@kralici.cz</a>.</li> <li><b>Dodací lhůta je 14 dní od obdržení platby na účet.</b></li> <li><b>Vyplňujte prosím své údaje pečlivě, zejména adresu!</b></li> <li>Trička zasíláme prozatím pouze v rámci České republiky.</li> <li>Pokud byste chtěl(a) zaplatit a vyzvednout tričko osobně v Brně nebo Praze, napište to společně se svým telefonním číslem do poznámky - ozveme se Vám a domluvíme termín předání. Peníze pak není třeba zasílat.</li> </ul> Zákazník si může ve formuláři zvolit, zda chce zaslat kopii objednávky, ve výchozím stavu je tato volba zatržená. Objednání je možné dvěma tlačítky, při volbě druhým z nich se po objednání rovnou nabídne objednávka k vytištění. Na konci formuláře je ještě připojena nápověda, aby zákazník věděl, "do čeho jde". Pole formuláře jsou doplněny o VCard name, pokud má zákazník aktivní volbu autocomplete a má vyplněn svůj profil, budou se mu do políček nabízet údaje z jeho profilu. Odeslaný formulář nám zpracuje jednoduchý skript – v podstatě jen zformátuje zadané údaje do mailu a ten odešle, případně nabídne objednávku k vytištění. <h2>Tricko Králíci.cz
objednáno</h2>
<?php $cena=(279*$_POST['ks1'])+10; // vypočítat cenu $var_symb=date('ymdHi'); // vypočítat variabilní symbol function CZMail($to, $subjc, $text, $froma) { // funkce pro posílání e-mailu s češtinou $headers = "MIME-Version: 1.0\n". "Content-Type: text/plain; charset=\"iso-8859-2\"\n". "Content-Transfer-Encoding: none\n". "From: $froma\n". "Reply-To: $froma\n"; Mail($to, $subjc, $text, $headers); // poslat mail objednávky s potřebnými hlavičkami } $tord_body="Tricko Králíci.cz\n\nObjednal: ".$_POST['adr_name']."\nAdresa: ".$_POST['adr_loc']."\nEmail: ".$_POST['from']."\n\nPocet kusu: ".$_POST['ks1']." Cena: ".$_POST['cena'].",- Kc\n"; $tord_body.="Uvedenou cástku zašli na úcet 1521531254/0600\n"; $tord_body.="Variabilní symbol: $var_symb\n\n".$_POST['commt']."\n\n\nZasláno z e-shopu na http://www.kralici.cz/"; $where_mail="tshirts@kralici.cz"; // adresa pro příjem objednávek if ($_POST['t_copy']=="1") // zaslat kopii objednávky na mail zákazníka $where_mail.=" ".$_POST['from']; CZMail($where_mail, "Tricko Kralici.cz $var_symb", $tord_body, $_POST['from']); // připravit mail k odeslání // opsat objednávku na obrazovku echo "Objednal: ".$_POST['adr_name']." [".$_POST['from']."]<br />\n"; echo "Adresa: ".$_POST['adr_loc']."<br />\n"; echo "Počet kusů: ".$_POST['ks1']." Cena: $cena,- Kč<br />\n"; echo "<b>Var. symbol:</b> $var_symb<br /><br />\n"; if ($_POST¨['t_copy']=="1") echo "Kopie objednávky byla zaslána na Váš email<br />\n"; echo "<p><b><big>Zašlete uvedenou částku $cena,-Kč na úcet 152153154/0600 (GECB), jako variabilní symbol použijte $var_symb.</big></b></p>"; echo "<ul><li><b>Po obdržení platby bude nejdéle do 14 dnů objednané zboží zasláno na Vaši adresu.</b></li><li><b>Děkujeme za Váš nákup :)</b></li></ul>"; ?> <script type="text/javascript"> <!-- function printWindow() { // otevřít okno pro zobrazení objednávky k vytištění window.open('','print', 'toolbar=no,menubar=no,location=no,directories=no, scrollbars=yes,resizable=yes,status=yes,width=600,height=440'); } // --> </script> <!-- skrytý formulář pro tisk --> <form name="prt1" id="prt1" action="shop3.php" method="post" target="print" onsubmit="printWindow()"> <input type="hidden" id="adr_name" name="adr_name" value="<?php echo $_POST['adr_name'] ?>" /> <input type="hidden" id="adr_loc" name="adr_loc" value="<?php echo $_POST['adr_loc'] ?>" /> <input type="hidden" id="from" name="from" value="<?php echo $_POST['from'] ?>" /> <input type="hidden" id="ks1" name="ks1" value="<?php echo $_POST['ks1'] ?>" /> <input type="hidden" id="cena" name="cena" value="<?php echo $cena ?>" /> <input type="hidden" id="var_symb" name="var_symb" value="<?php echo $var_symb ?>" /> <input type="hidden" id="commt" name="commt" value="<?php echo $_POST['commt'] ?>" /> <input type="submit" value="Tisk objednávky" /> </form> <?php if (isset($_POST['printord'])) { ?> <script type="text/javascript"> <!-- printWindow(); self.document.forms.prt1.submit(); // vyvolá odeslání formuláře s údaji pro tisk // --> </script> <?php } ?> Skript vypočítá cenu (podle počtu kusů) a určí variabilní symbol, který je vytvořen jako aktuální datum a čas. Dále je připraven e-mail objednávky k odeslání. Pokud zákazník ponechal zatrženo odesílání kopie na svůj e-mail, je jeho adresa přidána k adrese, na kterou se následně e-mail pošle. K odeslání je použita funkce, která nastaví správné hlavičky, aby bylo vše doručeno správně česky. Po odeslání e-mailu následuje opsání objednávky na obrazovku. Na konci skriptu je potom formulář se skrytými položkami, který nám podrží informace objednávky pro předání do dalšího okna, které je určeno pro tisk objednávky. Tisk může zákazník vyvolat kdykoli stiskem tlačítka ve formuláři. Pokud kliknul ve formuláři objednávky na "Objednat a vytisknout", pak se formulář odešle sám, čímž rovnou vyskočí nové okno pro tisk. Toto okno pro tisk se otevírá dopředu ještě před odesláním formuláře JavaScriptem, aby bylo možné nastavit vlastnosti (velikost a potlačení menu a adresního řádku prohlížeče). Posledním doplňkem je už jen krátký skript, který zobrazí objednávku pro tisk a je-li to možné, přímo vyvolá dialog pro tisk: <h2><b>Objednávka
zboží</b></h2>
<p> <table width="500" border="1" cellpadding="5" cellspacing="0" bordercolor="#000000"> <tr> <td align="right" nowrap><b><i>Objednal</i></b></td> <td><?php echo $_POST['adr_name'] ?> [<?php echo $_POST['from'] ?>]</td> </tr> <tr> <td align="right" nowrap><b><i>Adresa</i></b></td> <td><?php echo $_POST['adr_loc'] ?></td> </tr> <tr> <td align="right" nowrap><b><i>Kusů</i></b></td> <td><?php echo $_POST['ks1'] ?></td> </tr> <tr> <td align="right" nowrap><b><i>Cena</i></b></td> <td><?php echo $_POST['cena'] ?></td> </tr> <tr> <td align="right" nowrap><b><i>Var. symbol</i></b></td> <td><?php echo $_POST['var_symb'] ?></td> </tr> <tr> <td align="right" valign="top" nowrap><b><i>Poznámka</i></b></td> <td><?php echo $_POST['commt'] ?></td> </tr> <tr> <td colspan="2"> <ul> <li><b>Po obdržení platby bude nejdéle do 14 dnů objednané zboží zasláno na Vaši adresu</b></li> </ul> </td> </tr> </table> <ul> <li>Zašlete uvedenou částku <?php echo $_POST['cena'] ?>,-Kč na účet 152153154/0600 (GECB), jako variabilní symbol použijte <?php echo $_POST['var_symb'] ?></li> <li>Děkujeme za Váš nákup :)</li> </ul> <script type="text/javascript"> <!-- window.focus() if (window.print) window.print() else alert('Pro vytisknutí stiskněte CTRL-P!') // --> </script> Pro skutečné nasazení je potřeba si pozměnit všechny vyznačené údaje. Hodilo by se je mít přednastavené v nějaké proměnné, což jsem pro přehlednost a názornost vynechal. Je zřejmé, že se tento princip nehodí pro obchod s desítkami položek zboží. Pro několik druhů zboží si však skripty lehce upravíme a můžeme mít jednoduchý e-shop prakticky zdarma i na freehostingu. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| © Zoner software, s.r.o., všechna práva vyhrazena, tento server dodržuje právní předpisy o ochraně osobních údajů. |