PHP Ionic Angular HTML5 AJAX Javascript CSS MySQL jQuery Forum


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

25 May 2014 By Ninenik Narkdee
checkbox

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



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



บริการเว็บ server web hosting
บริการเว็บ server web hosting


Tags:: checkbox







URL สำหรับอ้างอิง