วันพุธที่ 26 มกราคม พ.ศ. 2554

แสดงข้อมูลสั่งซื้อสินค้าสำหรับสมาชิก

หลังจากที่ได้สอนท่านทำระบบตะกร้าสินค้าแล้ว ต่อไปเราจะมาทำการแสดงข้อมูลการสั่งซื้อของสมาชิกกันคับ ซึ่งเราจะทำเฉพาะในส่วนของสมาชิก โดยที่สมาชิกจะต้องทำการล็อกอินเข้าสู่ระบบก่อนถึงจะสามารถดูข้อมูลการสั่งซื้อของตนได้คับ สำหรับในส่วนของAdminที่จะสามารถดูข้อมูลการสั่งซื้อของสมาชิกแต่ละคนได้นั้นเอาไว้สอนทีหลังคับ บทความนี้จะสอนเฉพาะการแสดงรายการสั่งซื้อของสมาชิกคนนั้นๆออกมาแสดงเท่านั้น ซึ่งสมาชิกคนอื่นๆจะมองเห็นเฉพาะรายการสั่งซื้อของตนเท่านั้น จะไม่สามารถมองเห็นรายการสั่งซื้อของสมาชิกคนอื่นๆได้คับ
ดูผลลัพธ์ของโปรแกรมได้จากที่นี่คับ (Username:ladygaga Pass:123456)


ให้ท่านสร้างไฟล์ขึ้นมา 2 ไฟล์ คือ showlistorder.php (แสดงรายการสั่งซื้อ)และmyorder.php(แสดงรายละเอียดการสั่งซื้อทั้งหมด สามารถพิมพ์ออกมาได้)
เปิดไฟล์ function.php ขึ้นมาเราจะเพิ่ม function ของ php เข้าไปคับ function นี้ชื่อว่า convert_date คับ เอาไว้แปลงวันที่สั่งซื้อที่เราได้บันทึกไว้ในฐานข้อมูลคับ (function นี้ผมCopyของเค้ามาอีกทีคับ เห็นว่าใช้งานได้ดี แต่จำไม่ได้ว่าเอามาจากเว็บไหนคับ ต้องขออภัยด้วยที่ไม่ได้ให้เครคิตคับ) ให้copy code เหล่านี้ไปทับของเดิมได้เลยคับ

ให้Design ไฟล์ showlistorder.php ตามนี้เลยคับ
ไฟล์ showlistorder.php (Design)
ให้พิมพ์ Code ตามนี้เลยคับ

สำหรับไฟล์ myorder.php(ใบสั่งซื้อสินค้า) ให้Designตามนี้ (นี้แค่ simpleๆ คับ ใช้งานจริงอาจต้องมีรายละเอียดมากกว่านี้)
ไฟล์ myorder.php (Design)
ให้พิมพ์ Code ตามนี้เลยคับ

พบกับบทความสอนทำระบบ E-commerce ด้วย PHP + MySQL ในบทความต่อไปคับ หวังว่าบทความนี้ คงมีประโยชน์แก่ผู้อ่านไม่มากก็น้อยคับ

