run auto_number ในฐานข้อมูลแบบมีตัวอักษรด้วย
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา run auto_number ในฐานข้อมูลแบบมีตัวอักษรด้วย
run auto_number ในฐานข้อมูลแบบมีตัวอักษรด้วย
รบกวนช่วยดูโค้ดการรันเลขที่โดยมีตัวอักษรในฐานข้อมูลหน่อยค่ะ
พอดีมันรันไปถึง TOP2017-08/10 แล้วข้าม ไปเป็น TOP2017-08/19 เลย แก้ปัญหายังไงค่ะ อยากให้มันรัน TOP2017-08/11 12 13 .... ไปเรื่อย ๆ
หรือโค้ดผิดตรงไหน ผู้รู้ช่วยแนะนำทีค่ะ

พอดีมันรันไปถึง TOP2017-08/10 แล้วข้าม ไปเป็น TOP2017-08/19 เลย แก้ปัญหายังไงค่ะ อยากให้มันรัน TOP2017-08/11 12 13 .... ไปเรื่อย ๆ
หรือโค้ดผิดตรงไหน ผู้รู้ช่วยแนะนำทีค่ะ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
จริงๆ รูปแบบที่ใช้ไม่น่าจะถูกต้อง และค่าก็จะขึ้นกับตอน select ข้อมูล
ถ้ายึดการเรียงข้อมูลตามตัวอักษร การวนลูปค่าก็จะผิด เช่น
10 จะมาก่อน 2 ในลักษณะ 1 10 2 3 4 5 6 7 8 9 เหมือนกับใน db ที่แสดงในคำถามตามรูป
หรือก็คือ
A/10
จะมาก่อน A/2 ทำให้การวนลูปและกำหนดค่าไม่ถูกต้อง วิธีแก้มีหลายวิธีขึ้นกับความเข้าใจ
ถ้าให้แนะนำอย่างง่าย ก็คือเอาค่ามาเก็บไว้ใน array แล้วจัดรูปแบบการจัดการเรียง โดยแปลง
ค่าเป็นรูปแบบตัวเลขแทนข้อความ แล้วจัดเรียงค่าใหม่จากค่าน้อยไปมาก แล้ว ดึงค่าตัวสุดท้าย
ที่เป็นค่ามากสุดมากำหนด max ดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $arr_data = array ( "A/1" , "A/2" , "A/3" , "A/4" , "A/6" , "A/7" , "A/8" , "A/9" , "A/10" ); asort( $arr_data ); $arr_no = array (); foreach ( $arr_data as $v ){ list( $topic , $no )= explode ( "/" , $v ); $arr_no []=(int) $no ; } asort( $arr_no ); // เรียงค่าจากน้อยไปมาก $max = array_pop ( $arr_no ); // ดึงค่าตัวสุดท้ายมาใช้งาน echo $max ; |
ถ้าประยุกต์ตามโค้ดเดิมก็ประมาณนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 | $max =0; $arr_no = array (); if (...............){ while (...........){ list( $topic , $no )= explode ( "/" , $rs [ 'topic_id' ]); $arr_no []=(int) $no ; } asort( $arr_no ); // เรียงค่าจากน้อยไปมาก $max = array_pop ( $arr_no ); // ดึงค่าตัวสุดท้ายมาใช้งาน $max = $max +1; } else { $max =1; } |

ความคิดเห็นที่
2
ขอบคุณค๊าาา จะนำไปแก้ไขลองดูค่ะ 





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