ทีนี้เรามาทำความรู้จักเจ้า CSV File นี้กันก่อนนะ
ไฟล์ CSV คืออะไร?
CSV นั้นย่อมาจาก Comma Separated Value เป็นไฟล์ข้อความประเภทหนึ่งที่ใช้สำหรับเก็บข้อมูลในรูปแบบตาราง จะใช้เครื่องหมายจุลภาค หรือคอมม่า (,) เป็นตัวแบ่งแต่ละคอลัมน์ ซึ่งโดยปกติแล้วเราสามารถบันทึกไฟล์จาก Microsoft Excel ออกมาเป็น CSV ไฟล์ได้โดยตรง หรือ อาจได้ไฟล์ CSV จากการ export ไฟล์จากระบบฐานข้อมูลอื่นๆก็ได้
CSV นั้นย่อมาจาก Comma Separated Value เป็นไฟล์ข้อความประเภทหนึ่งที่ใช้สำหรับเก็บข้อมูลในรูปแบบตาราง จะใช้เครื่องหมายจุลภาค หรือคอมม่า (,) เป็นตัวแบ่งแต่ละคอลัมน์ ซึ่งโดยปกติแล้วเราสามารถบันทึกไฟล์จาก Microsoft Excel ออกมาเป็น CSV ไฟล์ได้โดยตรง หรือ อาจได้ไฟล์ CSV จากการ export ไฟล์จากระบบฐานข้อมูลอื่นๆก็ได้
จุดเด่นของไฟล์ CSV File
- รองรับการใช้งานกับโปรแกรมฐานข้อมูลต่างๆ รวมทั้ง Microsoft Excel
- รองรับการเปิดไฟล์ด้วยโปรแกรม Text Editor ต่างๆ รวมทั้ง Microsoft Word
- ไฟล์ที่ได้มีขนาดเล็กมาก
(ขอบคุณข้อมูลและภาพจาก : http://www.technointrend.com/csv-file/)
สร้างเว็บเพจแบบสำรวจจำนวนคนที่เกิดในแต่ละวัน
เอาล่ะ ทีนี้เราก็จะมาเริ่มสร้างหน้าเว็บเพจที่มีการใช้ CSV File ในการเก็บข้อมูลกัน โดยเว็บเพจง่ายๆที่เราจะสร้างก็คือ เว็บเพจแบบสำรวจจำนวนคนที่เกิดในแต่ละวัน
และนี่คือผลลัพธ์ที่ได้...
Birthday.html
ใน input แต่ละตัวจะนั้นใช้ name ว่า "day" เหมือนกัน แต่จะมีค่า value ต่างกันออกไป
cgi-bin/birthday.py
มาพูดถึงหลักการทำงานกัน
เมื่อเราเลือกวันแล้ว จากนั้นก็กดปุ่ม Submit! จะมีการลิงค์ไปที่ไฟล์ birthday.py โดยไฟล์นี้จะรับค่าอินพุตจากไฟล์ birthday.html มาด้วย แต่ถ้ากดที่ปุ่ม View Result จะเป็นการลิงค์ไปที่ไฟล์ birthday.py เฉยๆ ไม่มีการส่งค่าใดๆไปให้
ทีนี้มาดูโค้ดในไฟล์ birthday.py กัน เริ่มต้นเลยก็จะมีการเช็คว่ามีการส่งค่าของอินพุต day เข้ามาหรือไม่?
- หากใช่ จะทำเรียกใช่ฟังก์ชั่น update เพื่อนำค่ามาเก็บให้กับตัวแปร data โดยจะส่งค่าที่ได้จากอินพุต day ไปเป็น parameter ให้แก่ฟังก์ชั่น
- แต่ถ้าหากไม่มีการส่งค่าเข้ามาก็ให้ส่งค่า parameter เป็น ‘result’ ให้แก่ฟังก์ชั่นแทน
ในฟังก์ชั่น update นั้น ขั้นแรกจะทำการเปิดไฟล์ขึ้นมาแบบ r หรือ read-only แล้วก็ทำการอ่านข้อมูลออกมาเก็บไว้ในตัวแแปร จากนั้นก็นำข้อมูลที่ได้มาแปลงเป็น array ด้วยคำสั่ง list จะได้ออกมาเป็น array 2 มิติ เพื่อที่จะได้นำข้อมูลนี้ไปใช้หรือแก้ไขได้
จากนั้นก็เช็คว่าค่าของตัวแปร day ที่รับมาเป็น ‘result’ รึป่าว?
- หากใช่ก็ข้ามไป return data ออกมาเพื่อนำค่าไปแสดงผลได้เลย
- แต่หากค่าของ day ไม่ใช่ result ก็จะทำการวนลูปเพื่อหาว่าค่าของ day เป็นวันอะไร เมื่อเจอแล้วจึงบวกค่าจำนวนคนที่เกิดวันนั้นเพิ่มไปหนึ่ง จากนั้นก็ค่อยทำการนำค่า data เขียนกลับเข้าไปที่ไฟล์ csv แล้วสุดท้ายจึง return data ออกมา
(คำสั่ง writerows ต่างจาก writerow ตรงที่สามารถใช้ array 2 มิติเขียนข้อมูลทีเดียวได้เลย โดยในแต่ละมิติที่หนึ่งจะถูกแบ่งเป็น row และในแต่ละมิติที่สองจะถูกแบ่งเป็น column)
ค่า data ที่ได้จากเมื่อกี้ก็จะถูกนำมาใช้ในส่วนของการแสดงผล
และนี่คือผลลัพธ์ที่ได้ จะเห็นว่าจำนวนคนที่เกิดวันเสาร์เพิ่มขึ้นมาจาก 0 คนเป็น 1 คน.
ไม่มีความคิดเห็น:
แสดงความคิดเห็น