การทำ Shopping mall ด้วยระบบตะกร้า

ปรับปรุง : 2548-02-12 ()

บทเรียน ONLINE : การเขียนภาษา PERL
[ การทำ Shopping mall ด้วยระบบตะกร้า ]
ประโยชน์ของวิธีนี้จะทำให้ท่าน ขายของผ่านเว็บ ในแบบใช้ตะกร้าเดินจับจ่าย พร้อมคำนวณค่าใช้จ่ายให้ด้วย
แต่วิธีการจ่ายเงินผมยังคงใช้วิธีการส่ง mail เพราะถ้าจะให้ตรวจสอบบัตรเครดิตเลย
ก็ต้องมีฐานข้อมูลของธนาคารมาให้ตรวจ และเขายอมให้ผมตรวจบัตรเครดิตของใครต่อใคร ได้ง่าย ๆ คงยุ่งแน่
แต่ถ้าจะทำการค้าจริง ๆ เห็นว่าที่ www.cookkoo.com และ www.payaftersale.com
แต่ถ้าชอบง่าย ๆ ไม่ Serious ก็ใช้การซื้อขายผ่าน mail เหมือนที่ผมทำให้ดูนี่หละ .. ไม่เสียตัวเยอะ

  1. ข้อควรทราบ
  2. รูปแบบของแฟ้มข้อมูลสินค้า (ผมใช้แบบนี้เลย ทดลองได้)
  3. Source program ภาษา Perl
  4. ปัญหาที่ผมมองเห็น และยังไม่ได้แก้ สำหรับการเขียนโปรแกรมทำ E-Commerce
  5. แบบฝึกหัด

Click ที่นี่ เพื่อทดสอบโปรแกรม ขายสินค้า แบบใช้รถเข็น

ข้อควรทราบ
  1. โปรแกรมนี้จะทดสอบได้ ต้องมี 2 อย่างคือ web server ที่บริการ perl และ smtp server สำหรับส่ง e-mail
  2. คงต้องบอกตามตรงว่า โปรแกรมนี้ไม่ง่าย ในเรื่องของแนวคิด เพราะเป็นระบบที่คนส่วนใหญ่ไม่ค่อยคุ้นเคย ผมเองยังเบรอ ๆ อยู่เลย ปกติเขียนแต่โปรแกรมพิมพ์ 1 ถึง 10 ไว้สอนนักศึกษา แต่ผมก็พยายามสุด ๆ แล้วที่จะไม่ใส่อะไร ที่พิศดารลงไป ที่บอกว่าไม่ง่าย เพราะความต้องการที่ออกมา ค่อนข้างเฉพาะ ต่างกับโปรแกรมพิมพ์ 1 ถึง 10 ผมยังไม่ทันเขียน ท่านก็นึกหน้าตาออกแล้ว 1 ถึง 10 นี่จะเขียนอย่างไร แต่โปรแกรมนี้ ขนาดผมเขียน ๆ อยู่ยังนึกงงเลยว่าสุดท้ายจะเป็นอย่างไร .. ใช้วิธีชอบแบบไหน ถนัดอะไร จึงได้ผลออกมาตามที่เห็นหละครับ
  3. ผมต้องการให้ง่าย บทนี้จึงใช้แฟ้มแค่ 2 แฟ้ม คือข้อมูล และโปรแกรม หากท่านจะปรับปรุงข้อมูล ก็ต้องบอกว่าใช้ manual คือ ปรับปรุงแฟ้มสินค้า แล้ว Upload ขึ้นไปทับ ผมไม่ได้เขียนโปรแกรมสนับสนุนการ ปรับปรุงข้อมูลให้
  4. แฟ้มข้อมูล เก็บข้อมูลสินค้า ชื่อ plbsktd.dat มี 3 เขตข้อมูล ส่วนโปรแกรมนั้นชื่อ plbskt1.pl เป็นโปรแกรมที่ทำหน้าที่ขาย โดยอาศัยหลักของตะกร้ามาช่วย เป็นแนวทาง
  5. โปรแกรม Perl นั้นจะ อ่านข้อมูลสินค้ามาแสดง โดยให้เลือกแบบ Radio เมื่อเลือกและกำหนดจำนวนที่จะซื้อ จะนำข้อมูลไปแสดงในส่วนที่ผม อุปมา ว่าเป็นตะกร้า พร้อมคำนวณเงิน ท่านเลือกสินค้าได้หลายรายการ พร้อมบอกยอดรวมให้เสร็จสรรพ
  6. เมื่อพอใจในสินค้าในตะกร้า ผู้ซื้อสามารถกด Confirm ซึ่งจะ ส่งรายการสินค้า ที่เลือก ไปให้กับผู้ขาย ผ่าน E-mail เมื่อผู้ขายได้รับ แล้วก็จะ mail ไป comfirm พร้อมตกลงเรื่องวิธีจ่ายเงินว่า จะใช้ พกง. หรือโอนเงินเข้าธนาคาร หรือ เช็ค 60 วันเป็นต้น
  7. ที่เขียนเรื่องนี้ เพราะเห็น นักศึกษา Post คำถามเรื่อง E-Commerce ไปที่กระดาน Pantip กันมาก เมื่อต้นเดือนมกราคม 2000 ผมจึงตัดสินใจเขียนเรื่องนี้ขึ้นมา เพื่อเป็นจุดเริ่มต้น ให้นักศึกษาเห็นแนวการเขียนแนวหนึ่ง และนำไปเขียนในแบบของตนได้อย่างมีประสิทธิภาพ