20 ความคิดเห็น :

  1. ไม่ระบุชื่อ11 ธันวาคม 2554 เวลา 13:06

    เป็นประโยชน์มากเลยครับ

    ตอบลบ
    คำตอบ
    1. ไม่ระบุชื่อ5 มีนาคม 2555 เวลา 14:29

      ผมเพิ่งหัดทำนะครับ
      ผมสงสัยในหัวข้อนี้อ่ะ ครับ
      คือไม่ว่าผมจะ login เข้าไป user ไหน มันก็แสดง รายการสั่งซื้อหมดทุกอัน
      ทั้งที่ผมยังไม่ได้สั่งซื้อเลย ผมจะแก้โค๊ดตรงไหนครับ
      อยาก login เข้ามา user ไหน ก็ให้แสดงเฉพาะรายการของ user นั้นๆ

      ลบ
    2. ไฟล์ showlistorder.php สังเกตุคำสั่ง
      $sql_listorder="SELECT
      tb_order.od_id,
      tb_order.od_date,
      Sum(tb_orderview.odv_amount),
      Sum(tb_orderview.odb_price*tb_orderview.odv_amount)
      FROM
      tb_order
      Left Join tb_orderview ON tb_order.od_id = tb_orderview.od_id
      GROUP BY
      tb_order.od_date ";

      เปลี่ยนเป็น
      $sql_listorder="SELECT
      tb_order.od_id,
      tb_order.od_date,
      Sum(tb_orderview.odv_amount),
      Sum(tb_orderview.odb_price*tb_orderview.odv_amount)
      FROM
      tb_order
      Left Join tb_orderview ON tb_order.od_id = tb_orderview.od_id
      WHERE tb_order.mb_user='".$_SESSION['ss_login']."'
      GROUP BY
      tb_order.od_date ";

      โทดทีที่ไม่ได้เช็คโค๊ดให้ละเอียดครับ ขอบคุณที่แจ้งบอกนะครับ :)

      ลบ
  2. พี่ค่ะ หนูต้องการ ไฟล์ที่แสดงรายการสั่งซื้อ ส่งเข้าอีเมลต้องทำยังไงค่ะ

    ตอบลบ
    คำตอบ
    1. ใช้คำสั่งส่งเมลธรรมดานี่แหละครับ
      โค๊ดตัวอย่าง
      http://www.thaicreate.com/php/php-send-email.html

      ส่วนข้อมูลที่ส่งไป ก็แค่ดึงรายการสั่งซื้อของลูกค้า, รายละเอียดของลูกค้า (ชื่อ-สกุล,Username,ที่อยู่ ฯลฯ)
      ให้ดูตัวอย่างดึงรายการสั่งซื้อจากไฟล์ myorder.php (เลื่อนไปดูข้างบน) ก็ได้ครับ

      ปล.1 ให้คำสั่งส่งเมลทำงานตอน ลูกค้ากดปุ่มตกลงการสั่งซื้อนะครับ
      ปล.2 คำสั่งส่งเมลจะทำงานได้บน Server จริงๆนะครับ มันจะไม่ทำงานบน localhost นะจ๊ะ

      ลบ
    2. ใช่ค่ะ หนู ส่งเมล ได้ค่ะ ส่งบน server แบบเลือกรายชื่อลูกค้าจากฐานข้อมูล แต่ว่า จะส่งไป ทั้งฟอร์ม สวยๆ แบบนี้ อ่ะค่ะ ต้อง แนบไฟล์ไปใช่มั้ย เป็น excel หรือ word

      พี่หมายถึง ตรงส่วน $user_message = $_POST['message']; ใช่มั้ยค่ะ ในกล่อง message ให้เอา order ส่งให้ลูกค้า EOF){?>
      fields['pd_id']?>
      fields['pd_name']?>
      fields['odv_amount']?>
      fields['pd_unit']?>
      fields['odb_price']?>
      fields['odv_amount']*$rs_showvieworder->fields['odb_price'] ?>
      fields['odv_amount']*$rs_showvieworder->fields['odb_price'];
      $rs_showvieworder->MoveNext();
      }
      ?>

      ลบ
    3. ไม่จำเป็นต้องส่งเป็นไฟล์ไปก็ได้ครับ
      ดูตัวอย่าง http://www.thaicreate.com/php/php-send-email.html
      สังเกตุ ตัวแปร $strMessage = "My Body & My Description";

      ดัดแปลงเป็น

      $strMessage="<table>";
      $strMessage.="<tr>";
      $strMessage.="<td>วันที่สั่งซื้อ</td><td>ชื่อสินค้า</td><td>จำนวน</td>";
      while(){//วนลูปข้อมูลที่จะเอามาใช่ส่งเมล
      $strMessage.="<td>ใส่ตัวแปรวันที่</td><td>ใส่ตัวแปรชื่อสินค้า</td><td>ใส่ตัวแปรจำนวน</td>";
      }
      $strMessage.="</tr>";
      $strMessage.="</table>";
      $flgSend = @mail($strTo,$strSubject,$strMessage,$strHeader);
      แค่นี้แหละครับ ผู้รับเมลก็จะเห็นข้อมูลที่ส่งมาจะเป็นรูปแบบตาราง

      ลบ
    4. ขอบคุณมากค่ะพี่ ^^

      ลบ
  3. มันเกิดปัญหาอย่างนี้ครับ
    ถ้าแราซื้อของมากกว่า 1 ชิ้นแล้วกดดูรายละเอียดมันก็โชวแค่ชิ้นละสุดอย่างเดียว
    ไม่ได้โชวทั้งหมดเหมือนรูป ขอลองเชคดู code หน่อยครับ

    ตอบลบ
    คำตอบ
    1. หมายถึงจำนวนในใบสั่งซื้อกับจำนวนที่สั่งซื้อไม่ตรงกันหรอครับ

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

      ลบ
    3. ถ้าจะซื้อเพิ่มก็ต้องใช้ใบสั่งซื้ออันใหม่ครับ ไม่สามารถนำไปรวมกับใบสั่งซื้อเดิมได้

      ลบ
    4. อ่อครับ ขอบคุณนะครับ ไม่รุ้ผมทำตรงไหนผิดรึป่าว วันๆนึงมันมีใบสั่งซื้อได้ใบเดียวเองครับ ไม่มีใบใหม่ถึง
      จะสั่งกี่ครั้งใบสั่งซื้อก็จะเป็นแต่ของครั้งแรกเท่านั้นอ่ะครับ ไม่รุ้ผมเข้าใจอะไรตรงไหนผิดป่าว - -*

      ลบ
    5. แนะนำให้ออกแบบเทเบิลตามในบทความนี้ครับ http://php-for-ecommerce.blogspot.com/2011/01/shopping-cart-2.html และลองศึกษาตามขั้นตอนในบทความของผมดีกว่าครับ http://php-for-ecommerce.blogspot.com/p/blog-page_2.html

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

    ตอบลบ
    คำตอบ
    1. แก้ได้ครับ และไม่ยากด้วย ดูตัวอย่างการออกแบบเทเบิลจากนี้ก่อนนะครับ ->ยืนยันการสั่งซื้อ
      โดยเอาค่า username กับ วันที่ปัจจุบัน ไปตรวจเช็คในเทเบิล tb_order ถ้าพบค่า ก็ดึง od_id ออกมา ไม่ต้องบันทึกลอง tb_order เพื่อไม่ให้มันสร้างเลขที่ใบสั่งซื้อใบใหม่ แล้วบันทึกสินค้าที่ส่งลงใน tb_orderview โดยส่ง od_id บันทึกลงไปด้วยครับ
      แต่ถ้าไม่พบค่าตามเงื่อนไข ก็ให้มันบันทึกลงเทเบิล tb_order กับ tb_orderview ปกติครับ

      ลบ
    2. เพิ่ง Code อะไรลงไฟล์ไหนเหรอครับผม

      ลบ
    3. ไฟล์ยืนยันการสั่งซื้อ ชื่อ confirmcart2.php ครับ จากหน้านี้ http://php-for-ecommerce.blogspot.com/2011/01/shopping-cart-2.html

      เอาเป็นว่าผมจะเขียนบทความให้อ่านนะครับ ไม่รู้จะอธิบายยังไงดี ^^''

      ลบ
    4. ขอบคุณครับผม ได้แล้วครับ

      ลบ
    5. ไม่ระบุชื่อ15 เมษายน 2556 เวลา 22:28

      ตกลงทำไงคับ บอกที

      ลบ