[sr] Online prodavnica - kroki

Ovo bi bila kratka skica – plan ili ono što neki vole da zovu To Do List, kako početi sa razvojem jedne online prodavnice. Naravno, sve je ovo uprošćeno, čisto da poslu�i kao podetnik. Nije valjda neko očekivao da ću da stavim kompletan kod ovde :)

From the scratch:

  • Napravis jedan config.php koji include-ujes svuda. Unutra ti je access za sql is sve ostalo sto ti treba za funkcionisanje.
  • Napravis jednu mysql klasu koja izvrsava querije i vraca array (ako ima sta da se vrati) + dodas funkcije last_insert_id(), num_rows… sa implementacijom kontrole greske i ispisivanjem iste. Ovoga već ima na webu, ako vas mrzi da pravite sami – mo�ete da pronađete mysql klase. Međutim, nepoverenje ili trvdoglavost, ja ipak volim sve sam da napišem.
  • Imaš tabelu sa proizvodima, koja je linkovana sa kategorijama. Ako su komplikovaniji proizvodi mozes dodati i product_details tablelu. 3 tabele sa sve klasom za upis / brisanje / listanje… Kategorije mogu biti problem, ako �elite da pravite sistem gde će postojati podkategorije, pa još neograničene “dubine” i pored toga svaki proizvod mo�e biti u nekoliko kategorija – to bi zahtevalo malo više iskustva i extra programiranja.
  • Dodavanje slika za proizvode (poseba tabela): jedan formular i jedan upload script: sa ukljucavnjem imageMagick ili GD library da se radi automatski resize odmah posle uploada.
  • Tabelu order i order_details kao i shop settings (koliki je shipping, tax, handling…)
  • Order checkout + editing (kada korisnik pre slanja ordera moze da promeni stavke, doda recimo umesto 2 CD-a, 3 ili 33 komada… brise item-e…)
  • Tabela customers (a i ne mora) ~ pravi shoping cart ne tra�i username i password za kupovinu – to je samo smaranje ljudi. Ako treba da ih prepoznate – prepoznajte ih po cookie, ili kada unese svoj email – potra�ite u bazi da li je imao ranijih narud�bina. Tabela customers bi bila potrebna čisto da se odvoje neki lični podaci od pravih order podataka. Na kraju, ako očekujete puno ordera, dobra ideja je da se u orders tabeli čuva samo summary svake narud�bine, dok se svi ostali podaci korisnika čuvaju u nekoj customes tabeli. Tako recimo ako jedan customer naruči nešto prvi put, dobije svoj record u customers tabeli gde se upisuju svi lični podaci kao što je shipping address i billing address, a u orderu se ostavi samo customer_id koji je veza sa customerom. Tako, svaki sledeći put kada naruči nešto, samo mu se krira novi order_id a customer id ostaje isti kao prvi put. Na taj način mo�ete da pratite recimo i najbolje mušterije. Pored svega toga, jako će se obradovati ako dobije popunjene podatke u formularu (ne sve, naravno) jer je to najveća muka – popuniti grozno velike formulare. Ali ipak – OPREZ. Moguće je da je isti customer i periodu između dve narud�bine promenio neke lične podatke (preselio se ili jednostavno �eli shipping na neku drugu adresu) ili promeni broj kreditne kartice (zato sam rekao da se ne popunjavaju svi podaci u formularu) i onda ste u problemu ako pretpostavite da je sve isto. U tom slučaju – jednosavno napraviti novog customera sa novim podacima.
  • Payment processor: odes na Payment Gateway site i pronadjes manual, procitas informacije u vezi implementacije i sta je moguce a šta nije dozvoljeno raditi. Većina njih nudi 2 načina procesiranja:

    1. on-site processing: kada korisnik popuni podatke, prosledis podatke na Payment Gateway i uzmes sve sto ti posalje nazad pa procesiras i proveris da li je transakcija uspesna. Napraviti obavezno kontrolu inputa pre slanja, najbolje i client (javascript) i server (PHP) ali obavezno bar ovo drugo.
    2. off-site processing: Tvoj je posao da napravis formular i prosledis podatke na Payment Gateway sa brojem accounta a korisnik sam izvrsi placanje i popunjava podatke o kreditnoj kartici. Tvoje je da napravis callback script koji ce procesirati podatke koje ti vrati Payment Gateway i u slučaju uspešnog ordera upises to u bazu, a u slučaju greške – objaviš korisniku gde je bio problem i daš mu neke tracking infromacije kao što je broj ordera, suma… kao i email adresu na koju mo�e da pošalje te podatke da se proveri zašto se pojavio problem

  • Slanje računa korisniku i izvestaja vlasniku prodavnice na email. To je bitno i za jednog i za drugog
  • Ulepšavanje formulara i cinculiranje ide na kraju. Ako ste pametno radili i koristili css klase, biće dovoljno samo da napravite dobar .CSS i uštedećete mnogo vremena i truda.

Po mojoj proceni, iskusnom web devloperu, koji je već radio ovakve stvari ne treba više od 20 radnih sati. Prvo zato što tačno zna šta radi, drugo zbog toga što većinu koda, ako je bio dovoljno pametan kada ga je pisao prvi put, ima već gotovo, dovoljno je promeniti neke parametre ili eventualno “protrčati” kroz kod i proveriti da nema nekih “specifičnosti”.

Onim malo neiskusnijim treba bar 5 puta više vremena, ako ništa drugo – to je vreme koje im je potrebno da pročitaju dokumentaiju ili nešto slično

Početnicima preporučujem da se ne upuštaju u ovo dok ne savladaju osnovne stvari.

Leave a Reply


Copyright 2005 © Goran Pilipovic fka bluesman