A-AA+then

แนวทางสร้าง PDF

905
สอบถามความคิดเห็นครับ....
สมมติว่า --- มีชุดข้อมูลประมาณ "ข้อมูลทั่วไปบุคคล" (ประมาณ 15-20 ฟิลดิ์) เพื่อส่งไปสร้างไฟล์ PDF โดยที่ปกติก็จะมีหน้าดูข้อมูลก่อนที่จะสร้าง PDF อยู่แล้ว (query เพื่อตรวจสอบหรือเพื่อแก้ไขบางข้อมูลอยู่แล้ว)

              อยากทราบว่าเราควรจะใช้วิธีไหน ระหว่าง....
              1. จะส่งตัวแปรบางตัวไป query ที่ไฟล์ php สำหรับสร้าง PDF ซึ่ง หมายความว่าต้อง connect และ query ทุกครั้งที่สร้าง PDF (ส่วนตัวคิดว่าแบบนี้จะทำให้ใช้ฐานข้อมูลมากเกินความจำเป็นหรือเปล่า)
              2. ส่งข้อมูลที่ query เรียบร้อยแล้ว -- หมายถึง ส่งข้อมูลจาก element ที่เกิดขึ้นจากหน้าดูข้อมูลก่อนสร้าง PDF ซึ่งจะต้องส่งข้อมูลทั้ง 15-20 ฟิลดิ์นั้นไปเลยทั้งหมดผ่าน Ajax (ส่วนตัวคิดว่าแบบนี้น่าจะมีผลกับฐานข้อมูลน้อยกว่า)

ลักษณะงานเป็นการทำงานภายในองค์กรเท่านั้น เพราะฉะนั้นเรื่อง trafic ไม่มีปัญหา จากคำถามเป็นตัวอย่างเท่านั้น เพราะในงานจริงจะมีชุดข้อมูลที่ต้องส่งไปสร้าง PDF หลายชุด ประกอบกับฐานข้อมูลจะมีการประมวลผลในงานอื่นๆอยู่เกือบตลอดเวลา ผมแยก Process ของ web service กับ Database ออกคนละเครื่องอยู่แล้ว

4 ความคิดเห็น

จากคำถาม มี 2 ข้อที่เป็นปัจจัยที่ควรคำนึงถึง (ปัญหาโดยทั่วไปที่อาจจะเกิด)
1.ส่ง id เพื่อ query ข้อมูลอีกครั้ง
2.ส่งข้อมูลไปเพื่อการทำงานต่อเลย

ข้อแรก มีข้อเสียที่สำคัญก็คือ query จำนวนมากขึ้น อันเนื่องมาจากต้อง query ข้อมูลเพื่อไปสร้างเอกสาร แต่วิธีนี้มีข้อดีในเรื่องความปลอดภัยและความทันสมัยครับ เพราะข้อมูลต่างๆถูกอ่านมาจากฐานข้อมูลเสมอ ดังนั้นหากข้อมูลนั้นๆเป็นข้อมูลที่ต้องการความปลอดภัยสูง หรือ ข้อมูลที่ต้องมีการอัปเดทอยู่ตลอดเวลา (จากผู้อื่น) ก็ควรใช้วิธีอ่านจากฐานข้อมูลเสมอ

ข้อที่สอง จุดประสงค์ก็เพื่อลดการ query ข้อดีของมันก็คือลด query นี่แหละ แต่ข้อเสียก็มี เช่น ข้อมูลอาจจสูญหายได้ อันเนื่องมาจากขีดจำกัดของปริมาณการรับส่งข้อมูล ทำให้ได้ข้อมูลไปถึงปลายทางไม่ครบถ้วน หากข้อมูลมีปริมาณมาก และ การเสียเวลาในช่วงการส่ง อันเนื่องมาจาก ข้อมูลจะถูกส่งด้วยปริมาณอันจำกัดจำนวนหนึ่งในแต่ละครั้ง (ข้อมูลการจราจรทางคอมพิวเตอร์จะถูกส่งโดยแบ่งออกเป็น package)ซึ่งถ้าปริมาณ trafic มีเป็นจำนวนมาก วิธีนี้อาจไม่คุ้มค่าครับ

การจะเลือกใช้วิธีใดก็ขึ้นกับลักษณะของงานแหละครับ ลองพิจารณาให้เหมาะสมละกัน
1

    ขอบพระคุณมากครับ...
          จากคำตอบของคุณ gOragod ผมคงคงต้องใช้ทั้งสองวิธีตามแต่ละงานดีกว่า เพราะจากข้อดีข้อเสียทั้งหมดคงจะละเลยไม่ได้
    
    งั้นขอถามเพิ่มเติมนะครับ...
           ในฟิลดิ์ข้อมูลบางครั้งจะมีเครื่องหมายที่ใช้แทนสัญลักษณ์ "inch" (double quote) เวลาที่นำมาใส่ไว้ในตัวแปรของ php ทำให้บางครั้งมันมองเป็นเครื่องหมายปิดข้อความ ทำให้ข้อมูลที่แสดงออกมาขาดหายไปบางส่วน ถ้าเราไม่ใช้ string replace จะมีวิธีอื่นอีกหรือไม่ครับ

2

อ้างจากคำตอบที่ #2ในฟิลดิ์ข้อมูลบางครั้งจะมีเครื่องหมายที่ใช้แทนสัญลักษณ์ "inch" (double quote) เวลาที่นำมาใส่ไว้ในตัวแปรของ php ทำให้บางครั้งมันมองเป็นเครื่องหมายปิดข้อความ ทำให้ข้อมูลที่แสดงออกมาขาดหายไปบางส่วน ถ้าเราไม่ใช้ string replace จะมีวิธีอื่นอีกหรือไม่ครับ

มี 2 วิธีหลักๆ ขึ้นกับสถาณการณ์นะครับ

1. เติม \ ใส่ลงไป แค่นี้ก็ไม่มีปัญหาต่อตัวแปรแล้ว
2. แปลงเป็นตัวอักษรของ HTML &quote; สำหรับการแสดงผลที่เป็น HTML ครับ

ปกติแล้วการเปลี่ยนข้อความที่เป็นปัญหาให้เป็นสัญลักษณ์อื่นก็คุ้มค่าครับ เพราะบางครั้งถ้าเป้นข้อมูลที่เราควบคุมไม่ได้ว่า USER จะกรอกอะไรมา เราก็จำเป็นต้องความคุมตัวอักษรเหล่านั้นด้วยตัวเองครับ

ปล. ปกติที่ผมใช้บ่อยๆ ก็คือการเข้ารหัสครับ เช่น เข้าด้วย rawurlencode() ถอดด้วย rawurldecode() เป็นต้น แต่ข้อเสียก็คือการทำงานที่ซ้ำซ้อน เราะต้องเข้าและถอดตลอดเวลา แต่ถ้าการป้องกันหรือการตรวจหามันยุ่งยากกว่า การแปลงมันไปเลยก็ง่ายดีครับ 
3

ขอบพระคุณมากครับ... (ตอนนี้นึกคำถามไม่ออก เท่านี้ก่อนละกัน)
4
^