แนวทางการส่งค่า จาก checkbox เพื่อบันทึกข้อมูลแบบ array ใน php
เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdeecheckbox
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ checkbox
ไปที่ Copy
กรณีที่ต้องการส่งค่าข้อมูล เพื่อใช้ในการบันทึก โดยอิงค่าจาก
การใช้งาน checkbox ดูตัวอย่าง แบบฟอร์มด้านล่าง
โค้ด
<form id="form01" name="form01" method="post" action="demo/demo_print_r.php" target="_blank"> <input name="type[]" type="checkbox" id="type[]" value="Data 1" /> Data 1 | More: <input type="text" name="more[]" > <br /> <input name="type[]" type="checkbox" id="type[]" value="Data 2" /> Data 2 | More: <input type="text" name="more[]" > <br /> <input name="type[]" type="checkbox" id="type[]" value="Data 3" /> Data 3 | More: <input type="text" name="more[]" > <br /> <input type="submit" name="button" id="button" value="Submit" /> </form>
ตัวอย่าง
จากโค้ด และตัวอย่างด้านบน เมื่อมีการนำไปใช้งาน เราจะไม่สามารถอ้างอิง
การบันทึกข้อมูลที่สอดคล้องกับ การเลือก checkbox ได้
(กด submit ส่งข้อมูลดู พบว่า ค่า key ของข้อมุล array จะไม่สอดคล้องกัน
คือ บางค่าไม่มีการส่งมา)
วิธีการแก้ไข
ให้กำหนดค่า checkbox เป็นค่า key ของ array แทน โดยเริ่มจากค่า 0 .1.. 2..
และให้เพิ่ม hidden field เก็บค่าข้อมูลแทน checkbox
จากโค้ดได้านบน จะได้เป็น
<form id="form02" name="form02" method="post" action="demo/demo_print_r.php" target="_blank"> <input name="h_type[]" type="checkbox" id="h_type[]" value="0" /> <input name="type[]" type="hidden" id="type[]" value="Data 1" /> Data 1 | More:<input type="text" name="more[]" > <br /> <input name="h_type[]" type="checkbox" id="h_type[]" value="1" /> <input name="type[]" type="hidden" id="type[]" value="Data 2" /> Data 2 | More: <input type="text" name="more[]" > <br /> <input name="h_type[]" type="checkbox" id="h_type[]" value="2" /> <input name="type[]" type="hidden" id="type[]" value="Data 3" /> Data 3 | More: <input type="text" name="more[]" > <br /> <input type="submit" name="button" id="button" value="Submit" /> </form>
ตัวอย่าง
จากโค้ด ที่มีการเปลี่ยนเปลงรูปแบบการส่งข้อมูลแล้ว
จะพบว่า การเลือก checkbox จะเป็นการกำหนด key ของ ค่าของข้อมูลที่ต้องการใช้งาน
โดยจะใช้ค่าไหนหรือไม่ จะใช้ ค่า ของ checkbox เป็นตัวกำหนด key ของ array ข้อมูล
(เมื่อลองกดปุ่ม submit ดู จะได้ ค่าของ array ข้อมูลจะถูกส่งมาทั้งหมด)
สำหรับหน้าตรวจสอบและบันทึกการใช้งาน จะใช้ในรูปแบบดังนี้
<?php $data_h_type=(isset($_POST['h_type']))?$_POST['h_type']:NULL; $data_type=(isset($_POST['type']))?$_POST['type']:NULL; $data_more=(isset($_POST['more']))?$_POST['more']:NULL; if(count($data_h_type)>0){ // ตรวจสอบ checkbox ว่ามีการเลือกมาอย่างน้อย 1 รายการหรือไม่ foreach($data_h_type as $key=>$value){ // แสดงชุดข้อมูล ที่สอดคล้องกับ checkbox echo $data_type[$value]." --- ".$data_more[$value]."<br>"; } } ?>
เพิ่มเติมเนื้อหา ครั้งที่ 1 วันที่ 22-01-2019
แนวทางที่ 2
อ้างอิงโดยการกำหนด key ให้กับ checkbox โดยกำหนดเข้าไปใน name array เช่น
<form id="form01" name="form01" method="post" action="demo_print_r.php" target="_blank"> <input name="type[0]" type="checkbox" id="type[]" value="Data 1" /> Data 1 | More: <input type="text" name="more[0]" > <br /> <input name="type[1]" type="checkbox" id="type[]" value="Data 2" /> Data 2 | More: <input type="text" name="more[1]" > <br /> <input name="type[2]" type="checkbox" id="type[]" value="Data 3" /> Data 3 | More: <input type="text" name="more[2]" > <br /> <input type="submit" name="button" id="button" value="Submit" /> </form>
จากโค้ดจะเห็นว่า เรากำหนด key ให้กับ checkbox เช่น type[0] และกำหนด key ค่าเดียวกันให้กับ
textbox เป็น more[0]
การกำหนด key ของทั้งสอง element ให้สัมพันธ์กันก็เป็นอีกวิธีที่เราสามารถนำไปใช้อ้างอิง เมื่อมีการ
ส่งค่าไปใช้งาน ตัวอย่างการตรวจสอบค่า แลถการใช้งาน
<?php $data_type=(isset($_POST['type']))?$_POST['type']:NULL; $data_more=(isset($_POST['more']))?$_POST['more']:NULL; if(count($data_type)>0){ // ตรวจสอบ checkbox ว่ามีการเลือกมาอย่างน้อย 1 รายการหรือไม่ foreach($data_type as $key=>$value){ // แสดงชุดข้อมูล ที่สอดคล้องกับ checkbox echo $data_type[$key]." --- ".$data_more[$key]."<br>"; } } ?>
กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ

Tags::
checkbox
URL สำหรับอ้างอิง
Top
Copy
ขอบคุณทุกการสนับสนุน
![]()