สอบถามการใช้งาน PhpSpreadsheet ร่วมกับ Ajax เพื่อส่งเงื่อนไขไปคิวรี่ในฐานข้อมูล

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามการใช้งาน PhpSpreadsheet ร่วมกับ Ajax เพื่อส่งเงื่อนไขไปคิวรี่ในฐานข้อมูล

สอบถามการใช้งาน PhpSpreadsheet ร่วมกับ Ajax เพื่อส่งเงื่อนไขไปคิวรี่ในฐานข้อมูล






จากรูป ต้องการสร้างฟอร์มให้ user เลือกเงื่อนไขคอลัมน์ที่ต้องการ และกดปุ่มดาวน์โหลดไฟล์ Excel เพื่อบันทึกไฟล์ลงในคอมพิวเตอร์อัตโนมัติ (ใช้ type=button และ click function ส่งค่าผ่าน ajax ไปยังหน้า gen ไฟล์ excel)

อยากสอบถามว่า...

(1) หน้าฟอร์มจะส่งค่าชื่อคอลัมน์ (ภาษาไทย) ที่จะใช้ในไฟล์ excel และส่งค่าชื่อฟิล์ดที่จะใช้ในการคิวรี่จากฐานข้อมูลได้อย่างไรครับ
(2) หน้า gen ไฟล์ excel จะรับค่าที่ user ทำการเลือกได้อย่างไร เพื่อนำชื่อคอลัมน์ (ภาษาไทย) ไปเป็นชื่อคอลัมน์ใน excel และค่าชื่อฟิล์ดไปคิวรี่จากฐานข้อมูลได้ครับ

...รบกวนขอคำแนะนำด้วยครับ ขอบคุณมากครับ

ปล. ได้ลองศึกษาเบื้องต้นจากตัวอย่างนี้ https://www.ninenik.com/tag_คำสั่ง_วิธีการ_ใช้งาน_การประยุกต์_ตัวอย่าง_เกี่ยวกับ-phpspreadsheet (ตอนที่ 3)


Hardalways 09-10-2022 16:58:22

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
เลี่ยงการส่งข้อมูลโดยตรงเป็นภาษาไทย ส่งแบบอ้างอิงเป็นตัวเลข แล้วกำหนดค่าเป็น array ใน
ส่วนที่รับข้อมูล
เช่นส่งค่าไปเป็น 1,3,4 เป็นแบบ string ข้อความ
หรือจะส่งเป็นแบบ array [1,3,4] ก็ได้
ส่วนไฟล์ที่รับค่อยกำหนดตัวแปรอ้างอิง key ให้ตรงกับค่าที่ส่งเข้ามาเช่น
$data_arr = ["1"=>"คอลัมน์ A","2"=>"คอลัมน์ B","3"=>"คอลัมน์ C","4"=>"คอลัมน์ D"];
ถ้าส่งมาแค่ 1 ก็จะได้
$data_arr[1] เท่ากับ คอลัมน์ A 
 
ประมาณนี้เป็นต้น


บทความแนะนำที่เกี่ยวข้อง
ทบทวนพื้นฐาน ajax ใน jquery การส่งค่าและแสดงข้อมูลเบื้องต้นอ่าน 30,418
จัดรูปแบบข้อมูลในพิกัด Cell ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 3อ่าน 6,672
ninenik 10-10-2022
 ความคิดเห็นที่ 2
ขอรบกวนเพิ่มเติม พอจะมีตัวอย่างในการสร้าง excel ไฟล์ โดยการส่งค่าแบบ ajax ไหมครับ...

คือตอนนี้ลองทดสอบโดยยังไม่ต้องส่งเงื่อนไขใด ๆ คลิกปุ่มแล้วมันนิ่ง ไม่มีอะไรเกิดขึ้น (คลิกปุ่มเพื่อให้ไป gen ไฟล์ excel ทั้งเทเบิ้ล ยังไม่ต้องระบุเงื่อนไขใด ๆ) แต่ถ้ารันไฟล์ gen excel โดยตรง จะบันทึกไฟล์ลงเครื่องได้ปกติครับ

ขอบคุณมากครับ


hardalways 10-10-2022 03:01
 ความคิดเห็นที่ 3
ajax เป็นแค่การรันไฟล์อยู่เบื้องหลัง ถ้า gen excel โดยตรงได้ เราก็แค่
เอาไฟล์ที่ gen โดยตรงมาเรียกใช้ผ่าน ajax ก็ทำงานได้ปกติ เกี่ยวกับ ajax
ดูลิ้งค์ด้านล่างเป็นแนวทาง


