11 July 2010

Upload Depress online v2.12.17 แล้วยอดที่แสดงผลออกมาไม่ตรงกับยอดที่ได้จากโปรแกรม

หลังจากที่ผมพบปัญหาในการ upload file เข้าไปที่ depress online v 2.12.17 แล้วยอด ที่แสดงผลออกมาไม่ตรงกับยอดที่ได้จากโปรแกรมนั้น
ผมได้ทำการแกะ code ของ ไฟล์ upload2.php ใน folder tools แล้วพบว่า คำสั่ง sql ชุดหนึ่งที่เป็นหา ใน บรรทัด ที่ 170 ตรงเงื่อนไขที่ใช้ค้นหา ใน code ระบุว่าให้หาเฉพาะข้อมูลของวันที่กรอกข้อมูล (date_serv) ถ้าหากเจอวันเดียวกันให้ update แต่ถ้า
เป็นคนละวันให้ insert เพียงเท่านั้น โดยไม่ได้ได้ระบุเฉพาะเจาะจง โดยใช้หมายเลขบัตรประชาชนกำกับ ทำให้เวลา ใช้คำสั่ง sql ชุดนี้ หากมีคนที่มี date_serv ตรงกันและ import ไปก่อนหน้า ระบบจะมองว่าหาเจอ 1 record แล้วทำการใช้คำสั่ง
Update โดยใช้เงื่อนไขเป็น CID เมื่อ แต่คำสั่ง update จะไม่เป็นผลเนื่องเงื่อนไขไม่ถูกต้องนั่นเอง ทำให้การแสดงผลไม่ครบครับ กล่าวคือ หาก มี date_serv ที่แตกต่างกันแค่ 6 วัน ก็จะมีแค่ 6 record ครับ หากเป็นวันเดียวแตบังเอิญว่า
Record แรก 2qsocre ไม่ผ่านแล้วละก็ โปรแกรมก็จะไม่แสดงผลใดๆเลยครับ

หลังจากที่ผมเพิ่ม เงื่อนไข “ and cid = ‘$aa[2]’ ” เข้าไปแล้ว ข้อมูลที่ได้ก็ตรงกันกับยอดที่ได้ครับ


วิธีแก้เรื่องนี้ คุณบรรจบแก้ไขให้แล้วครับ สามารถ download update ได้ที่นี่
http://203.157.181.13/hosxp_board/view.php?category=depression&wb_id=202
หรือ http://203.157.181.13/hosxp_board/db_hosxpwb/imagefiles/depression202.zip
โดยแก้ที่ไฟล์ upload.php และ upload2.php ครับ เท่าที่ตรวจสอบแล้ว ก็โอเคครับ


ป.ล. ส่วนใหญ่แล้วผู้ที่นำ v.2.12.17 ไปใช้แล้วเกิดปัญหานั้น อาจเนื่องมาจากไม่ได้ upgrade structure เนื่องจาก หาปุ่ม ไม่ได้ upgrade structure ไม่เจอ หรือ อาจเพราะไฟล์ alert_table ถูกมองว่าเป็นไวรัส (อาจเพราะชื่อมันก็ได้ครับ)
ทำให้ไฟล์ดังกล่าวหาย หรือ ถูกลบในทันที admin ที่ดูแลจึงไม่สามารถทำ upgrade ได้ ผมได้ลองทำให้ scan virus ไม่ scan ที่ folder ที่ใช้เก็บ file นี้ (tools) ปรากฏว่า ผมก็สามารถทำการ upgrade สำเร็จครับ.



No comments: