|
![](/images/resource/spacer.gif) |
|
ถาม - การ insert sql จาก 2 เครื่อง โดยเวลา พร้อมกัน ทุกอย่าง....อ่านต่อด้านในครับ |
|
![](/images/resource/viewboard_01.gif?v=1001) |
|
|
![](/images/resource/viewboard_03.gif?v=1001) |
![](/images/resource/viewboard_04.gif?v=1001) |
|
พอดีผมจำเป็นต้องสร้างรหัส เลขที่ ออเดอร์ โดยใช้วันเดียวกับวันที่ปัจจุบัน แต่มีอยู่เคสหนึ่ง ลูกค้า เซสชั่น ไอดี คนละเบอร์ แต่ทำการสั่งซื้อพร้อมกัน ทุกอย่าง ตรงกันหมด ทำให้เลขที่ ออเดอร์ ที่ถูกสร้าง เป็นเลขที่เดียวกัน ตรงนี้ผมอยากขอความเห็นว่ามีวิธีป้องกันยังไงครับ
เหตุผลว่าทำไมผมไม่ใช้ตัว id ที่เป็น autoincrement มาเป็นเลข order ก็เพราะว่าต้องใช้นับจำนวนคนสั่งซื้อต่อวัน
และรหัสจะถูก +1 ทุกครั้งหลังการสั่งซื้อ
โดยลำดับเหตุการณ์ของการทำงานนะครับ
1 insert data ลูกค้าที่ทำการสั่งซื้อเข้ามา (อันนี้แหละที่มีปัญหาเนื่องจากลูกค้าดันสั่งซื้อพร้อมกัน เวลาเดียวกัน) โดยเลขที่ order id จะยังไม่ถูกสร้าง
Code (PHP)
$sqll = "insert into customer (ss_id,fname,lname,email,street_address,city,state,zip_code,country,mobile,date,time,status)";
$sqll .= "values('".$session_id."','".$_POST['Firstname']."','".$_POST['Lastname']."','".$_POST['Email']."','".$_POST['Street_address']."','".$_POST['City']."','".$_POST['State']."','".$_POST['Zip_code']."','".$_POST['Country']."','".$_POST['Mobile']."','".date("Y-m-d")."','".date("H:i:s")."','Pending')";
$rss = mysql_query($sqll,$dbcon);
2.ค้นหาลูกค้าที่ทำการสั่งซื้อเข้ามาแล้ว โดยที่ เลขที่ ออเดอร์ ต้องไม่เป็นค่าว่าง และเป็นข้อมูลล่าสุดเท่านั้น เพื่อใช้ในการสร้างเลขที่ ออเดอร์
$str_order = "select * from customer where order_id !='' order by id desc";
$rs_order = mysql_query($str_order,$dbcon);
$no_order = mysql_fetch_array($rs_order);
///////////// ทำการสร้างเลขที่ ออเดอร์ ตาม วัน / เดือน / ปี //////////////////
$Y = substr(date('Y'),2);
$M = date('m');
$D = date('d');
///////////// สร้างเลขที่ ออเดอร์ ใหม่โดยใช้วันที่ ปัจจุบัน //////////////////
if($no_order['date'] == $date){
$invoic0 = substr($no_order['order_id'],7);
$no = $invoic0 +1;
$invoic1 = substr("00000".$no,-4,4);
$invoic = $faq['name'].$Y.$M.$D.$invoic1;
}else{ /////////////// สร้างเลขที่ ออเดอร์เดิม โดยใช้วันที่ต่อเนือง
$no = 1;
$invoic1 = substr("00000".$no,-4,4);
$invoic = $faq['name'].$Y.$M.$D.$invoic1;
}
3.ค้นหาลูกค้าที่ทำการสั่งซื้อเข้ามาแล้ว โดยที่ยังไม่มีเลขที่ ออเดอร์ ลอยๆเพื่อใช้ในเงื่อนไขตอน update
$strsql = "select * from customer where ss_id = '".$session_id."' and order_id = ''";
$strres = mysql_query($strsql,$dbcon);
$array = mysql_fetch_array($strres);
4.สร้างเลขที่ออเดอร์ โดยไปอัพเดทในข้อมูลที่ถูกสร้างไว้แล้ว
Code (PHP)
mysql_query("update customer set order_id = '".$invoic."' where id = '".$array['id']."' and ss_id = '".$session_id."'");
Tag : PHP, MySQL
![](/images/adv.jpg?v=1001)
|
|
![](/images/resource/blockviewtopic_01.gif?v=1001) |
![](/images/resource/blockviewtopic_02.gif?v=1001) |
![](/images/resource/blockviewtopic_03.gif?v=1001) |
![](/images/resource/blockviewtopic_04.gif?v=1001) |
Date :
2012-11-09 15:29:02 |
By :
Dragons_first |
View :
2235 |
Reply :
5 |
|
![](/images/resource/blockviewtopic_06.gif?v=1001) |
![](/images/resource/blockviewtopic_07.gif?v=1001) |
![](/images/resource/blockviewtopic_08.gif?v=1001) |
![](/images/resource/blockviewtopic_09.gif?v=1001) |
|
|
|
![](/images/resource/viewboard_06.gif?v=1001) |
![](/images/resource/viewboard_07.gif?v=1001) |
|
![](/images/resource/viewboard_08.jpg?v=1001) |
![](/images/resource/viewboard_09.gif?v=1001) |
![](/images/resource/viewboard_01.gif?v=1001) |
|
|
![](/images/resource/viewboard_03.gif?v=1001) |
![](/images/resource/viewboard_04.gif?v=1001) |
|
อันนี้เป็นข้อมูลที่ลูกค้า ทำการสั่งซื้อเข้ามาพร้อมกัน
![sqlsss sqlsss](https://www.thaicreate.com/upload/stock/20121109153034.jpg?v=1001)
|
![](/images/resource/blockviewtopic_01.gif?v=1001) |
![](/images/resource/blockviewtopic_02.gif?v=1001) |
![](/images/resource/blockviewtopic_03.gif?v=1001) |
![](/images/resource/blockviewtopic_04.gif?v=1001) |
Date :
2012-11-09 15:30:57 |
By :
Dragons_first |
|
![](/images/resource/blockviewtopic_06.gif?v=1001) |
![](/images/resource/blockviewtopic_07.gif?v=1001) |
![](/images/resource/blockviewtopic_08.gif?v=1001) |
![](/images/resource/blockviewtopic_09.gif?v=1001) |
|
|
![](/images/resource/viewboard_06.gif?v=1001) |
![](/images/resource/viewboard_07.gif?v=1001) |
|
![](/images/resource/viewboard_08.jpg?v=1001) |
![](/images/resource/viewboard_09.gif?v=1001) |
![](/images/resource/viewboard_01.gif?v=1001) |
|
|
![](/images/resource/viewboard_03.gif?v=1001) |
![](/images/resource/viewboard_04.gif?v=1001) |
|
ก่อนบันทึก ให้ ไป select หา invoice last order แล้ว เอามาเปรียบเทียบ ถ้ามีให้ เอา +1 แล้ว บันทึกทันที น่าจะไม่ซ้ำแล้ว นะ คิดว่า
|
![](/images/resource/blockviewtopic_01.gif?v=1001) |
![](/images/resource/blockviewtopic_02.gif?v=1001) |
![](/images/resource/blockviewtopic_03.gif?v=1001) |
![](/images/resource/blockviewtopic_04.gif?v=1001) |
Date :
2012-11-09 17:52:02 |
By :
moomoohorn |
|
![](/images/resource/blockviewtopic_06.gif?v=1001) |
![](/images/resource/blockviewtopic_07.gif?v=1001) |
![](/images/resource/blockviewtopic_08.gif?v=1001) |
![](/images/resource/blockviewtopic_09.gif?v=1001) |
|
|
![](/images/resource/viewboard_06.gif?v=1001) |
![](/images/resource/viewboard_07.gif?v=1001) |
|
![](/images/resource/viewboard_08.jpg?v=1001) |
![](/images/resource/viewboard_09.gif?v=1001) |
![](/images/resource/viewboard_01.gif?v=1001) |
|
|
![](/images/resource/viewboard_03.gif?v=1001) |
![](/images/resource/viewboard_04.gif?v=1001) |
|
ตั้งเป็นค่า เอกลักษณ์ ได้ไหม เพราะจะได้ ห้ามซ้ำ ห้ามเป็นค่าว่าง
|
![](/images/resource/blockviewtopic_01.gif?v=1001) |
![](/images/resource/blockviewtopic_02.gif?v=1001) |
![](/images/resource/blockviewtopic_03.gif?v=1001) |
![](/images/resource/blockviewtopic_04.gif?v=1001) |
Date :
2012-11-14 01:16:13 |
By :
chanajun |
|
![](/images/resource/blockviewtopic_06.gif?v=1001) |
![](/images/resource/blockviewtopic_07.gif?v=1001) |
![](/images/resource/blockviewtopic_08.gif?v=1001) |
![](/images/resource/blockviewtopic_09.gif?v=1001) |
|
|
![](/images/resource/viewboard_06.gif?v=1001) |
![](/images/resource/viewboard_07.gif?v=1001) |
|
![](/images/resource/viewboard_08.jpg?v=1001) |
![](/images/resource/viewboard_09.gif?v=1001) |
|
|
|
![](/images/digitalocean-banner.jpg)
|
Load balance : Server 00
|