รูปแบบของแฟ้มข้อมูลสินค้า
    แฟ้มชื่อ plbsktd.dat
    โครงสร้างแฟ้มนี้ มี 3 เขตข้อมูล (Field) ตัวอย่างข้อมูลมี 12 ระเบียน (Record)
    3 เขตข้อมูลประกอบด้วย รหัสสินค้า รายละเอียดสินค้า และราคา
    ถ้าแก้ข้อมูลสินค้าในแฟ้มนี้ เวลาเข้าหน้าจอขาย รายการสินค้าก็จะเปลี่ยนตามไปด้วย
    ta001:บ้านพร้อมที่ดินที่ลำปาง ติดวิทยาลัยโยนก 1 คูหา 3 ห้องนอน:650000
    ta002:ไม้จิ้มฟันอย่างดี 500 ก้าน:5
    ta003:คอมพิวเตอร์ NoteBook 386 HD 40Mb:15000
    ta004:รถยนต์NISSAN Sunny มือสอง แกะกล่อง สีเงิน:500000
    ta005:หนังสือขายหัวเราะ เล่มเก่าปานกลาง ตอนขายไม่ออก:10
    ta006:ตัวต่อจิ๊กซอ รูปผมเอง ขนาด 500 ชิ้น:35
    ta007:แผ่น Dance zone มือสอง พร้อม CD รุ่นแรก:500
    ta008:ปากกาหมึกซึม รุ่นเติมหมึกจากขวด สีน้ำเงิน รุ่นปี 2525:30
    ta009:ดอกกุหลาบ สีแดง สำหรับคนที่ท่านรัก:50
    ta0010:ขนมครก ไข่นกกระทา ชุดละ 10 ฟอง:20
    ta0011:หนังสือพิมพ์เก่า ๆ สำหรับพับถุง:1
    ta0012:ขี้ควายเป็นถุง สำหรับทำปุ๋ย ควายเลี้ยง แถวบ้านผม:20

Click เพื่อดูข้อมูลสินค้า จากแฟ้มจริง ตามที่เห็นข้างบนนี้

