อยากจะ update ข้อมูล แต่ติดเรื่อง select count ตอน update แก้ไขข้อมูลเดิม
selcet ค่ามาใส่ฟอร์มเพื่อแก้ไข
แล้ว update กลับใส่ db เดิม อยากเห็น code update ว่า Error ตรงไหนครับ
Date :
2012-08-11 14:34:50
By :
apisitp
ครับ
Code (PHP)
$sql = "select count(*) as countrow from flowmail where femail = $femail and access = $access ";
$result = mysql_query($sql) or exit($sql);
$row = mysql_fetch_array($result);
if ($row['countrow'] >0)
exit("<script>alert('Please change femail and access There only 1 person');history.back();</script>");
$sql1 = "update flowmail set
femail = '$femail ',
access = '$access'
where id = '$id'";
mysql_query($sql1) or die(mysql_error());
echo "<script>alert('Update Complete');window.location='showlist.php';</script>";
Date :
2012-08-11 14:49:56
By :
nattkhanesha
ติดปัญหาตรงนี้ครับ
พอ select count นับแล้ว เงื่อนไขมันจะไปนับข้อมูลของเดิมที่กำลังจะแก้ไขด้วยครับ
Code (PHP)
if ($row['countrow'] >0)
exit("<script>alert('Please change femail and access There only 1 person');history.back();</script>");
ประวัติการแก้ไข 2012-08-11 15:50:32
Date :
2012-08-11 15:50:13
By :
nattkhanesha
คิดได้หลายทางเจอจุดที่จะถามหลายอัน งั้นเอาที่ละอันก่อนดีกว่า
ผมคิดว่า หลักการคือ มีคนสมัครอะไรสักอย่างแล้วทางผู้ดูแลต้องการให้กรอก femail กับ access
ถาม :: ถ้าค่า femail กับ access ที่กรอกเข้ามา
1. ถ้ามีข้อมูล หรือ ค่าซ้ำ ต้องการให้เกิดอะไรขึ้นครับ
2. แล้วถ้าค่าไม่ซ้ำ หรือ ไม่มีข้อมูลในตาราง ต้องการให้มันเกิดอะไรขึ้นครับ
แล้วต่อเนื่องนะครับ ดูจากเงื่อนไข if ($row['countrow'] >0) ถ้าจำนวนใน table มีการพบค่า หรือค่ามากกว่า 0 ก็ให้ย้อนกลับไปหน้ากรอกข้อมูล
ถ้าไม่พบค่า หรือ ค่าเท่ากับ 0 ก็ทำการ update
หรือถ้าพบค่าก็ให้ทำการ update ทันที่
ตรงนี้
Code (PHP)
$sql1 = "update flowmail set
femail = '$femail ',
access = '$access'
where id = '$id'";
คำถาม :: 3 ค่า $id มาจากไหนครับ ส่งมากับเพจรับค่า หรือ เอามาจากไหน ลอง echo ดูครับ มีค่าออกมาหรือเปล่า
สุดท้าย แนะนำนะครับ.....ผมไม่แน่ใจว่า concept ต้องการอะไรแน่
ลองอ่าน concept ผมนะครับ
1. สร้าง form รับค่า และ ส่งค่า
2. รับค่าที่ต้องการ คือ femail กับ access มาหาใน table
2.1 ถ้า มีข้อมูลอยู่แล้ว หรือ พบค่า ก็ให้เด้งกลับพร้อมแจ้งเตือนว่าข้อมูลที่กรอกมา ซ้ำ อะไรก็ว่าไป บลา ๆ ๆ
2.2 ถ้า ไม่มีข้อมูล หรือค่าไม่ซ้ำ ก็ให้ทำการบันทึกข้อมูลแบบ insert (ตรงนี้ของคุณใช้ update)
Concept ที่กล่าว มันก็คือการ "ระบบสมัครสมาชิก" นี่เอง
ผมถาม 3 ข้อ ถ้าตอบข้อสงสัยนี่ได้ผมว่าคุณก็แก้ได้แล้วล่ะ อิอิ
Date :
2012-08-11 16:17:08
By :
apisitp
ตอบ : ข้อ 1 ถ้ามีข้อมูล หรือ ค่าซ้ำ ให้แสดง script alert ('Please change femail and access There only 1 person')
ตอบ : ข้อ 2 แล้วถ้าค่าไม่ซ้ำ หรือ ไม่มีข้อมูลในตาราง ให้ update ได้
ตอบ : ข้อ 3 ลอง echo ค่า id ที่ส่งมาแล้วครับ มีค่านะครับ
ตัวอย่าง
สมมุติว่า มีข้อมูลในฐานข้อมูลอยู่ 3 อันนะครับ
id=1 femail=01 access=003
id=2 femail=02 access=003
id=3 femail=03 access=003
ผมจะส่งค่า id=3 ไปเพื่อ update แก้ไขข้อมูลตามนี้ คือ id =3 และเปลี่ยน femail=03 เป็น femail=02
ค่าที่ส่งไป update ก็คือ id=3 femail=02 access=003
แต่ปัญหาที่เจอคือ update ค่า id=3 ไม่ได้ครับ มันแสดง script alert ว่าซ้ำกันครับ
Code (PHP)
$id = $_POST['id']; // id=3
$femail = $_POST['femail']; // femail=02
$access = $_POST['access']; // access=003
$sql = "select count(*) as countrow from flowmail where femail = $femail and access = $access ";
$result = mysql_query($sql) or exit($sql);
$row = mysql_fetch_array($result);
if ($row['countrow'] >0)
exit("<script>alert('Please change femail and access There only 1 person');history.back();</script>");
$sql1 = "update flowmail set
femail = '$femail ',
access = '$access'
where id = '$id'";
mysql_query($sql1) or die(mysql_error());
echo "<script>alert('Update Complete');window.location='showlist.php';</script>";
Date :
2012-08-11 17:02:20
By :
nattkhanesha
ค่าที่ส่งไป update ก็คือ id=3 femail=02 access=003
จากค่าอันนี้การเปลี่ยนค่าของ id=3 femail=02 access=003 ที่รับมา มันไปซ้ำกับค่้าของ id=2 เต็ม ๆ
มันก็เลยบอกว่ามีค่า $row['countrow'] > 0 โค้ดไม่ได้ผิดเลยครับถูกต้องสมบูรณ์
::>> แบบนี้ก็ลอง update femail กับ access ที่ค่าไม่ซ้ำกับในตารางครับ
::>> แต่ถ้าต้องการ update ค่าให้ซ้ำได้ โดยอ้าง id เป็นหลักอยู่แล้วก็เอาเงื่อนไข if ($row['countrow'] >0) ออกครับไม่ต้องเช็ค....
เข้าใจตรงกันเหรือเปล่าครับ ดูเงื่อนไขที่สร้างไว้ดีดีครับ
Date :
2012-08-11 23:48:54
By :
apisitp
งั้นผมขออีกตัวอย่างหนึ่งนะครับ
ตัวอย่าง
สมมุติว่า มีข้อมูลในฐานข้อมูลอยู่ 3 อัน
id=1 femail=01 access=003 [email protected]
id=2 femail=02 access=003 [email protected]
id=3 femail=03 access=003 [email protected]
ผมจะส่งค่า id=3 ไปเพื่อ update แก้ไขข้อมูลเดิมตามนี้
คือ id =3 femail=03 access=003 และเปลี่ยน [email protected] เป็น [email protected]
ค่าที่ส่งไป update ก็คือ id=3 femail=03 access=003 [email protected]
ปัญหาที่พบก็คือ มันแสดง script alert ว่าซ้ำกันครับ
ผมสงสัยเหมือนคำสั้งจะไปนับ id=3 เดิม ด้วยสิครับ
ขอบคุณทุกคำตอบนะครับ คุณ apisitp
Date :
2012-08-12 07:36:54
By :
nattkhanesha
เงื่อนไขที่ถามมามันก็เหมือนเดิมที่ตอบไปล่ะครับ...ก็เห็นอยู่ว่า db ที่คุณยกตัวอย่างมา กับค่าที่จะ update ตรง id=3 มันซ้ำกันเหมือนเดิมอ่ะครับ ผมอาจจะสื่อสารหรือแนะนำไม่ดี รอท่านอื่นนะครับ
Date :
2012-08-12 11:53:22
By :
apisitp
Load balance : Server 02