สอบถามการใช้งาน 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)

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
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 การส่งค่าและแสดงข้อมูลเบื้องต้น | อ่าน 31,162 |
จัดรูปแบบข้อมูลในพิกัด Cell ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 3 | อ่าน 7,040 |

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

ความคิดเห็นที่
3
ajax เป็นแค่การรันไฟล์อยู่เบื้องหลัง ถ้า gen excel โดยตรงได้ เราก็แค่
เอาไฟล์ที่ gen โดยตรงมาเรียกใช้ผ่าน ajax ก็ทำงานได้ปกติ เกี่ยวกับ ajax
ดูลิ้งค์ด้านล่างเป็นแนวทาง
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
ทบทวนพื้นฐาน ajax ใน jquery การส่งค่าและแสดงข้อมูลเบื้องต้น | อ่าน 31,162 |

ความคิดเห็นที่
4
ขอบคุณสำหรับคำแนะนำครับ

ความคิดเห็นที่
5
รบกวนสอบถามเพิ่มเติมอีกหน่อยครับ จากตัวอย่างในตอนที่ 3 หัวข้อ "การจัดรูปแบบข้อมูลในพิกัด Cell"
กรณีที่ user เลือกคอลัมน์ที่จะออก excel ได้เอง ช่วงพิกัด ('J2:J12') ที่กำหนดรูปแบบข้อมูล อาจจะเปลี่ยนเป็นคอลัมน์อื่น เช่น
- ถ้าเลือกคอลัมน์ก่อนหน้าน้อยกว่าตัวอย่าง คอลัมน์ J อาจะกลายเป็นคอลัมน์ D
- ถ้าเลือกคอลัมน์ก่อนหน้ามากกว่าตัวอย่าง คอลัมน์ J อาจจะกลายเป็นคอลัมน์ N
พอจะแนะนำการเขียนที่ยืดหยุ่นไปตามเงื่อนไขของ user หรือมีไกด์ไลน์ ที่จะให้เอาคำไปค้นใน google ต่อได้บ้างไหมครับ (คือตอนนี้ทำให้ user เลือกเงื่อนไขและออก Excel โดยแสดงชื่อคอลัมน์และข้อมูลจากฐานฯ ได้ถูกต้อง สัมพันธ์กันแล้ว ติดตรงการจัดรูปแบบที่จะทำยังไงให้รู้ว่าข้อมูลจากฐานฯ คอลัมน์นี้ รูปแบบต้องเป็นตัวเลขและทศนิยม 2 ตำแหน่ง ยังอ้างอิงเซลล์แบบยืดหยุ่นไม่ถูกครับ)
ขอบคุณมากครับ
1 2 3 4 5 6 7 8 9 10 11 12 | // กำหนดหัวข้อคอลัมน์ $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 หลัก |
- ถ้าเลือกคอลัมน์ก่อนหน้าน้อยกว่าตัวอย่าง คอลัมน์ J อาจะกลายเป็นคอลัมน์ D
- ถ้าเลือกคอลัมน์ก่อนหน้ามากกว่าตัวอย่าง คอลัมน์ J อาจจะกลายเป็นคอลัมน์ N
พอจะแนะนำการเขียนที่ยืดหยุ่นไปตามเงื่อนไขของ user หรือมีไกด์ไลน์ ที่จะให้เอาคำไปค้นใน google ต่อได้บ้างไหมครับ (คือตอนนี้ทำให้ user เลือกเงื่อนไขและออก Excel โดยแสดงชื่อคอลัมน์และข้อมูลจากฐานฯ ได้ถูกต้อง สัมพันธ์กันแล้ว ติดตรงการจัดรูปแบบที่จะทำยังไงให้รู้ว่าข้อมูลจากฐานฯ คอลัมน์นี้ รูปแบบต้องเป็นตัวเลขและทศนิยม 2 ตำแหน่ง ยังอ้างอิงเซลล์แบบยืดหยุ่นไม่ถูกครับ)
ขอบคุณมากครับ

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

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

ขอบคุณทุกการสนับสนุน
![]()