Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > ดึงค่าจาก multiple checkbox ในตาราง dynamic table ที่มีหลาย row



 

ดึงค่าจาก multiple checkbox ในตาราง dynamic table ที่มีหลาย row

 



Topic : 135668



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



รบกวนสอบถามครับ ผม ทำ dynamic table กดเพิ่มแถวในการเก็บข้อมูลได้ครับ



โดยแต่ละแถวที่เพิ่ม ต้องใส่ taskname กับ เชคช่วงสัปดาห์ด้วย checkbox (เลือกได้หลาย week ใน 1 task)

ตัวอย่างหน้าจอ พอจะเอาลงฐานข้อมูล

หน้าจอ


print array ออกมา กลับเอา checkbox ของแต่ละ task ไปรวมกันใน array index 0 หมดเลย ครับ


print array ออกมาได้แบบนี้ครับ

array result


เลข 1 วงแดงที่วงไว้ ควรอยู่ใน index ของ task b ไม่แน่ใจว่าต้องเพิ่มเติมตรงไหนรึป่าว ดูเหมือน task ข้อมูลจะมา มี 2 task ก็ เก็บที่ index array 0-1 แต่ checkbox ยังผิดอยู่ครับ

html code input task&checkbox ประมาณนี้ครับ
Code
<td width="400px"> <input type="text" name="work_tasks[]" id="" class="form-control"> </td> <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> <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> <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> <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>




Tag : PHP









ประวัติการแก้ไข
2020-10-28 01:18:07
2020-10-28 01:19:17
2020-10-28 01:19:19
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2020-10-28 01:16:14 By : 2300248270287429 View : 2406 Reply : 11
 

 

No. 1



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

สถานะออฟไลน์


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™
 


 

No. 2

Guest


print array ออกมา กลับเอา checkbox ของแต่ละ task ไปรวมกันใน array index 0 หมดเลย
ก็ถูกแล้วนิ
work_m1w1 ก็มันมีชื่อเดียว
id="" ถ้ามันมีค่าว่างก็ไม่ต้องใส่เข้าไป

ตาม คุณ Genesis น่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-10-28 13:41:05 By : Guest
 

 

No. 3



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



สถานะออฟไลน์
Facebook Blogger

อยากได้ 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}
 


 

No. 4



