|
|
|
สองถามเรื่องการเช็คค่าช่อง text ว่าช่องไหนมีการแก้ไข แล้วให้บันทึกเฉพาะช่องที่แก้ไข |
|
|
|
|
|
|
|
โดยปกติแล้วการ UPDATE SQL ใน 1 เรคคอร์ด เราจะไม่สนใจว่าช่องไหนแก้ไม่แก้ แต่เราจะสั่ง UPDATE มันทั้งหมดทุกฟิลล์(ที่เราเปิดใหก้ user แก้ใข)
- จะเหมือนเดิมทุกช่องหรือแ้ก้ใขทุกช่องก็ชางหัวมัน UPDATE ไปให้หมดทุกฟิลล์(ที่เราเปิดใหก้ user แก้ใข)เลยครับ ....
- เราจะเช็คแค่ว่า ค่าว่างไหม รูปแบบอักขระผิดไหม เท่านั้นพอ . . . . .
|
|
|
|
|
Date :
2013-11-25 14:46:43 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สมมุติฐานข้อมุลมีฟิล xx1 - xx10 แต่เราเปิดกล่องให้ user แก้ใขแค่ xx1 xx5 xx7
IF (เช็ครูปแบบอักขระผ่าน) {
$sql = "UPDATE XXXX SET xx1='$xx1',xx5='$xx5',xx7='$xx7' WHERE xx_id='1' ";
}
|
|
|
|
|
Date :
2013-11-25 14:51:48 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมพอทราบครับเกี่ยวการอัพเดต แต่ผมต้องการทำการเก็บ LOG Data หากข้อมูลมีการแก้ไขที่ช่องไหน ก็ให้ทำการเก็บ log ช่องนั้น ว่ามีการแก้ไขอะไรไป จากข้อมูลเก่า แก้เป็นข้อมูลใหม่อะไร
พอทราบไหมครับ
|
|
|
|
|
Date :
2013-11-25 14:52:38 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่อแบบนี้นี่เอง . . . งั้นก็เอาไปเปรียบเทียบก่อน UPDATE แล้วเก็ลลง LOG สิครับ
เรคคอร์ด A เดิม = 1,5,7,8
เรคคอร์ด A ใหม่ = 2,3,7,8
เอาตัวแปรที่ได้ไปตรวจกับ DB ครับถ้าไม่เหมือนกันก็ไป insert into ตารางเก็บ Log . . . ว่าใคร ที่ไหน เวลาเท่าไร ทำนี่เสร็จค่อยไปสั่ง UPDATE จริง
ดังนั้นในตาราง LOG เราต้องเห็นประมาณนี้ไช่ไมหครับ
เรคคอร์ดIDนี้นะ ฟิลที่1 จากเดิม1 เป็น 2 เวลา xx:xx วันที่ xxxx-xx-xx โดย พนักงาน1565
เรคคอร์ดIDนี้นะ ฟิลที่2 จากเดิม5 เป็น 3 เวลา xx:xx วันที่ xxxx-xx-xx โดย พนักงาน1565
|
ประวัติการแก้ไข 2013-11-25 15:18:09
|
|
|
|
Date :
2013-11-25 15:16:05 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไล่นอมอลไลออกมาตาราง LOG น่าจะมีโครงสร้างประมาณรี้
ID_log(PK,auto_increment) | id_ref(FK ref.มาจากตารางข้อมูล) | ชื่อฟิลล์ที่ปรับปรุง | ข้อมูลเดิม | ข้อมูลใหม่ | เวลาวันที่ | ผู้ทำรายการ
***อืมดังเช่นคุณอิกคิวพูดก็ถูกนะ ต้องเก็บลงไฟล์ไว้่ป้องกันปัญหาข้อมูลมหาศาลด้วยสินะครับ
|
ประวัติการแก้ไข 2013-11-25 15:22:32
|
|
|
|
Date :
2013-11-25 15:21:12 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาเป็นว่าให้ความมั่นใจเพิ่ม ทำได้ไหมไม่มีอะไรที่ทำไม่ได้ แต่จะทำยากทำง่ายดีกว่าครับ....
สิ่งที่บอกมาเหมือนสร้างพีระมิดครับ สร้างได้ทำได้ แต่ก็ไม่รู้ทำไง ทำนาน ใช้เวลานานแค่ไหน...
สรุป แนวคิดนี้ ไม่ผ่านครับ
|
|
|
|
|
Date :
2013-11-25 15:21:18 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่หน้าเก็บข้อมูล
- SELECT ข้อมูลเก่าออกมาทั้งหมดที่เอาไปให้แก้ก่อนหน้า
- loop เช็คทีละ element
- อันไหนแก้(ค่าไม่ตรงกับของเดิม) ก็เอาตัวใหม่ไป concat กับ UPDATE SQL string + log การแก้ไข
- เช็คว่ามีการแก้ไขหรือไม่ ถ้ามีก็ UPDATE ถ้าไม่มีก็ไม่ต้องอัพ
- บันทึก log
|
|
|
|
|
Date :
2013-11-25 16:12:10 |
By :
itpcc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ SESSION ช่วยครับ (ช่วงนี้มีแค่โค๊ดเปลืองแรมแฮะ :p)
ข้อมูล ตอนดึงมาใส่แบบฟอร์ม ให้เก็บไว้เซสชั่นด้วย
Code (PHP)
$_SESSION['frm_customer']['fullname'] = 'xxx';
$_SESSION['frm_customer']['address'] = 'yyy';
เมื่อส่งข้อมูลไป ค่าจะส่งแบบ $_POST
ก็วนลูปเช็กกับเซสชั่น
Code (PHP)
foreach($_SESSION['frm_customer'] as $fieldname=>$oldvalue){
if($oldvalue != $_POST[$fieldname]){
//ไม่เท่ากับค่าเดิมแสดงว่า แก้ไข เก็บค่าไปบันทึก
}
}
ที่เหลือต่อเองนะครับ ไม่ไหวละวันนี้เจองานตั้งค่าเซิร์ฟเวอร์เข้าไปแล้วไปไม่เป็น
หัวสมองมึนตึ๊บ ขอตัวไปเล่นฟุตบอลก่อน ^^
|
|
|
|
|
Date :
2013-11-25 17:03:06 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้เป็นแนวคิดของผมครับ และตอนนี้ก็ลองใช้อยู่กับบาง table ที่ต้องการเก็บ log แก้ไขข้อมูล
ออกตัวก่อนครับว่า ไม่ได้เรียนมาทาง programmer การทำเช่นนี้ก็ไม่รู้ว่าอนาคตจะมีผลอะไรกับ database หรือไม่
โครงสร้างตารางที่ผมต้องการจะเก็บ log ผมจะออกแบบดังนี้
ID, fieldA, fieldB, fieldC, fieldD, createdDate, createdUserId, unUsed (true/false) ค่า default เป็น false
เวลา แสดงผลข้อมูล ผมให้เรียกจาก View ใช้คำสั่ง SQL เช่น Select * from ViewA where unUsed='false'
เพื่อให้แสดงเฉพาะ record ที่มีการใช้งาน
เมื่อ user กดปุ่ม save หาก form นั้นๆ มีการแก้ไขข้อมูล
ผมจะสั่งให้ ไป update record เก่าตรง field unUsed ให้เป็น true
แล้วทำการ insert record ใหม่เข้าไป
รบกวนช่วยวิจารณ์ด้วยครับว่า แนวคิดที่บอกมานี้ มันใช้ได้หรือไม่ครับ
กำลังลังเลอยู่เหมือนกันว่ามันจะเปลืองเนื้อที่ หรือไม่ database จะโตเกินหรือไม่
ขอบคุณครับ
|
|
|
|
|
Date :
2014-03-10 08:34:40 |
By :
Aod47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|