บทความแนะนำที่เกี่ยวข้อง
ทบทวนพื้นฐาน ajax ใน jquery การส่งค่าและแสดงข้อมูลเบื้องต้นอ่าน 30,418
ninenik 10-10-2022
 ความคิดเห็นที่ 4
ขอบคุณสำหรับคำแนะนำครับ


hardalways 10-10-2022 12:14
 ความคิดเห็นที่ 5
รบกวนสอบถามเพิ่มเติมอีกหน่อยครับ จากตัวอย่างในตอนที่ 3 หัวข้อ "การจัดรูปแบบข้อมูลในพิกัด Cell"

// กำหนดหัวข้อคอลัมน์
$columnName = ['id','integer','double','string','null','str_int','str_double','str_fraction','str_percent','str_zerolead','date','datetime'];
$sheet->fromArray($columnName)
->fromArray(
    $arrayData,  // ตัวแปร array ข้อมูล
    NULL,        // ค่าข้อมูลที่ตรงตามค่านี้ จะไม่ถูกำหนด
    'A2'         // จุดพิกัดเริ่มต้น ที่ใช้งานข้อมูล เริ่มทึ่มุมบนซ้าย  หากไม่กำหนดจะเป็น "A1" ค่าเริ่มต้น
    );
 
$sheet->getStyle('J2:J12') // กำหนดช่วงพิกัด Cell ที่ต้องการกำหนดรูปแบบช้อมูล
->getNumberFormat()
->setFormatCode('0000000000'); // จัดรูปแบบ คล้ายกำหนดรูปแบบข้อมูล กรณีนี้เป็นเบอร์โทร 10 หลัก
กรณีที่ user เลือกคอลัมน์ที่จะออก excel ได้เอง ช่วงพิกัด ('J2:J12') ที่กำหนดรูปแบบข้อมูล อาจจะเปลี่ยนเป็นคอลัมน์อื่น เช่น

- ถ้าเลือกคอลัมน์ก่อนหน้าน้อยกว่าตัวอย่าง คอลัมน์ J อาจะกลายเป็นคอลัมน์ D
- ถ้าเลือกคอลัมน์ก่อนหน้ามากกว่าตัวอย่าง คอลัมน์ J อาจจะกลายเป็นคอลัมน์ N

พอจะแนะนำการเขียนที่ยืดหยุ่นไปตามเงื่อนไขของ user หรือมีไกด์ไลน์ ที่จะให้เอาคำไปค้นใน google ต่อได้บ้างไหมครับ (คือตอนนี้ทำให้ user เลือกเงื่อนไขและออก Excel โดยแสดงชื่อคอลัมน์และข้อมูลจากฐานฯ ได้ถูกต้อง สัมพันธ์กันแล้ว ติดตรงการจัดรูปแบบที่จะทำยังไงให้รู้ว่าข้อมูลจากฐานฯ คอลัมน์นี้ รูปแบบต้องเป็นตัวเลขและทศนิยม 2 ตำแหน่ง ยังอ้างอิงเซลล์แบบยืดหยุ่นไม่ถูกครับ)

ขอบคุณมากครับ


hardalways 15-10-2022 16:45
 ความคิดเห็นที่ 6
การจะกำหนดว่า พิกัดไหน เป็นข้อมูลอะไร แสดงว่าการส่งข้อมูลมา เราต้องส่งทั้งข้อมูล และชนิดข้อมูล
มาพร้อมกัน ในตัวอย่าง เรากำหนดตายตัวตามรูปแบบข้อมูลที่ต้องการอยู่แล้ว เราจะรู้ว่าคอลัมน์ไหนเป็นอะไร
ดังนั้น ถ้าจะให้สามารถแยกได้ ก็ต้องประยุกต์เพิ่ม คือ ส่งคอลัมน์อะไร มา และเป็นข้อมูลชนิดไหน อาจจะใช้เป็นรหัส
โค้ดก็ได้ เช่น J11 J คือคอลัมน์ 11 อ้างอิงเป็นข้อมูล int ตัวเลข พอส่งค่าเราก็ต้องสร้าเงื่อนไข นำข้อมูลมาแยก
ตรวจสอบ และจัดรูปแบบ แนวทางประมาณนี้


ninenik 16-10-2022
 ความคิดเห็นที่ 7
ขอบคุณสำหรับคำแนะนำครับ


hardalways 17-10-2022 17:29
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