ได้เวลาที่ต้องอัปเดตบทความกันซะหน่อยแล้วคับ เดือนนี้มีบทความให้ท่านได้อ่าน เพียงแค่บทความเดียวเท่านั้นเอง เหตุผลที่หายไปไม่ใช่ว่าผมติดธุระ งานยุ่งอะไรหรอกคับ เป็นเพราะความขี้เกียจมากกว่า สำหรับเนื้อหาการทำระบบ
E-Commerce ด้วย
PHP +
MySQL ในวันนี้ ผมจะสอนท่านทำตะกร้าสินค้า(
Shopping Cart) โดยตอนนี้จะสอน
Add To Cart กับ
Update จำนวนสินค้า ลบสินค้าในตะกร้ากันก่อนคับ มาดู
ผลลัพธ์กันก่อนเลยคับ ให้ท่านคลิกที่Iconรูปตะกร้า
สำหรับแนวคิดของการทำระบบนี้ของผม คือ การสร้าง
ตัวแปรแบบ Session ขึ้นมา เพื่อเก็บค่าข้อมูลของสินค้าที่ลูกค้าคลิกสั่งซื้อ ดังรูป
|
แสดงการคลิกสั่งซื้อสินค้า
|
เมื่อลูกค้าคลิกที่รูปตะกร้าสินค้า จะได้ผลลัพธ์ดังรูป
|
ไฟล์ showcart.php แสดงสินค้าในตะกร้า |
แสดงสินค้าในตะกร้าสินค้า โดยมีตรวจสอบด้วยว่า หากลูกค้าเลือกสินค้าซ้ำกัน ให้จำนวนสินค้าบวกเพิ่มอีกหนึ่ง
อันดับแรกให้ท่านไปที่ไฟล์
function.php ให้แก้ไขLinkของรูป
ไอคอน Add To Cart ผมได้เพิ่มเติม
Code บางส่วนของไฟล์นี้ ให้ท่าน
Copy Code ตามลิงค์>>
function.php นี้ไปทับของเดิม
ต่อมา ให้ท่านสร้างไฟล์ ชื่อ
showcart.php กับ
chkcart.php
ไฟล์
chkcart.php ให้ท่านพิมพ์
Code PHP เข้าไป ดังนี้
| <?php |
| session_start(); |
| require_once("config.php");#เรียกไฟล์เชื่อมต่อกับฐานข้อมูล |
| if(isset($_GET["cartid"])){#Add to cart |
| $cid=$_GET["cartid"]; |
| $_SESSION["cartcount"]++; |
| $cartcount=$_SESSION["cartcount"]; |
| $CItemCount="cart$cartcount"; |
| $CartStatus="";#เอาไว้เก็บสถานะสินค้าว่าลูกค้าเลือกซ้ำหรือไม่ |
| $rs_showpd=$conn->Execute("SELECT * FROM tb_product WHERE pd_id=".$cid.""); |
| if(count($_SESSION["cartNumber"])!=0 ){ |
| foreach($_SESSION["cartNumber"] as $RecCart){ |
| if($_SESSION[$RecCart][0]==$cid){#หากสินค้าซ้ำกับของเดิม(โดยตรวจสอบจาก ID ของสินค้า) |
| $_SESSION[$RecCart][1]++;#เพิ่มจำนวนสินค้า |
| $CartStatus="double";#เปลี่ยนสถานะ |
| } |
| } |
| } |
| if($CartStatus==""){#สถานะเป็นค่าว่าง แสดงว่าสินค้าไม่ซ้ำกับของเดิม |
| $_SESSION[$CItemCount][0]=$cid; |
| $_SESSION[$CItemCount][1]=1; |
| $_SESSION[$CItemCount][2]=$rs_showpd->fields["pd_price"]; |
| $_SESSION["cartNumber"][$cartcount]=$CItemCount;#ตำแหน่งของแต่ละเรคคอร์ดของสินค้า |
| } |
| } |
| ################################################################## |
| if(isset($_GET["del"])){#ต้องการจะลบสินค้า |
| $RecDel=$_GET["del"]; |
| foreach($_SESSION["cartNumber"] as $RecCart){#วนไปจนกว่าจะเจอแถวของสินค้าที่เลือกลบ |
| if($RecCart==$RecDel){ |
| $CNum =preg_replace("/[^0-9]/", '', $RecCart); // คัดเอาเฉพาะตัวเลข เช่น cart1 จะได้ ค่า 1 เป็นต้น |
| unset($_SESSION['cartNumber'][$CNum]); // unset แถวที่เก็บสินค้าที่ต้องการลบ |
| } |
| unset($_SESSION[$RecDel]);#unset ข้อมูลสินค้าที่เก็บไว้ทั้งหมด |
| } |
| } |
| ################################################################## |
| if(isset($_POST["bt_edit"])){#ต้องการแก้ไขจำนวนสินค้า |
| $pdid=$_POST["pd_id"];#รหัสของสินค้าทั้งหมด(จัดเก็บไว้ในรูป Array) |
| $cartRows =$_POST["cartRows"];#จำนวน Record ของแถวทั้งหมดของสินค้า(จัดเก็บไว้ในรูป Array) |
| $pamount=$_POST["pd_amount"];#จำนวน Record ของสินค้า(จัดเก็บไว้ในรูป Array) |
| for($i=0;$i<=(count($cartRows)-1);$i++){#วนลูปไปทีละแถวเพื่ออัพเดทจำนวนสินค้า |
| if($pamount[$i]>0){#เอาเฉพาะจำนวนสินค้าที่มากกว่า0 |
| $rs_record=$conn->Execute("SELECT pd_name,pd_amount FROM tb_product WHERE pd_id=".$pdid[$i].""); |
| if($pamount[$i]>$rs_record->fields[1]){#หากจำนวนที่ลูกค้าระบุมากกว่าจำนวนที่มีอยู่ในร้าน |
| echo "<script>"; |
| echo "alert('คุณระบุจำนวนสินค้า(".$rs_record->fields["pd_name"].")มากกว่าจำนวนสินค้าในร้าน');"; |
| echo "</script>"; |
| $_SESSION[$cartRows[$i]][1] = $rs_record->fields[1];#เซตจำนวนสินค้าใหม่ให้มีค่าเืท่ากับจำนวนสินค้าในร้าน |
| }else{#หากจำนวนสินค้าที่ลูกค้าระบุน้อยกว่าหรือเืท่ากับจำนวนสินค้าที่มีอยู่ในร้าน |
| $_SESSION[$cartRows[$i]][1] = $pamount[$i] ; #เซตจำนวนสินค้าใหม่ให้มีค่าเท่ากับจำนวนที่ลูกค้าระบุ |
| } |
| } |
| } |
| } |
| echo "<script>window.location='showcart.php';</script>";#Redirect ไปยังหน้าตระกร้าสินค้าทุกครั้ง |
| ?> |
0 ความคิดเห็น:
แสดงความคิดเห็น