ดึงค่าจาก multiple checkbox ในตาราง dynamic table ที่มีหลาย row
checkbox แลดูซับซ้อนเกินความจำเป็น แต่มันสามารถทำได้ง่ายกว่านั้นถ้าคุณกำหนดค่า array ของแต่ ละเดือนใหม่
Code (PHP)
<input type="checkbox" name="work_m1[]" id="" class="form-control" value="1">
<input type="checkbox" name="work_m1[]" id="" class="form-control" value="2">
<input type="checkbox" name="work_m1[]" id="" class="form-control" value="3">
<input type="checkbox" name="work_m1[]" id="" class="form-control" value="4">
<input type="checkbox" name="work_m2[]" id="" class="form-control" value="1">
<input type="checkbox" name="work_m2[]" id="" class="form-control" value="2">
<input type="checkbox" name="work_m2[]" id="" class="form-control" value="3">
<input type="checkbox" name="work_m2[]" id="" class="form-control" value="4">
โดยเมื่อคุณ insert ให้ทำ relationship ไว้ด้วยเช่น
tb_work > hasMany > tb_month
tb_month > belongsTo > tb_work
เมื่อคุณ select ก็ทำได้ 2 วิธีคือเขียนแบบ hardcord if else condition หรือ ถ้าจะให้ง่ายขึ้นก็เขียนเป็น function return true or false กลับไปที่ checkbox
Date :
2020-10-28 09:17:16
By :
Genesis™
print array ออกมา กลับเอา checkbox ของแต่ละ task ไปรวมกันใน array index 0 หมดเลย
ก็ถูกแล้วนิ
work_m1w1 ก็มันมีชื่อเดียว
id="" ถ้ามันมีค่าว่างก็ไม่ต้องใส่เข้าไป
ตาม คุณ Genesis น่ะ
Date :
2020-10-28 13:41:05
By :
Guest
อยากได้ print_r() ออกมาแบบไหนเหรอครับ
<?php
if(isset($_POST)){
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
<form action="" method="post">
<table>
<tr>
<td width="400px" colspan="4">
<input type="text" name="work_tasks[]" id="" class="form-control">
</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td><input type="checkbox" name="work_m1w1[]" id="" class="form-control" value="1"></td>
<td><input type="checkbox" name="work_m1w2[]" id="" class="form-control" value="2"></td>
<td><input type="checkbox" name="work_m1w3[]" id="" class="form-control" value="3"></td>
<td><input type="checkbox" name="work_m1w4[]" id="" class="form-control" value="4"></td>
</tr>
<tr>
<td><input type="checkbox" name="work_m2w1[]" id="" class="form-control" value="1"></td>
<td><input type="checkbox" name="work_m2w2[]" id="" class="form-control" value="2"></td>
<td><input type="checkbox" name="work_m2w3[]" id="" class="form-control" value="3"></td>
<td><input type="checkbox" name="work_m2w4[]" id="" class="form-control" value="4"></td>
</tr>
<tr>
<td><input type="checkbox" name="work_m3w1[]" id="" class="form-control" value="1"></td>
<td><input type="checkbox" name="work_m3w2[]" id="" class="form-control" value="2"></td>
<td><input type="checkbox" name="work_m3w3[]" id="" class="form-control" value="3"></td>
<td><input type="checkbox" name="work_m3w4[]" id="" class="form-control" value="4"></td>
</tr>
<tr>
<td><input type="checkbox" name="work_m4w1[]" id="" class="form-control" value="1"></td>
<td><input type="checkbox" name="work_m4w2[]" id="" class="form-control" value="2"></td>
<td><input type="checkbox" name="work_m4w3[]" id="" class="form-control" value="3"></td>
<td><input type="checkbox" name="work_m4w4[]" id="" class="form-control" value="4"></td>
</tr>
</table>
<input type="submit" value="Submit">
</form>
ประวัติการแก้ไข 2020-10-29 06:07:28
Date :
2020-10-29 05:59:25
By :
{Cyberman}
ทำความเข้าใจกับ การส่งค่าของ object checkbox ก่อนนะครับ
ถ้าไม่มีการ ติ๊ก มันจะไม่ส่งค่านะครับ เสมือนไม่มีตัวตนอยู่
ถ้าเป็นชื่อเดียวกัน เฉพาะ ค่าที่เช็คจะถูกส่งไปเท่านั้น
<input name="abcd[]" checked value=1>
<input name="abcd[]" value=2 >
<input name="abcd[]" value=3 >
<input name="abcd[]" checked value=4>
<input name="abcd[]" checked value=5>
ค่าที่ได้จะเป็น $_POST['abcd'] = [1,4,5] จะเห็นว่า value 2 กับ 3 จะหายไป
เสมือนไม่มีตัวตน
ดังนั้น attribute value ต้องออกแบบ ให้เราสามารถมา map หาค่าที่แท้จริงได้
ส่วนการออกแบบ attribute ที่ง่ายๆ สำหรับคนที่ยังไม่ชำนาญ คืออย่าออกแบบเป็น array
<input name="abcd_1" checked value=1>
<input name="abcd_2" value=2 >
<input name="abcd_3" value=3 >
<input name="abcd_4" checked value=4>
<input name="abcd_5" checked value=5>
ค่าที่ได้ก็จะเป็น
[
'abcd_1]=>1,
'abcd_4'=>4,
'abcd_5'=>5
]
Date :
2020-11-02 05:35:34
By :
Chaidhanan
ก็ต้อง ออกแบบ value ที่ส่งค่ากลับมาให้ ให้แมพ ได้
mth 1 week 1<input name="abcd[]" checked value='1:1'>
mth 1 week 2<input name="abcd[]" value='1:2'>
mth 1 week 3<input name="abcd[]" checked value='1:3'>
mth 1 week 4<input name="abcd[]" value='1:4'>
mth 2 week 1<input name="abcd[]" value='2:1'>
mth 2 week 2<input name="abcd[]" value='2:2'>
mth 2 week 3<input name="abcd[]" checked value='2:3'>
mth 2 week 4<input name="abcd[]" value='2:4'>
ค่าที่ได้ ก็จะเป็น
$_POST['abcd'] = ['1:1', '1:3', '2:3']
value ไม่ใช่ 1 หรือ 0 แต่เป็นชื่อคีย์ ที่แสดงว่า คีย์นั้น ได้ถูกเช็ค
Date :
2020-11-05 02:33:48
By :
Chaidhanan
น่าจะมองภาพไม่ออก..ก็เลยออกแบบเป็นแบบนี้
บางทีแจ้งผลลัพธ์ที่ต้องการ...แล้วให้คนอื่นแนะแนวทาง
อาจจะเป็นทางออกก็ได้นะ
Date :
2020-11-23 11:51:52
By :
Guest
Load balance : Server 03