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

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

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

จาก Code นี้

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?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 03-11-2010 08:45:42

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

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


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


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

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

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



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

 



Ninenik 03-11-2010






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