 |
|
|
 |
 |
|
$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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|