แนวทางการส่งค่า จาก checkbox เพื่อบันทึกข้อมูลแบบ array ใน php

เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdee
checkbox

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ checkbox

ดูแล้ว 33,110 ครั้ง




กรณีที่ต้องการส่งค่าข้อมูล เพื่อใช้ในการบันทึก โดยอิงค่าจาก
การใช้งาน 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>
 
ตัวอย่าง
 
Data 1 | More:
Data 2 | More:
Data 3 | More:
 
 
จากโค้ด และตัวอย่างด้านบน เมื่อมีการนำไปใช้งาน เราจะไม่สามารถอ้างอิง
การบันทึกข้อมูลที่สอดคล้องกับ การเลือก 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>
 
ตัวอย่าง
 
Data 1 | More:
Data 2 | More:
Data 3 | More:
 
 
จากโค้ด ที่มีการเปลี่ยนเปลงรูปแบบการส่งข้อมูลแล้ว 
จะพบว่า การเลือก 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 สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