เทคนิคการจัดการ สินค้า ในตระกร้าสินค้า
วิธีแรก เก็บข้อมูล ลง session
session สามารถใช้เป็นเครื่องมือในการพักข้อมูลชั่วคราวได้ ซึ่งมันค่อนข้างง่ายด้วยซ้ำไป เนื่องจากมันสามารถเก็บในรูปแอเรย์ได้ ทำให้สะดวกในการจัดการ ลองดูตัวอย่างการใช้ session ในการเก็บข้อมูลการเลือกสินค้านะครับ
<?php
// เมื่อเลือกสินค้าใหม่
// product_id หมายถึง id ของสินค้า อ้างอิงจากฐานข้อมูล
// count จำนวนของสินค้าที่เลือก จากตระกร้า
// price คือ ราคาสินค้าต่อหน่วย ที่ทำการขาย มีประโยชน์ในการคำนวณราคา โดยที่ไม่ต้อง query ซ้ำอีก
$_SESSION['store']['product_id'] = array(count, price);
?>
ข้อมูลด้านบน ก็เพียงพอ สำหรับตะกร้าสินค้าแล้วครับ
การดูว่าเลือกสินค้าใดไปบ้าง ก็อาจเขียน query ได้ประมาณนี้
<?php
// ข้อมูลสินค้าที่เลือกไว้
// เลือกสินค้า id = 1 จำนวน 3 ชิ้น ราคาชิ้นละ 5 บาท
$_SESSION['store'][1] = array(3, 5);
$_SESSION['store'][5] = array(1, 10);
$_SESSION['store'][7] = array(2, 15);
// sql เพื่อ list รายการสินค้าที่เลือก
$sql = "SELECT * FROM `product` WHERE `id` IN (".implode(', ', array_keys($_SESSION['store'])).")";
// แสดงผล sql (debug)
echo $sql;
?>
หากมีการลบ หรือเพิ่มสินค้าที่เลือก ก็สามารถทำได้ง่ายๆ ครับ
<?php
// เลือกสินค้า id = 1 จำนวน 3 ชิ้น ราคาชิ้นละ 5 บาท
$_SESSION['store'][1] = array(3, 5);
$_SESSION['store'][5] = array(1, 10);
$_SESSION['store'][7] = array(2, 15);
// เลือกสินค้า id = 1 เพิ่ม 1 ชื้น
$_SESSION['store'][1][0]++;
// เลือกสินค้า id = 5 เพิ่ม 9 ชื้น
$_SESSION['store'][5][0] += 9;
// ลบสินค้า id = 7
unset($_SESSION['store'][7]);
// debug
print_r($_SESSION['store']);
?>
ส่วนในขั้นตอนจบกระบวนการขาย ซึ่งเราจะต้องบันทึกสินค้าที่เลือกลงฐานข้อมูล ก็อาจอาศัยการวนลูป บันทึกทีละข้อมูลก็ได้
<?php
// เลือกสินค้า id = 1 จำนวน 3 ชิ้น ราคาชิ้นละ 5 บาท
$_SESSION['store'][1] = array(3, 5);
$_SESSION['store'][5] = array(1, 10);
$_SESSION['store'][7] = array(2, 15);
foreach($_SESSION['store'] AS $product_id => $value){
// บันทึกลงในตารางการขาย (sale)
$sql = "INSERT INTO `sale` (`product_id`, `price`, `count`) VALUES ('$product_id', '$value[1]', '$value[0]')";
// (debug)
echo $sql.'<br />';
}
?>
การใช้ session เป็นวิธีที่ไม่ค่อยยุ่งยากครับเนื่องจากไม่ต้องจัดการอะไรมากนัก โดยให้มอง session เป็นแค่ตัวแปร แอเรย์ ตัวหนึ่งที่สามารถเก็บข้อมูลอะไรก็ได้ ซี่งค่อนข้างสะดวก แต่วิธีนี้ก็มีข้อเสีย คือ หากมีการปิด browser ลงไป ข้อมูลการเลือกสินค้า ทั้งหมด จะหายไปทันที ทำให้ต้องเริ่มกระบวนการเลือกสินค้าใหม่
ตัวอย่างนี้ มีเทคนิคที่น่าเรียนรู้ อยู่ 2-3 อย่าง ครับ คือ เทคนิคการใช้งานตัวแปร array เพื่อจัดการกับข้อมูลที่ซับซ้อน รวมถึง เทคนิคการใช้ session ในการเก็บข้อมูล (แบบ array) เพื่อให้สามารถใช้งานได้ทุกหน้า โดยที่ไม่ต้องพึ่งพาฐานข้อมูล และที่สำคัญอีกอย่าง คือ เทคนิคการ ดีบัก (debug) โค้ด เพื่อให้สามารถมองภาพลำดับการทำงานออก รวมทั้ง สามารถหาข้อผิดพลาด ได้ง่ายขึ้นด้วย