วันพุธที่ 28 สิงหาคม พ.ศ. 2556

MySQL กับคำสั่งCopyแถวข้อมูล


     วันนี้มีคำสั่งของ MySQL มาแนะนำครับ ซึ่งมีประโยชน์ต่อการเพิ่มข้อมูลโดยที่เราไม่ต้องกรอกข้อมูลใหม่ทั้งหมด เช่น เราทำเว็บขายของหรือร้านค้าออนไลน์ มีสินค้าที่เป็นยี่ห้อเดียวกันแตกต่างกันที่รุ่นของสินค้าและมีรายละเอียดหรือสเป็คของสินค้าที่แตกต่างกันเล็กน้อย แต่ไม่ต้องการเพิ่มใหม่เองทั้งหมด แค่ต้องการจะนำข้อมูลเดิมจากสินค้าที่เพิ่มไปแล้วมาCopyเป็นRecordใหม่ และแก้ไขข้อมูลเพียงเล็กน้อยเท่านั้น เป็นต้น
รูปแบบของคำสั่งSQL
INSERT INTO tableที่จะเพิ่ม  (field1, field2)
SELECT field1,field2  FROM tableที่จะCopy
WHERE ใส่เงื่อนไข (ถ้ามี)
การใช้งาน
1.คัดลอกในเทเบิลเดียว
 เช่นผมมีเทเบิลสินค้าชื่อ products และต้องการคัดลอกสินค้ารหัส 2 (product_id=2) ให้เพิ่มแถวใหม่ แต่จะมีข้อมูลเหมือนสินค้ารหัส 2
ใช้คำสั่งSQLดังนี้
INSERT INTO products  (product_name, product_detail,product_qty)
SELECT product_name, product_detail ,0 FROM products
WHERE product_id=2
อธิบายคำสั่งข้อ 1
1.ฟิลด์ product_name ของเทเบิล products จะถูกเพิ่มลงฟิลด์ product_name และกลายเป็นแถวใหม่
2.ฟิลด์ product_detail ของเทเบิล products จะถูกเพิ่มลงฟิลด์ product_detail และกลายเป็นแถวใหม่
3.ค่า 0 (จำนวนสินค้า)  จะถูกเพิ่มลงฟิลด์ product_qty เพื่อเซตจำนวนสินค้าให้เป็นศูนย์ และกลายเป็นแถวใหม่

วันอาทิตย์ที่ 25 สิงหาคม พ.ศ. 2556

.htaccess กับการปิดปรับปรุงเว็บไซต์

ภาพนี้ไม่เกี่ยวข้องกับเนื้อหาที่สอน โปรดใช้วิจารณญาณในการอ่าน
     หากเว็บไซต์ที่คุณพัฒนาด้วยตนเอง (เขียนCodeเอง) หรือใช้ CMS บางเจ้า ที่อาจไม่มีอ๊อปชั่นปิดปรับปรุงเว็บ (แต่ส่วนมากแล้วจะมี) วันดีคืนดีเจอปัญหาบางอย่าง เช่น เว็บโหลดช้า ซึ่งอาจเกิดจากฐานข้อมูล หรือเว็บขายของออนไลน์บางท่าน อยากปิดร้านไปเที่ยวชิวๆ เพื่อไม่ให้ลูกค้าโทรมากวนใจ ก็เลยคิดว่า เมื่อลูกค้าเสริชเจอสินค้าใน google ไม่ว่าจะเข้ามาจากทางลิงค์ไหนในเว็บไซต์ของเรา ก็ให้มันแสดงข้อความบางอย่างขึ้นมาหรือRedirectไปหน้าแจ้งปิดปรับปรุงเว็บไซต์

สรุปแล้วมันมีสองวิธีที่ผมแนะนำครับ

วิธีที่ 1 แสดงป๊อปอัพขึ้นมาเพื่อแจ้งลูกค้าว่าปิดปรับปรุงร้านค้าออนไลน์ ผมได้เขียนบทความเอาไว้แล้ว ศึกษาได้จาก สอนทำข้อความต้อนรับแบบ Popup ด้วย jQuery UI  สามารถนำมาประยุกต์ใช้แจ้งปิดปรับปรุงร้านได้แน่นอนครับ  โดยเลือกเอาโค๊ดเหล่านี้ออก
ส่วนที่ 1 เอาCode เรียกใช้ Plugin jQuery Cookie ออก
<script src="https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js" type="text/javascript"></script>
ส่วนที่ 2 เอาCodeที่เกี่ยวกับ jQuery Cookie ออก ให้เหลือแค่
  

วันศุกร์ที่ 16 สิงหาคม พ.ศ. 2556

