run auto_number ในฐานข้อมูลแบบมีตัวอักษรด้วย

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

run auto_number ในฐานข้อมูลแบบมีตัวอักษรด้วย
รบกวนช่วยดูโค้ดการรันเลขที่โดยมีตัวอักษรในฐานข้อมูลหน่อยค่ะ

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





Anyarut 49.231.10.xxx 04-08-2017 15:35:14

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

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


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


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

 ความคิดเห็นที่ 1
จริงๆ รูปแบบที่ใช้ไม่น่าจะถูกต้อง และค่าก็จะขึ้นกับตอน select ข้อมูล
ถ้ายึดการเรียงข้อมูลตามตัวอักษร การวนลูปค่าก็จะผิด เช่น
10 จะมาก่อน 2 ในลักษณะ 1 10 2 3 4 5 6 7 8 9 เหมือนกับใน db ที่แสดงในคำถามตามรูป
หรือก็คือ 
A/10
จะมาก่อน A/2 ทำให้การวนลูปและกำหนดค่าไม่ถูกต้อง วิธีแก้มีหลายวิธีขึ้นกับความเข้าใจ
ถ้าให้แนะนำอย่างง่าย ก็คือเอาค่ามาเก็บไว้ใน array แล้วจัดรูปแบบการจัดการเรียง โดยแปลง
ค่าเป็นรูปแบบตัวเลขแทนข้อความ แล้วจัดเรียงค่าใหม่จากค่าน้อยไปมาก แล้ว ดึงค่าตัวสุดท้าย
ที่เป็นค่ามากสุดมากำหนด max ดังนี้
 
<?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;
 
ถ้าประยุกต์ตามโค้ดเดิมก็ประมาณนี้
 
$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;
}


ninenik 183.89.90.xxx 04-08-2017
 ความคิดเห็นที่ 2
ขอบคุณค๊าาา จะนำไปแก้ไขลองดูค่ะ winkyes


anyarut 49.231.10.xxx 04-08-2017 16:20






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