PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

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

25 May 2014 By


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

?>

Tags:: checkbox





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