อยากให้เขียน php อ่านไฟล์ text ที่มีลักษณะดังนี้ครับ

ตัวอย่างไฟล์

aaa  bbbb           ccccc                    ddd eee          ffffffffffffff
aaa     bbbb       ccccc            ddd eee      ffffffffffffff

aaa  bbbb      ccccc            ddd eee      ffffffffffffff
aaa     bbbb     ccccc       ddd eee      ffffffffffffff


ตัวอย่างไฟล์ สังเกตได้ว่ามี หลายแถวแล้วก็หลายคอลัม จะทำยังไง
ให้เราสามารถ เก็บข้อมูลลงใน database ได้อะครับ

อยากให้เก็บอย่างนี้อะครับ

"INSERT INTO TABLE(data1,data2,data3,data4,data5,data6)VALUES('?????????????????????????????????????')";

จะแยกข้อมูลออกจาก TEXT FILE ได้อย่างไรครับ

กรกฎ วิริยะ 17 Jul 2009 13:33
เอาหลักการไป

1. อ่านออกเป็นแถวด้วย file()
2. วนลูปแยกแต่ละแถวออกเป็นคอลัมน์ ด้วย explode()

ถ้ารู้จักประยุกต์ใช้คำสั่ง ก็ไม่มีอะไรยาก
Wanchana yoojuy 17 Jul 2009 14:43

รบกวนอีกทีครับ 

$data = "aaa  bbbb           ccccc                              ddddd";

แล้วเราจะตัดได้อย่างไรครับ


$data_ex = explode("????",$data); 

ในเมื่อความยาวของช่องไฟไม่แน่นอนเลย 
 

กรกฎ วิริยะ 17 Jul 2009 15:40
ใช้ preg_match() หรือใช้ explode() แบบเดิมแหละ แต่วนลูปเอา อันไหนไม่มีค่าก็ไม่ต้องบันทึก

ผมว่าคำถามนี้เหมือนคำถามลองภูมิมากกว่า เหมือนผู้ถาม ถามโดยไม่ได้ต้องการคำตอบที่แท้จริงไป เพราะ เงื่อนไขของคำถาม ดูไม่ค่อยเป็นธรรมชาติ ถ้าเป็นตัวอย่างที่เกิดขึ้นจริง ลองอธิบายที่มาของข้อมูลมาให้หน่อยซิ
Wanchana yoojuy 17 Jul 2009 15:53
ขออภัยท่านอาจารย์ครับที่ทำให้เข้าใจผิด
ไม่ได้มีเจตนาเช่นนั้นครับ

คือไฟล์ที่ถามไม่ได้คิดมาเองครับ พอดีผมต้องทำงานแล้วก็ต้อง Decode ไฟล์การสั่งสินค้าจากลูกค้าครับ
ซึ่งไฟล์ผมได้ลองใส่เป็นภาพมาให้ดูครับ

เดี๋ยวผมจะลองทำตามที่อาจารย์บอกนะครับ ถ้าไม่ได้หรือติดอะไร จะรบกวนถามต่อนะครับ

ลองดูตัวอย่างไฟล์ตามภาพนะครับ

กรกฎ วิริยะ 17 Jul 2009 16:11
อืม จากรูป เงื่อนไขนี้คงใช้ไม่ได้มั้ง อาจต้องหาตัวเลือกอื่น เนื่องจากมีบางฟิลด์ที่มีช่องว่างภายในฟิลด์ เช่น M IMCTM ซึ่งมีช่องว่างภายในข้อมูล เงื่อไขนี้จะทำให้ตัดคำได้ยาก เนื่องจากโปรแกรมจะแยกแยะไม่ออกว่าส่วนไหนคือข้อความที่ต้องตัด และอีกข้อนึงคือ แต่ละบรรทัดมีข้อมูลไม่เท่ากัน หรืออาจไม่สอดคล้องกัน ก็อาจทำให้การตัดเป็นไปได้ยากมากขึ้น

แนวคิดที่ดีกว่า คือ การเตีรยมข้อมูลเพื่อให้การตัดง่ายขึ้น ซึ่งก็ต้องย้อนกลับไปดูที่แหล่งที่มาของข้อมูล ว่าสามารถเปลี่ยนเป็นรูปแบบอื่นได้หรือไม่ ถ้าได้จะทำให้การทำงานง่ายขึ้นและลดความผิดพลาดของข้อมูลลง เข่น การคัันแต่ละฟิลด์ด้วยตัวคั่นอื่น เช่น data1|data2|data3 ซึ่งการแยกออกเป็น array จะง่ายขึ้นครับ
Wanchana yoojuy 17 Jul 2009 16:34
ขอบคุณครับสำหรับคำตอบ
แต่ยากครับสำหรับให้ทางลูกค้าแก้ข้อมูล เขาอาจจะ export มาจากโปรแกรมอะไรหรือปล่าวก็ไม่ทราบครับ
เดี๋ยวยังไงลองเขียนดูก่อนครับ ถ้าไม่ได้ยังไง จะมาถามใหม่ครับ

ขอบพระคุณ อาจารย์มากครับ