การเลือก Input ที่สัมพันธ์กันกับ Checkbox ที่เลือกเมื่อ Submit

มีคำถามจากบอร์ดว่า จะทำอย่างไร ถ้าต้องการ เลือกข้อมูลจาก Input text เฉพาะที่สัมพันธ์กันกับตัว Checkbox ที่ถูกเลือกเท่านั้น เมื่อตอน Submit

ปกติแล้ว input ชนิด checkbox เมื่อถูก submit จะมีการส่งไปเฉพาะรายการที่ถูกเลือกเท่านั้นครับ เราจึงสามารถใช้กรณีนี้เพื่อตรวจสอบว่า ระบบจะต้องบันทึกข้อมูลเฉพาะตัวที่ถูกเลือกเท่านั้นได้โดยการตรวจสอบ key ของ checkbox ที่ตรงกับ key ของ input text
// form
echo '<form method=post action=?>';
for ($i = 0; $i < 5; $i++) {
echo '<p><input type=checkbox name=chk['.$i.'] '.(isset($inp[$i]) ? ' checked' : '').'><input type=text name=INP['.$i.'] value="Test'.$i.'"></p>';
}
echo '<p><input type=submit value=Send></p>';
echo '</form>';

โค้ดฟอร์มด้านบนที่ใช้ก็ปกติแหละครับ แต่มีที่แนะนำอยู่อย่างหนึ่งคือ เพื่อต้องการให้ชัวร์ว่า checkbox อันไหน สัมพันธ์กับ input ตัวไหน เลยต้องระบุ id ของ input แต่ละตัวให้ชัดเจนไปเลย
$inp = array();
foreach ($_POST['chk'] AS $key => $value) {
     // รับเฉพาะรายการที่มีการเลือก checkbox
     $inp[$key] = $_POST['INP'][$key];
}
// แสดงผลค่าที่รับได้
print_r($inp);

แนวคิดการรับค่าก็คือ ปกติแล้ว รายการ checkbox ที่ส่งมา จะส่งมาเฉพาะรายการที่ถูกเลือกเท่านั้น ดันนั้น เราก็ทำการอ่าน key ของตัวที่ถูกเลือก แล้วนำ key ไปเลือก input ที่ต้องการอีกที โดยการใช้ความสามารถของ Array ธรรมดาครับ
 
ผู้เขียน goragod โพสต์เมื่อ 15 ก.พ. 2555 เปิดดู 8,787 ป้ายกำกับ Form
^