GORAGOD.com

เทคนิคการจัดการ สินค้า ในตระกร้าสินค้า ตอนที่ 2

ตอนที่แล้วเราจัดการตะกร้าสินค้าด้วย session ไปแล้ว ในตอนนี้ผมจะพูดถึงการจัดการสินค้าด้วยฐานขข้อมูลกัน

ทำไมถึงต้องเลือกใช้ฐานข้อมูล ถ้า
  1. ต้องการเก็บประวัติการเข้าชมสินค้าล่าสุด แม้จะ เป็นการกลับเข้ามาในวันหลังๆ
  2. ต้องการป้องกันการปิดบราวเซอร์โดยบังเอิญ ซึ่ง session จะหายไป และต้องเริ่มเลือกสินค้าใหม่

ถ้าคุณมีปัญหา 1 ใน 2 ข้อนี้ (อาจมีอีกแต่นึกไม่ออก) คุณคงต้องเก็บประวัติการเลือกซื้อสินค้า ลงบนฐานข้อมูล

การเก็บประวัติการเลือกสินค้าลงบนฐานข้อมูล สิ่งที่ควรเก็บได้แก่ id ของสินค้า, ราคาของสินค้า, จำนวนสินค้าที่เลือกไว้, วันที่ ที่ทำการเลือกสินค้า ,session_id และ user_id

การจัดการสำหรับในกรณีของฐานข้อมูล ก็คงไม่มีอะไรมาก ให้เราเก็บข้อมูลตามที่ผมได้อธิบายไว้ ซึ่งน่าจะรู้ว่าต้องจัดเก็บอะไรบ้าง เนื่องจากจะคล้ายๆกับแบบที่ใช้ session แต่ที่แปลกก็คือวันที่ จะใช้ทำอะไร

วันที่ เราจะใช้สำหรับ ระบุว่า มีการเลือกสินค้าเมื่อไร ซึ่งมันก็คือประวัติการเลือกซื้อล่าสุดนั่นเอง เราอาจกำหนดให้ข้อมูลนี้เก็บไว้ 1 วัน 2 วัน หรือ กี่วันก็ได้ หากมีการเข้ามาใหม่อีกครั้ง ก็จะมีการแสดงสินค้าที่เลือกล่าสุดเข้ามา

session_id จะใช้เก็บ session_id เพื่อระบุว่า เป็นการ เลือกจากใคร ในกรณีที่ user นั้น ไม่ได้ login (user_id) เป็น 0 เราอาจเก็บค่านี้ลง cookie ด้วยก็ได้ เพื่อเป็นการประกันว่า การกลับเข้ามาครั้งต่อไป จะได้ข้อมูลเดิม แม้จะไม่ใช่ สมาชิก

user_id คงไม่ต้องอธิบาย ถ้าเป็น 0 หมายถึง ไม่ใช่สมาชิก หรือ ไม่ได้ login

มีคำถามจากบอร์ดว่า ข้อมูลที่เก็บไว้ ถ้าไม่ได้ logout หรือไม่ได้จบด้วยการขายล่ะ มันคงมีข้อมูลที่ไม่ได้ใช้เต็มไปหมด ปัญหานี้แก้ได้ ด้วยวันที่ ที่เก็บไว้ ครับ

การ logout หรือการ ปิด browser แบบ สมบูรณ์ ไม่ได้เกิดขึ้นทุกครั้งกับ browser หรอกครับ มีหลายสาเหตุที่ทำให้มันไม่เป็นเช่นนั้น การลบข้อมูลที่ไม่จำเป็น ควรกระทำตอนที่เรียกหน้าเว็บมากกว่า (หรือเมื่อไรก็ได้ ที่มีการเรียกหน้าเว็บ อาจเป็นการเรียกหน้าใดหน้านึ่งโดยเฉพาะ เพื่อลบข้อมูลที่ไม่ได้ใช้ออก หรือจะไปกำหนดให้ทำเมื่อเรียกหน้าแอดมิน หรือ อาจกำหนดให้ทำทุกครั้งที่เรียกหน้าเว็บตามปกติก็ได้) หลักการของมันก็คือ ใช้การตรวจสอบวันที่ที่เก็บไว้ ถ้าวันที่ไม่ตรงกัน ก็ให้ลบข้อมูลนั้นๆออกเป็นต้น นั่นหมายถึง ประวัติการเรียกดูจะเก็บไว้ 1 วัน ถ้าเข้ามาใหม่ในวันรุ่งขึ้นก็ให้เริ่มเลือกใหม่ ในกรณีนี้เราอาจกำหนดให้มากกว่า 1 วันก็ได้นะครับ หรือแม้กระทั่งกำหนดเป็น ชั่วโมงหรือ นาทีก็ได้ แล้วแต่ความต้องการของเรา

สำหรับในส่วนอื่นๆก็คงไม่มีอะไรแตกต่างจากการใช้ session หรอกครับ เนื่องจากในตอนจบการขายเราต้องบันทึกข้อมูลการขาย ลงบนฐานข้อมูลที่ทำการขาย (ซี่งเหมือนกันอยู่แล้ว)