วันอังคารที่ 18 เมษายน พ.ศ. 2560

CSV File กับการเก็บข้อมูลจากเว็บลงฐานข้อมูล

    จากบทความที่แล้วได้อธิบายถึง Dynamic Web เอาไว้ว่า มักจะมีการนำฐานข้อมูลมาเพื่อใช้บันทึกข้อมูลจากเว็บลงไปหรือไม่ก็ดึงข้อมูลออกมาใช้ เพราะงั้นในบทความนี้เราก็จะมาทำเว็บที่มีการใช้ฐานข้อมูลกัน ซึ่งชนิดของไฟล์ที่เราจะใช้สำหรับเก็บข้อมูลนั้นมีชื่อว่า "CSV"
    ทีนี้เรามาทำความรู้จักเจ้า CSV File นี้กันก่อนนะ

ไฟล์ CSV คืออะไร?
    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 คน.

ไม่มีความคิดเห็น:

แสดงความคิดเห็น