ถามเทคนิควิธีการแก้ไข ข้อมูล แบบ master-detail ครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ถามเทคนิควิธีการแก้ไข ข้อมูล แบบ master-detail ครับ
ผมมีการบันทึกข้อมูลแบบ master-detail ของ เอกสารครับ
tb_document
-doc_id
-doc_name
-doc_date
tb_document_category
-category_id
-doc_id
-category_name
ตามตัวอย่าง 1 document จะมีได้หลาย category ครับ
ที่ผมอยากทำคือ ในเรื่องการแก้ไข category ของ doc_id นั้นๆ
สมมุติว่า doc_id = 1 มี category_id คือ 1 , 2 , 4 ตามลำดับ
ผมต้องการแก้ เป็น ให้มี 1 , 2 , 3 , 5
โดยลักษณะตรง category ผมได้ทำเป็น checkbox ให้เลือกไว้ (ตอนเรียกดูข้อมูลก่อนแก้ไข ถ้าอันไหนมีอยุ่ ก็จะถูกติ๊กไว้)
จากตัวอย่างข้างบน ก่อนแก้ไข ข้อมูลเดิม จะถูกติ๊กไว้ที่ 1 , 2 และ 4
พอแก้ไขไปใหม่ เปลี่ยนไปติ๊กที่ 1 , 2 , 3 , 5
ตอนบันทึกข้อมูลผมจะบันทึกอย่างไรดีครับ
จะเช็คได้อย่างไรว่า ถ้า อันใหม่ที่ติ๊กไว้ เหมือนกับอันเก่าที่มีอยู่ ก็ไม่ต้องแก้ไขเปลี่ยนแปลงอะไร
แต่ถ้า อันใหม่ที่ส่งค่ามา เมื่อเช็คแล้ว อันเก่าไม่มีอยู่ ก็ให้ insert เพิ่มไป
ส่วนถ้า อันใหม่ ไม่มี แต่อันเก่ามี ให้ delete อันเก่าทิ้ง
จากตัวอย่าง สรุปแล้ว 1 กับ 2 นั้น ตรวจพบว่า ของเดิมมี ก็ไม่้ต้องทำอะไร
ส่วน 3 และ 5 นั้น ของเดิมไม่มี ก็ insert เพิ่ม และ 4 ของเดิมมี แต่ของใหม่ ไม่มี ให้ delete 4 ทิ้ง
ผมคิดวิธีนึงออกครับ คือ ให้ทำการ delete category ของ doc_id = ที่ต้องการ ทิ้งหมดเลย แ้ล้ว insert เข้าไปใหม่หมด
วิธีนี้ง่ายดี แต่ว่า ผมมองถึงปัญหา เรื่อง ถ้าเกิดมีการแก้ไขบ่อยๆ มันจะทำให้ ลบข้อมูล เรื่อยเปื่อย แล้วตัวเลข autonum มันจะ run เพิ่มขึ้นไปเรื่อยๆรึเปล่า
เลยไม่ค่อยอยากใช้วิธีนี้เท่าไรครับ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
คำถามนี้เป็น idea ดีมากเลย ปกติก็เจอเหมือนกัน แต่ไม่ค่อยได้ทำเป็นรูปแบบไว้ ปกติก็จะแก้ปัญหาตรงนั้นเลย
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <head> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> <title></title> </head> <body> <?php // $i คือหมวด category_id // ในตัวอย่างเป็นเพียงแนวทาง กำหนดแบบตายตัว เอาไปใช้จริง ให้ปรับตามฐานข้อมูล ?> <form id= "form1" name= "form1" method= "post" action= "" > <?php for ( $i =1; $i <=5; $i ++){ ?> <input name= "chk<?=$i?>" type= "checkbox" id= "chk<?=$i?>" <?=( $i ==1 || $i ==2 || $i ==4)? "checked" : "" ?> value= "1" /><?= $i ?><br /> <input name= "h_checkbox[<?=$i?>]" type= "hidden" id= "h_checkbox[]" value= "<?=($i==1 || $i==2 || $i==4)?$i:" 0 "?>" /> <?php } ?> <br /> <input type= "submit" name= "button" id= "button" value= "Submit" /> </form> <pre> <?php print_r( $_POST ); ?> <?php if ( count ( $_POST [ 'h_checkbox' ])>0){ foreach ( $_POST [ 'h_checkbox' ] as $key => $value ){ if ( $value ==0){ if (isset( $_POST [ 'chk' . $key ])){ echo $key . " ADD<br>" ; } } else { if (!isset( $_POST [ 'chk' . $key ])){ echo $key . " REMOVE<br>" ; } } } } ?> </pre> </body> </html> |

ขอบคุณครับ
