ขอคำแนะนำ ของลำดับที่ซ้ำด้วยครับ เรียน พี่ ๆ ทุกท่าน ผมมีเรื่องอยากขอคำแนะนำหน่อยนะครับ
$r = mysql_query('select * from tb where idReq=29');
if (mysql_num_rows($r) == 0){
mysql_query('insert into...');
}else{
//แสดงหน้า form ใหม่
}
Date :
2010-05-22 16:32:03
By :
111
$r = mysql_query('select * from tb where idReq=29');
if (mysql_num_rows($r) == 0){
mysql_query('insert into...');
}else{
//แสดงหน้า form ใหม่
}
----------------------------------
ก่อนอื่น ๆ ต้องขอขอบคุณมากครับ
แต่หากไม่เป็นการรบกวน ช่วยอธิบายหน่อยได้ไหมครับ
ว่าตรงที่ $r = mysql_query('select * from tb where idReq=29');
ค่าของ 29 จะกำหนดเป็นตัวแปรได้อย่างไร (คงไม่ใช่ว่าจะกำหนดเป็นตัวเลขของลำดับฯ นะครับ)
หรือว่าให้มีการเขียนเช็คค่าก่อนหรือป่าว ว่าลำดับไหนมีการใช้งานไปแล้ว
หากมีการใช้งานไปแล้ว ให้เปลี่ยนค่าลำดับฯ ใหม่ แบบนี้ได้หรือไม่
แต่เขียนอย่างไรหนอ ?? ผมก็ยังไม่เข้าใจว่าจะเริ่มต้นเขียนโค๊ดอยางไร (เก่งแต่ทฤษฎี ครับ 555++)
Date :
2010-05-22 16:51:01
By :
riderman
$r = mysql_query('select * from tb where idReq=' .intval($_GET['txtReqID']));
if (mysql_num_rows($r) == 0){
mysql_query('insert into...');
}else{
//แสดงหน้า form ใหม่
}
$_GET หรือไม่ก็ $_POST ครับ
Date :
2010-05-22 19:01:09
By :
2123
//แสดงหน้า form ใหม่ อาจจะใช้ <meta refresh เพื่อย้ายกลับไปหน้าเดิมก็ได้ครับ ไม่ต้องเปลี่ยน algorithm อะไรเพราะมันจะแสดง form ใหม่ค่า reqid ใหม่
Date :
2010-05-22 19:02:46
By :
2123
ไม่แปลกครับ ถ้าเปิดสองเครื่องพร้อมกัน มันต้องได้ค่านั้นอยู่แล้ว เพราะid มันมีแค่นั้นมันก็ต้องเพิ่มมาทั้งสอง
เราต้องหัดประยุกต์ครับ
เมื่อตอน save ให้ไป select idNO มาเพื่อที่จะเป็นค่า regID เอาครับ อย่าไปอ้างอิงรหัสนั้น เพราะมันอาจซ้ำกันครับ ส่วน idNO ไม่ซ้ำแน่ เพราะมันเป็น PK
Date :
2010-05-22 20:29:09
By :
deawx
สมมุติว่า check แล้วว่า idReq นี้มีอยู่ใน table แล้ว refresh หน้า form ใหม่
form ก็จาได้ idReq ใหม่ ใช่ใหมครับ แล้ว ถ้าตอนนั้น browser ที่ 3 มาเปิดหน้า webpage นี้เหมือนกันอีกที่
browser ที่ 3 ก้น่าจาได้ idReq เดียวกัน
ถ้า idReq ตอนแสดง เพื่อกรอกข้อมูล กับ กับข้อมูลที่ insert จริงไม่ต้อตรงกันก็ได้ ลองเปลียน
query ตอน insert เป็น อย่างนี้ครับ
insert into tb(idReq ,....) values((select if(isnull(max(idReq )+1),1,max(idReq )+1) from tb))
Date :
2010-05-22 20:35:02
By :
ผ่านมา
----------
ก่อนอื่น ผมต้องขอขอบคุณพี่ทั้งสองคนมากที่ให้คำแนะนำ
แต่อย่าว่านะครับ ผมเองมือใหม่หัดเขียน เลยจากคำแนะนำจากพี่คนแรก (Guest)
ผมทำไม่ได้สักที ไม่รู้ว่าจะเขียนไว้ตรงไหน
ผมเลยก็ต้องทำตามคำแนะนำของพี่ deawx ไป เพราะ
ก่อน Save ลง Table ผมได้ให้
// Check duplicate reqID
$sql = "SELECT reqID FROM tb_userreq WHERE reqID = '".$reqID."'";
$result = mysql_query($sql) or die ("$msg");
if(mysql_num_rows($result) != 0){
$reqNo = $reqID+1; // เช็คค่า reqID ซ้ำ
$sql = "INSERT INTO tb_userreq VALUES(NULL,'$reqNo','','$reqDate','$reqYQ')";
$result = mysql_query($sql) or die ("$msg");
echo "<script>alert(' การแจ้งปัญหาเสร็จเรียบร้อยแล้ว ');</script>";
exit();
}else{
$sql = "INSERT INTO tb_userreq VALUES(NULL,'$reqID','','$reqDate','$reqYQ')";
$result = mysql_query($sql) or die ("$msg");
echo "<script>alert(' การแจ้งปัญหาเสร็จเรียบร้อยแล้ว ');</script>";
exit();
}
--------------------------
อย่างนี้ได้หรือป่าวครับ แต่หากจะเขียนให้สั้น ๆ กว่านี้ได้หรือไม่ ??? ขอขอบคุณอีกครั้งครับผม
Date :
2010-05-22 21:09:07
By :
riderman
$sql = "select max(idNO) from tb_userreq";
$result = mysql_query($sql);
$r = mysql_fetch_array($result);
$ids = $r[0];
อันนี้คือการหาค่ามากที่สุดของ idNO ไว้ใช้แอดเป็นค่า regID แทนอันเก่าน่ะครับ
Date :
2010-05-22 22:57:57
By :
deawx
Load balance : Server 00