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

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

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

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




กรณีที่ต้องการส่งค่าข้อมูล เพื่อใช้ในการบันทึก โดยอิงค่าจาก
การใช้งาน 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) ขอบคุณครับ