ต่อยอดจาก Auto Increment แล้วคำนวณ Session ด้วยต้องทำยังไง

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ต่อยอดจาก Auto Increment แล้วคำนวณ Session ด้วยต้องทำยังไง

ต่อยอดจาก Auto Increment แล้วคำนวณ Session ด้วยต้องทำยังไง

จาก Code นี้

<?php
$autoVar1=array();
$autoVar2=array();
$connectDB = mysql_connect("localhost","root","12345") or die("Error Connect to Database");
mysql_select_db("configmaker",$connectDB);
$q="SELECT ID FROM test WHERE ID ORDER BY ID ";
$qr=mysql_query($q,$connectDB);
$i=0;
while($rs=mysql_fetch_array($qr)){
	$i++;
	$autoVar1[$rs['ID']]=$rs['ID'];
	$autoVar2[$i]=$i;
}

// เปรียบเทียบ array หาค่าที่ถูกลบ ถ้าไม่มี ให้เป็น null
$nextID=(array_shift(array_diff_key($autoVar2,$autoVar1))!="")?
array_shift(array_diff_key($autoVar2,$autoVar1)):null;
if ($nextID=="") {
		$q = "SELECT max(ID) from test";
		$result = mysql_query($q,$connectDB) or die ("Error Query [".$q."]");
		$total_max = mysql_result($result,0); 
		$nums = ++$total_max;  
		$nextID = str_pad($nums,4,"0",STR_PAD_LEFT);
		echo $nextID; // ค่า id autoincrement สำหรับเพิ่มในฐานข้อมูลเมื่อไม่มีการลบ
		mysql_close($connectDB);
}
else {
		$nextID = str_pad($nextID,4,"0",STR_PAD_LEFT);
		echo $nextID; // ค่า id autoincrement สำหรับเพิ่มในฐานข้อมูลเมื่อมีการลบ
		mysql_close($connectDB);
}
?>

 Code นี้จากหัวข้อ  ต้องการสร้าง php autonumber ที่สามารถ reuse ผมต้องการให้เมื่อเวลามี User เข้ามา หลายๆ Session แล้วมีการคำนวณ Session ที่ ดึง Page นี้เข้าไปด้วย เพื่อลดการซ้ำของ $nextID สมมุติ คนที่ 1 ได้ เข้ามาที่ หน้านี้ก่อน แล้วได้เลข 10 ไปแต่ยังไม่ทำการ save ข้อมูลไปใน Database  พอคนที 2 เข้ามาที่หน้าเดียวกันแล้วได้เลข 10 เหมือนกัน เพราะว่าตัวเลขใน Database มันยังไม่ถูกเพิ่ม แล้วคนที่ 2 ทำการ Save ข้อมูลไปใน Database  ก่อน พอคนที่ 1 ทำการ Save มันจะฟ้องว่าตัวเลขชนกัน ไม่ทราบว่าคุณ Ninenik พอมีวิธีแก้เรื่องนี้หรือไม่คนครับ ผมมีอยู่ 2 Idea แต่ไม่รู้วิธีทำ คือ

1) ทำ button ไว้ข้างๆตัวเลข $nextID เพื่อทำการกด Refresh ก่อนการ save

2) คำนวณจาก Session ในการ Login ใครเข้ามาที่หน้านี้ก่อน ก็จะได้ตัวเลขไปก่อน ถึงแม้จะไม่มีการ Save ก็ตาม พอคนที่เข้ามาทีหลังก็จะได้เลขต่อไป (แบบนี้ผมต้องทำ Login User ผ่าน DB หรือไม่ครับ เพราะปัจจุบันผมทำผ่าน LDAP)

รบกวนผู้รู้ช่วยแนะนำด้วยครับ

ขอบคุณครับ



Pontiac 202.69.137.xxx 03-11-2010 08:45:42

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

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


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


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

 ความคิดเห็นที่ 1

ผมหาทางออกได้แล้วครับ โดยไม่ต้อง Show ตัวเลข $nextID ไว้เพราะไม่จำเป็นต้องจอง เอาไปคำนวณได้เลยตอน save ก็ให้มันดึงมาใช้เหมือน Auto Increment  (คงไม่มีคนกด Save พร้อมกันละสิเน้อ 555 ) ทำ Web App นี่ถ้าไม่มี Flow chart ทำไปๆ ก็มึนๆ เหมือนกันนะครับ



pontiac 202.69.137.xxx 03-11-2010 09:16
 ความคิดเห็นที่ 2

 



Ninenik 183.89.222.xxx 03-11-2010






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