A-AA+then

ต้องการเก็บค่าของ Checkbox ทั้งที่ถูกติ๊กและไม่ถูกติ๊กค่ะ

7,877
รบกวนหน่อยค่ะ หาวิธีมาหลายวันแล้วทำไม่ได้ซักที คือต้องการเก็บค่า chkbox ทั้งที่ถูกเลือกและไม่ถูกเลือก เก็บในฐานข้อมูลค่ะ
คืออยากให้ค่าที่ถูกเลือกเก็บ chk=1 ส่วนที่ไม่ถูกเลือกก็บ chk = 0 เพื่อเก็บไว้อ้างอิงเวลาเรียกแก้ไข    ซึ่งข้อมูลchkbox นั้นดึงข้อมูลมาจากตารางในฐานข้อมูลมาแสดงค่ะ เป็นแบบ array  
<input type="checkbox" name="chkDel[]" id="chkDel<?=$i;?>" value="<?=$objResult["id_branch"]; ?>"  />

ในส่วนของ chkbox ที่ถูกเลือกนั้นสามารถเก็บข้อมูลลงฐานข้อมูลได้ตามปกติค่ะ แต่ว่า chkbox mี่ไม่ถูกเลือกไม่สามารถส่งค่าไปได้
ต้องทำอย่างไรค่ะถึงจะสามารถส่งค่าของchkbox ที่ไม่ถูกเลือกนั้นไปเก็บด้วยโดยให้มี chk = 0 
ช่วยทีีนะคะ

1 ความคิดเห็น

วิธีง่ายๆคือกำหนดให้ฟิลด์ที่ต้องการเก็บค่ามี default เป็น 0 ครับ ดังนั้นรายการใดที่ไม่ได้มีการเลือกมาก็จะมีค่าเป็น 0 โดยปริยายครับ

วิธีอื่นๆถ้าวิธีข้างต้นไม่สามารถใช้งานได้ เช่นการแก้ไข

1.ถ้ารู้จำนวน checkbox ที่แน่นอนเลย ก้ไม่ยากครับ เช่นหากมี checkbox จำนวน 10 ตัวที่รูเชื่อแน่นอน ก็ให้รับค่าด้วย php ตรงๆไปเลย

$check1 = intval($_POST['check1']);
.......
$checkn = intval($_POST['checkn']);

ซึ่งถ้ามีตัวใดถูกเลือก ก็ขะได้ค่า 1 แต่ถ้าไม่ถูหเลือก ก็จะเป็น 0 ครับ

2.ถ้าจำนวน checkbox ไม่แน่นอน หรือถ้า ค่าที่ต้องการไม่ใช่ 1 และ 0 ก้อาจค้องใช้วิธีสร้าง input ชนิด hidden จำนวนเท่ากับ checkbox ใช้สำหรับส่งค่าแทนก็ได้ ซึ่งการรับค่าก็ใช้วิธีรับค่าจาก hidden แทน checkbox โดยสามารถมีวิธีย่อยๆ ได้อีก 2 วิธี คือ


2.1 รัยค่าที่สเงมาจาก hidden โดยตรง วิธีนี้ อาจต้องมีการเขียน javascript เพิ่ม เพื่ออัปเดท ค่าใน hidden ในกรณีที่ เลือก หรือไม่เลือก

2.2 รับค่าทีส่งมาโดยตรวจสอบกับ checkbpox และ hidden เข่น

$check1 = isset($_POST['checkbox']) ? $_POST['checkbox'] ? $_POST['hidden'];

โค้ดด้านบน จะใช้ค่าจาก checkbox ถ้าถูกเลือก และจะใช้ค่าจาก hidden เมื่อ ไม่เลือก

อาจต้องทำความเข้าใจและเลือกวิธีที่เหมาะสมนิดหน่อยนะครับ 
1
^