สอน Web Services PHP ตอนที่ 2 การแสดงข้อมูลสินค้าโดย return ค่าแบบ Array


     วันนี้ประสบความสำเร็จในการศึกษา วิธีสร้าง Web Services ด้วย PHP โดยใช้libraryของ nusoap  ให้สามารถคืนค่าข้อมูลที่เรียกใช้งานไปยังฝั่งClient ในรูปแบบของArrayได้ ผมได้เจอปัญหางงๆอยู่พักนึง คือ ไม่แสดงผลลัพธ์แบบในบทความของฝรั่งที่ผมได้ศึกษา ทั้งที่โค๊ดก็ถูกต้องหมดแล้ว และแสดง Error ประมาณว่า XML error parsing SOAP payload on line 2: Invalid document end

     ซึ่งก็สรุปได้ว่า มันไม่ค่อยรองรับการรีเทิร์นค่าแบบอาเรย์หลายมิติใน PHP เวอร์ชั่นที่ผมใช้งานอยู่ครับ คือ 5.4.2 ก็เลยกลับมาใช้ 5.2.10 และเวอร์ชั่น 5.3 ก็รองรับเหมือนกันครับ ดาวน์โหลดได้จาก http://sourceforge.net/projects/nusoap/    ให้แตกไฟล์ออกมาจะได้โฟลเดอร์ lib กับ samples แล้วCopyเอาไว้ในโฟลเดอร์โปรเจ็คของคุณได้เลย  สำหรับของผม ผมเอาไว้ในโฟเดอร์โปรเจ็คชื่อ soap ซึ่งก็ถือว่าเราได้ติดตั้ง nusoap Web Services สมบูรณ์แล้วครับ
     ต่อไปเราจะมาทดลองเขียนโค๊ดง่ายๆ ในการดึงข้อมูลสินค้าจากฐานข้อมูลร้านค้าออนไลน์มาแสดงกัน โดยเราจะเขียนCodeในฝั่ง Server กับ ฝั่ง Client กันครับ
     ผมได้สร้างโค๊ดฝั่ง Server โดยตั้งชื่อไฟล์ว่า myserver.php และฝั่ง Client ตั้งชื่อว่า myclient.php
ไฟล์ myserver.php เราจะเขียนโค๊ดดังนี้

วันพุธที่ 7 สิงหาคม พ.ศ. 2556

สอน Web Services (เว็บเซอร์วิส) PHP ตอนที่ 1


     ในการทำเว็บไซต์ทางด้านธุรกิจ อย่างเช่น Web E-Commerce  (ร้านค้าออนไลน์,เว็บขายของ)เราอาจมีเว็บไซต์ในเครืออยู่หลายเว็บไซต์ และมีเว็บหลักอยู่ 1 เว็บ ซึ่งมีข้อมูลสำคัญต่างๆ ของสินค้า สมาชิก หรือข้อมูลสำคัญอื่นๆ อยู่ในเว็บหลักนี้ทั้งหมด แต่ถ้าเราอยาก กระจายข้อมูลจากเว็บแม่ไปยังเว็บลูกด้วย โดยให้ใช้ฐานข้อมูลเฉพาะบางส่วน เช่น ให้สามารถเข้าถึงเทเบิลสามาชิกได้ แสดงข้อมูลได้เท่านั้น แต่ไม่สามารถเพิ่ม,แก้ไข,ลบข้อมูล หรือต้องการให้แสดงสินค้าเฉพาะบางหมวดเท่านั้น เป็นต้น
     เราอาจใช้วิธีแชร์ข้อมูลแบบง่ายๆ โดยให้เว็บแม่สร้าง feed.xml ให้เว็บลูกเข้าไปดึงข้อมูลในรูปแบบ XML มาแสดงได้ แต่ก็ยังขาดความปลอดภัยของข้อมูลอยู่ดีครับ เพราะคนอื่นๆสามารถเข้าถึงข้อมูลและดึงข้อมูลของเราไปใช้ได้ และความสามารถจะถูกจำกัดได้แค่แสดงข้อมูลเท่านั้น ไม่สามารถกำหนดให้ เพิ่ม/ลบ/แก้ไขข้อมูลได้
     เว็บเซอร์วิส (Web Services) จึงถูกสร้างมา เพื่อเข้าถึง/จัดการกับข้อมูลระหว่างคอมพิวเตอร์ โดยเฉพาะเลยครับ เราสามารถสั่งให้มันบริการข้อมูลต่างๆได้ดั่งใจของเราเลย โดยสามารถกำหนดสิทธิ์ ให้แสดง เพิ่ม ลบ แก้ไขข้อมูล ในเทเบิลนี้ได้ เทเบิลนั้นเข้าได้แต่ต้องมีรหัสผ่าน
ยกตัวอย่างเช่น ระบบ Login ของ Facebook ครับ ซึ่งสามารถนำมาติดหน้าเว็บไซต์ของเรา แทนหน้าล็อกอินของเราได้ โดยที่สมาชิกไม่จำเป็นต้องสมัครสมาชิก จากหน้าเว็บไซต์ของเรา สามารถเอา Account ของ Facebook มาใช้งานกับเว็บไซต์ของเราได้เลย