โพสกระทู้ ( 1,458 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

ศึกษา Multi Dim. Array ครับ
https://www.w3schools.com/php/php_arrays_multidimensional.asp

HTML ไม่มี array แต่ PHP จะปาดให้เมื่อชื่อของ element อยู่ในรูป []

รูปแบบของ Attribute name ที่ PHP เข้าใจ
1. Auto-Indexing -> Array[]
2. Index-based -> Array[index]
3. Associative -> Array[key]

ตัวอย่างมิติเดียวแบบ auto

<input name="a[]" value="1">
<input name="a[]" value="2">
<input name="a[]" value="3">

ฝั่ง server ได้
Array ( [a] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )



มิติเดียวแบบ indexed

<input name="a[2]" value="1">
<input name="a[1]" value="2">
<input name="a[0]" value="3">

ได้
Array ( [a] => Array ( [0] => 3 [1] => 2 [2] => 1 ) )



มิติเดียวแบบ Assoc.


<input name="a[one]" value="1">
<input name="a[two]" value="2">
<input name="a[go]" value="3">

ฝั่ง server ได้
Array ( [a] => Array ( [one] => 1 [two] => 2 [go] => 3 ) )



ตัวอย่างหลายมิติ Mix

<input name="row1[col1][]" value="111">
<input name="row1[col1][]" value="112">
<input name="row1[col1][]" value="113">
<input name="row1[col2][]" value="121">
<input name="row1[col2][]" value="122">
<input name="row1[col2][]" value="123">
<input name="row1[col3][]" value="131">
<input name="row1[col3][]" value="132">
<input name="row1[col3][]" value="133">

<input name="row2[col1][]" value="211">
<input name="row2[col1][]" value="212">
<input name="row2[col1][]" value="213">
<input name="row2[col2][]" value="221">
<input name="row2[col2][]" value="222">
<input name="row2[col2][]" value="223">
<input name="row2[col3][]" value="231">
<input name="row2[col3][]" value="232">
<input name="row2[col3][]" value="233">


ผลลัพธ์
Array ( [row1] => Array ( [col1] => Array ( [0] => 111 [1] => 112 [2] => 113 ) [col2] => Array ( [0] => 121 [1] => 122 [2] => 123 ) [col3] => Array ( [0] => 131 [1] => 132 [2] => 133 ) ) [row2] => Array ( [col1] => Array ( [0] => 211 [1] => 212 [2] => 213 ) [col2] => Array ( [0] => 221 [1] => 222 [2] => 223 ) [col3] => Array ( [0] => 231 [1] => 232 [2] => 233 ) ) )

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-10-29 10:55:13 By : PhrayaDev
 


 

No. 5



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 3 เขียนโดย : {Cyberman} เมื่อวันที่ 2020-10-29 05:59:25
รายละเอียดของการตอบ ::
ผลลัพธ์ที่ต้องการแนวนี้ จะได้ไหมครับ

"tb worktask"

taskname1 | m1w1value | m1w2value | m1w3value | m1w4value | m2w1value | .... | Foreign Key id
taskname2 | m1w1value | m1w2value | m1w3value | m1w4value | m2w1value | .... | Foreign Key id

ตามแนวคิดก็จะใส่ db เป็น row แบบนี้เลยอะครับ แล้วอันสุดท้ายเป็น Foreign Key ตารางอื่นครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-11-02 03:25:11 By : 2300248270287429
 


 

No. 6



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

จะเห็นว่า ไม่ได้คลิกอันแรก ทุก ๆอัน ตามภาพ

scr

แต่ get ตัวแปรที่ได้มา จะเริ่มที่ index 0 1 2 3 ตามลำดับหมดเลยครับ ไม่อยู่ใน index ที่ระบุ/ต้องการเลยครับ ผมต้องเพิ่มหลักการตรงไหนอีกรึป่าวครับ รบกวนอีกครั้งครับ

ขอบคุณทุก idea ครับ

err



code html form/laravel/php

Code
<td><input type="checkbox" name="work_m0[]" id="" class="form-control" value="1"></td> <td><input type="checkbox" name="work_m0[]" id="" class="form-control" value="2"></td> <td><input type="checkbox" name="work_m0[]" id="" class="form-control" value="3"></td> <td><input type="checkbox" name="work_m0[]" id="" class="form-control" value="4"></td> <td><input type="checkbox" name="work_m1[]" id="" class="form-control" value="1"></td> <td><input type="checkbox" name="work_m1[]" id="" class="form-control" value="2"></td> <td><input type="checkbox" name="work_m1[]" id="" class="form-control" value="3"></td> <td><input type="checkbox" name="work_m1[]" id="" class="form-control" value="4"></td> <td><input type="checkbox" name="work_m2[]" id="" class="form-control" value="1"></td> <td><input type="checkbox" name="work_m2[]" id="" class="form-control" value="2"></td> <td><input type="checkbox" name="work_m2[]" id="" class="form-control" value="3"></td> <td><input type="checkbox" name="work_m2[]" id="" class="form-control" value="4"></td> <td><input type="checkbox" name="work_m3[]" id="" class="form-control" value="1"></td> <td><input type="checkbox" name="work_m3[]" id="" class="form-control" value="2"></td> <td><input type="checkbox" name="work_m3[]" id="" class="form-control" value="3"></td> <td><input type[/left]="checkbox" name="work_m3[]" id="" class="form-control" value="4"></td>


Code (PHP)
for ($i = 0; $i < count($request->input('work_tasks')); $i++)
            {
                for ($m = 0; $m < 4; $m++){

                    for ($w = 0; $w < 4; $w++){
                        // echo @$request->input('work_m'.$m)[$w];
                        if(@$request->input('work_m'.$m][$w] !=""){
                            $value[$m][$w] = 1;
                        }else{
                            $value[$m][$w] = 0;
                        }
                        echo "m:".$m."w:".$w."  ".@$request->input('work_m'.$m)[$w]."    value variable is ".$value[$m][$w]."<br>";

                        // echo @$value[$m][$w]."<br>";


                    // echo $value_task[$m];
                    // echo "m: ".$m.", w: ".$m.", value is : ".$value[$m][$w]."<br>";
                    }

                }
            }



ประวัติการแก้ไข
2020-11-02 04:34:47
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-11-02 04:33:28 By : 2300248270287429
 


 

No. 7



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


ทำความเข้าใจกับ การส่งค่าของ 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
 


 

No. 8



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2020-11-02 05:35:34
รายละเอียดของการตอบ ::
ลืมแจ้งไปครับ สามารถเพิ่ม Row แบบ dynamic ได้ครับ จำเป็นต้องใช้แบบ array แน่ ๆ

โดยใช้ ช่องชื่องาน task[],​ m1w1[], m1w2[],... ในข้อมูล row แรก และถ้ามี row ต่อไป ก็ต้องใส่ array ใช่มั๊ยครับ


Progressbar




ประวัติการแก้ไข
2020-11-04 14:13:51
2020-11-04 14:15:09
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-11-04 14:13:15 By : 2300248270287429
 


 

No. 9



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


ก็ต้อง ออกแบบ 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
 


 

No. 10



โพสกระทู้ ( 1,458 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

ตอบความคิดเห็นที่ : 6 เขียนโดย : 2300248270287429 เมื่อวันที่ 2020-11-02 04:33:28
รายละเอียดของการตอบ ::
เพราะอ้าง object ไม่ถูก ไม่ใช่แสดงเพี้ยนแต่อย่างใด อ่านซ้ำ No.4 ถึงจะใช้ Lavago/Laravel มีพื้นฐานอันเดียวกันคือ PHP array ซึ่งคุณยังไม่รู้จัก (ดีพอ) ...การปรับปรุงขั้นแรก เปลี่ยนการ generate table(new row) ให้ได้ตามโครงสร้างที่ตังเองถนัดที่สุด แล้วเทสดูการรับส่งแบบเบสิคก่อนค่อย ประกอบร่าง ที่สำคัญคือ print_r ดูว่าข้อมูลมายังไงหรือ จะ dd ก็ตามสะดวก

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-11-23 11:16:48 By : PhrayaDev
 


 
น่าจะมองภาพไม่ออก..ก็เลยออกแบบเป็นแบบนี้

บางทีแจ้งผลลัพธ์ที่ต้องการ...แล้วให้คนอื่นแนะแนวทาง
อาจจะเป็นทางออกก็ได้นะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-11-23 11:51:52 By : Guest
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ดึงค่าจาก multiple checkbox ในตาราง dynamic table ที่มีหลาย row
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่