Source program ภาษา Perl
    โปรแกรมนี้ผมแบ่งการทำงานเป็นส่วน ได้ดังนี้
    1. เริ่มรับค่าจากที่ส่งเข้ามา ผ่านคำสั่ง form (ที่ submit เข้ามานั่นหละ)
    2. พิมพ์หัวตาราง ให้อ่านรู้เรื่องว่า form นี้คืออะไร
    3. ตรวจสอบว่ามีสินค้าในตะกร้าหรือไม่
    4. พิมพ์ของในตะกร้า พร้อมคำนวณ บนจอภาพให้ลูกค้าดู
    5. พิมพ์รายการสินค้าทั้งหมด ให้ลูกค้าเลือก ทางจอภาพ
    6. นำสินค้าที่เคยเลือก เตรียมส่งไปพร้อมข้อมูลใหม่ แต่ไม่แสดงให้เห็น
    มีขั้นตอนการทำงานเท่านี้เอง .. ต้องใช้สมาธินิดหน่อยสำหรับผู้ไม่คุ้นเคยครับ
    ผมเองยังใช้เวลาตั้งหลายชั่วโมง แก้ bug เล็ก ๆ น้อย ๆ .. ผมเสร็จแล้ว คราวนี้ก็ท่านหละ
    #!/usr/local/bin/perl $b = $ENV{DOCUMENT_ROOT}; print"Content-type:text/html\n\n"; # $filename = join '',$b,"/perl/plbsktd.dat"; $filename = "plbsktd.dat"; # เริ่มรับค่าจากที่ส่งเข้ามา $cntrec = 0; if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); $buffer =~ tr/+/ /; $buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $buffer =~ s/~!/~!/g; @choosepro = split(/&/, $buffer); $cntrec = @choosepro; } # พิมพ์หัวตาราง print '<font face="microsoft sans serif" size=0>'; print '<center>โปรแกรมชุดนี้ใช้รับคำสั่งซื้อจากลูกค้า '; print 'โดยใช้ตะกร้าจับจ่ายของ อย่างง่าย<br>'; print '<b>ท่านทดลองได้ แต่ให้ระบุ E-mail ท่านจะได้เห็นผลเอง<br>'; print 'เมื่อกด Confirm โปรแกรมจะส่งคำสั่งซื้อไปให้ท่านทาง E-Mail</b><br>'; print 'โปรแกรมนี้เขียน ง่าย ๆ เป็นแนวทางนิดหน่อย ถ้าจะให้ Perfect '; print 'ท่านต้องถลกขากางเกง และลงไปคลุกกับมันแล้วหละ</center><hr>'; print '<b>รายการสินค้าในตะกร้า ที่ลูกค้าเลือกไว้แล้ว</b><br>'; # ตรวจสอบในตะกร้า $startchk = 0; if ($choosepro[1] eq "amount=0") { $startchk = 2;} if (substr($choosepro[0],0,7) eq "amount=") { $startchk = 1 ;} if (@choosepro eq "0" or $startchk >= @choosepro) { print "<font color=#ff0000>ตะกร้าว่างอยู่ รอท่านหยิบสินค้า และระบุจำนวน</font>"; } # พิมพ์ของในตะกร้า พร้อมคำนวณ $total = 0; foreach $i ($startchk .. $cntrec - 1) { print '<form method=post action="http://www.thaiall.com/cgi/sndform.pl">'; @rec = split /=/,$choosepro[$i]; @recn = split /=/,$choosepro[$i+1]; $keep = $rec[1]; if (length($recn[1]) < 15 and length($recn[1]) > 0) { $keep = join ":",$rec[1],$recn[1]; } if (length($choosepro[$i]) > 15) { push(@youbuy,$keep); print " - ",$keep; @calrec = split /:/,$keep; print '<input type=hidden name=',$calrec[0]; print ' value="',$keep,'">'; $tot = $calrec[2] * $calrec[3]; $total = $total + $tot; print " = <font color=#ff0000>",$tot,"</font><br>"; } } if ($total > 0) { print "<center>รวมเงิน<b> ",$total,"</b> บาท</center><hr>"; print '<input type=hidden name=total value=',$total,'>'; print "E-Mail ของผู้ขาย (ปกติ hidden เป็น email ของท่าน) : "; print '<input type=text name=recipient size=30 '; print 'value="Seller@yourdomain.com"><br>'; print "E-Mail ของผู้ซื้อ เพื่อให้ผู้ขายติดต่อกลับ : "; print '<input type=text name=buyer size=30 '; print 'value="Buyer@yourdomain.com">'; print '<input type=submit value="ส่งรายการไปให้ผู้ขาย เมื่อพอใจสินค้าในตะกร้าแล้ว(Confirm)">'; print '</form>'; print '<form method=post action="plbskt1.pl">'; print '<input type=submit value="เอาใหม่ ยกเลิกการเลือกทั้งหมด (Reset)">'; print '</form>'; } # พิมพ์รายการสินค้าทั้งหมด ให้เลือก print '<hr><b>รายการสินค้า ที่มีให้ลูกค้าเลือกหยิบลงตะกร้า</b><br>'; print '<form method=post action="plbskt1.pl">'; open(myfile,"$filename"); @getrec = <myfile>; close(myfile); foreach $line_rec (@getrec) { @rec = split /:/,$line_rec; @recok = split /\n/,$line_rec; $found = 0; foreach $ybuy (@youbuy) { @yrec = split /:/,$ybuy; if ($yrec[0] eq $rec[0]) { $found = 1; print "<font color=#0000ff>"; } } if ($found eq 0) { print '<input type=radio name=',$rec[0]; print ' value="',$recok[0],'">'; } print '<b>รหัสสินค้า</b> : [ ',$rec[0],' ] '; print "<b>ราคา</b> : ",$rec[2]," บาท "; print '<b>รายละเอียด</b> : ',$rec[1],"<br>"; if ($found eq 1) { print "</font>"; } } print '<b>จำนวนที่ต้องการซื้อ</b> :<input type=text name=amount value=1><br>'; # นำสินค้าที่เคยเลือก เตรียมส่งไปพร้อมข้อมูลใหม่ แต่ไม่แสดงให้เห็น for $i (0 .. @youbuy - 1) { @rec = split /:/,$youbuy[$i]; print '<input type=hidden name=',$rec[0],' value="',$youbuy[$i],'">'; } print '<input type=submit value="เมื่อเลือกสินค้า และระบุจำนวน (Click here)">'; print '</form>'; print '<form method=post action="plbskt1.pl">'; print '<input type=submit value="เอาใหม่ ยกเลิกการเลือกทั้งหมด (Reset)">'; print '</form><hr>';

Click เข้าสู่หน้าจอขาย เพื่อทดสอบดูความสามารถของโปรแกรม

ปัญหาที่ผมมองเห็น และยังไม่ได้แก้
    ปัญหาที่ผมจะกล่าวถึง คือความสามารถที่ขาดหายไป ที่เขียนถึงปัญหา ก็เพื่อให้ผู้อ่าน ไปช่วยเขียนเพิ่มเติม หรือบางท่านอาจคิดว่า ผมเขียนนี่ สุดยอดแล้ว นำไปใช้ได้เลย หรือคิดว่า ที่ผมเขียนนี่ คงเป็นสุดยอดโปรแกรม E-Commerce แล้ว เปล่าเลย ที่เขียนนี่ เป็นเพียงจุดเริ่มต้น ที่ผมเขียนให้ท่านที่ถูกอาจารย์สั่งงานมา แต่จับต้นชนปลายไม่ถูก ได้มองเห็นต้น และปัญหาที่ผมเขียนขึ้นมาก็คือปลาย ดังนั้น ท่านคงต้องใช้เวลา ทำให้ต้นกับปลายมาบรรจบ เป็นจุดเดียวกัน นั่นจึงจะเป็นจุดสิ้นสุด สำหรับ E-Commerce ในรูปแบบที่ผมคิด
    แต่ในความเป็นจริง E-Commerce ที่สมบูรณ์ 100% ไม่มี เหมือนกับ โปรแกรม Windows 2000 จะสมบูรณ์ในช่วงเวลาหนึ่ง ในสถานการณ์หนึ่ง แต่อีก 20 ปีข้างหน้า ผมบอกได้เลยว่า Windows 2000 จะเป็นระบบปฏิบัติการที่ สุดล้าสมัย และอาจไม่มีใครใช้แล้วก็ได้ แล้วก็เดาเล่น ๆ ว่าอีก 100 ปี จะต้องมีโปรแกรม Windows 2100 หรือไม่ ก็อาจเป็น Winlinux เพราะทำการรวม Windows กับ Linux เข้าด้วยกันซะเลย .. เป็นต้น อนาคตใครจะไปรู้
    ถ้าถามว่า จะดูตัวอย่าง E-Commerce ได้ที่ไหน ผมคงต้องแนะนำ www.thaiamazon.com หรือ www.amazon.com เพราะโด่งดังมาก หรือไม่ก็เข้า www.cookkoo.com เพราะเป็นระบบดี ผมอ่านเรื่อง thaicybermall.com(ปิดไปแล้ว) จากหนังสือเล่มหนึ่ง ปกแดง ๆ อ่านแล้วเข้าใจเลยครับว่า จะเป็นลูกค้าของ thaicybermall.com(ปิดไปแล้ว) ได้อย่างไร ถ้าใครคิดจะทำธุรกิจจริง ๆ และมีเงินถุง เงินถังพร้อมลงทุน ก็ไปคุยกับ cookkoo.com หรือ payaftersale.com ก่อนก็ได้

    สิ่งที่ขาดหายไป แต่ท่านสามารถเพิ่มเติมได้
  1. ระบบภาษี แบบต่าง ๆ ซึ่งยืดหยุ่นไปตามประเทศ
  2. การยกเลิกเฉพาะสินค้าบางรายการในตะกร้าได้
  3. การเพิ่มลดจำนวนของสินค้า บางรายการในตะกร้าได้
  4. เมื่อซื้อแล้วจะไปตัด Stock ทันที
  5. แยกหน้าชำระ เพื่อ confirm ความต้องการซื้อจริง ๆ
  6. มีระบบสมาชิก ไม่ใช่ เด็ก 10 ขวบ มากดเล่น ๆ ก็ได้
  7. มีการรับข้อมูลที่อยู่ และคำนวณค่าขนส่งอย่างรัดกุม
  8. มีส่วนลด แบบต่าง ๆ เช่น ตามสินค้า ตามยอดซื้อ หรือลดช่วย promote
  9. ตัดเงินในระบบบัตรเครดิตของธนาคารได้ (อันนี้ต้องขอคำปรึกษาธนาคาร)
  10. มีระบบแจ้งขอผิดพลาด ถ้าพิมพ์อะไรผิด เช่นจำนวนเกิน เป็นต้น
  11. มีสินค้าที่หลายหลาย ทั้งประเภท สี และขนาด เป็นต้น
  12. คำนึงถึงระบบการเก็บสินค้าคงคลังว่าอย่างไร
  13. คำนึงถึงระบบบัญชีว่าอย่างไร
  14. คำนึงถึงระบบพนักงานขาย ผู้บริหาร Webmaster Customer srevice ว่าไง
  15. สถานที่จัดตั้ง Hardware หรือ Server ที่ให้บริการ
  16. และอีกมากมาย

แบบฝึกหัด
    ให้ทำตามโจทย์ต่อไปนี้
  1. ให้ทำแบบที่ผมทำนี่เลยในเว็บของท่าน
  2. ให้ทำเพิ่ม - ลดรายการสินค้า แล้วทดลองว่ามีปัญหาหรือเปล่า
  3. ให้ทำส่วนเลือกสินค้าหลาย ๆ แบบ เช่น Listbox หรือ Checkbox ร่วมด้วย
  4. ให้แยกส่วนชำระเงิน เป็นอีกหน้าหนึ่ง เพราะที่ผมเขียนนี้รวมกัน
ผู้สนับสนุน + ผู้สนับสนุน
+ รับผู้สนับสนุน

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223