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

Registered : 107,511

HOME > PHP > PHP Forum > ต้องการจะเก็บค่า Checkbox ที่เป็น array ซึ่งถ้าไม่ถูกติ๊ก ก็จะไม่มีค่า ทำให้ไม่สามารถเชคได้ว่าติ๊กแถวไหนมาบ้าง





 

ต้องการจะเก็บค่า Checkbox ที่เป็น array ซึ่งถ้าไม่ถูกติ๊ก ก็จะไม่มีค่า ทำให้ไม่สามารถเชคได้ว่าติ๊กแถวไหนมาบ้าง

 



Topic : 121896



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



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




ทำการเก็บค่าข้อมูลจาก checkbox แบบ array

โดยจะมีแถวข้อมูล แบบไม่จำกัด และในแต่ละแถว จะมี check ให้เลือก


ซึ่งเมื่อทำการเก็บค่าจาก form จะได้แต่ค่าที่ถูกติ๊ก โดยไม่รู้ว่าแถวไหนติ๊ก แล้วไหนไม่ได้ติ๊กค่ะ

ตัวอย่าง ถ้าติ๊กให้เป็น 1 ไม่ติ๊กเป็น 0

แถวที่ 1 /
แถวที่ 2
แถวที่ 3 /
แถวที่ 4

ก็ได้ค่า checkbox[] เป็น 1 1

จะทำอย่างไรให้ได้มาเป็น 1 0 1 0 คะ

รบกวนด้วยค่ะ ขอบคุณค่ะ



Tag : PHP, JavaScript







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-03-13 22:26:12 By : JuNiorWP View : 1715 Reply : 10
 

 

No. 1



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



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


Code (JavaScript)
<input type=hidden name=chkbox1 value="0" >
    <input type=checkbox onchange="this.form.chkbox1.value=this.checked? 1 : 0" >
<input type=hidden name=chkbox2 value="0" >
    <input type=checkbox onchange="this.form.chkbox2.value=this.checked? 1 : 0" >


ต้องอ้อมเอาครับ ถ้าอยากได้ค่าเป็น 0/1 เอา name ที่ checkbox ออก ใช้ค่าที่ input hidden แทน






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 07:02:19 By : Chaidhanan
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-14 07:02:19
รายละเอียดของการตอบ ::
... แล้วใส่ค่าเป็นแบบ array อย่างไรคะ ......
ลองใส่ไปแบบนี้แล้วไม่ได้อ่ะค่ะ
<input type=hidden name="chkbox[]" value="0" >
<input type=checkbox onchange="this.form.chkbox[].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox[]" value="0" >
<input type=checkbox onchange="this.form.chkbox[].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox1[]" value="0" >
<input type=checkbox onchange="this.form.chkbox1[].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox1[]" value="0" >
<input type=checkbox onchange="this.form.chkbox1[].value=this.checked? 1 : 0" >


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 10:08:29 By : JuNiorWP
 

 

No. 3



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



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


<input type=hidden name="chkbox[]" value="0" >
<input type=checkbox onchange="this.form.chkbox[0].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox[]" value="0" >
<input type=checkbox onchange="this.form.chkbox[1].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox[]" value="0" >
<input type=checkbox onchange="this.form.chkbox[2].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox[]" value="0" >
<input type=checkbox onchange="this.form.chkbox[3].value=this.checked? 1 : 0" >

ตัวแปร array อ้างอิงให้ถูกครับ


ประวัติการแก้ไข
2016-03-14 10:57:51
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 10:57:22 By : Chaidhanan
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-14 10:57:22
รายละเอียดของการตอบ ::
... แต่ว่าเราไม่สามารถ fix index ของ array ได้ค่ะ เนื่องจาก checkbox สามารถ เพิ่มหรือลดหรือคัดลอก ขึ้นมาอีกก็ได้อ่ะค่ะ เลยทำให้ไม่สามารถที่จะกำหนด index ของ array ได้......

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 11:08:21 By : JuNiorWP
 


 

No. 5



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



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


เมื่อคุณทำการโคลนนิ่ง มันขึ้นมาคุณต้องกำหนดให้ได้ว่า จะให้มันมี ลำดับ เลขที่ยังไง
การทำงานกับ array คุณต้องมีความรู้เกี่ยวกับ ลำดับที่ของ element

<input type=hidden name="chkbox[no][]" value="0" >
<input type=checkbox onchange="this.form.chkbox[no][0].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox[no][]" value="0" >
<input type=checkbox onchange="this.form.chkbox[no][1].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox[no][]" value="0" >
<input type=checkbox onchange="this.form.chkbox[no][2].value=this.checked? 1 : 0" >
<input type=hidden name="chkbox[no][]" value="0" >
<input type=checkbox onchange="this.form.chkbox[no][3].value=this.checked? 1 : 0" >

ถ้าคุณกำหนด no ไม่ได้คุณจะ ไม่สามารถเก็บค่า จาก array ได้
ก่อนใช่คำสั่ง clone คุณต้อง อ่านลำดับที่ที่มีก่อน แล้วถึงจะกำหนดลำดับที่ element ที่สร้างขึ้นมา

Code (JavaScript)
var no = 0:
function new_row(){
   no++;
}

แล้วเอา no ไปเป็นเลขลำดับที่ของ element

ปล. ไม่ใช่แค่เช็คบ๊อค แต่เป็นทุก ฟีลด์ที่ใช้งาน ตัวอย่าง
Code (JavaScript)
var inp = 
  '<input type="text" name="price['+no+']" >'+
  '<input type="text" name="qty['+no+']" >';
  '<input type=hidden name="chkbox['+no+'][]" value="0" >
  '<input type=checkbox onchange="this.form.chkbox['+no+'][0].value=this.checked? 1 : 0" >
  '<input type=hidden name="chkbox['+no+'][]" value="0" >
  '<input type=checkbox onchange="this.form.chkbox['+no+'][1].value=this.checked? 1 : 0" >
  '<input type=hidden name="chkbox['+no+'][]" value="0" >
  '<input type=checkbox onchange="this.form.chkbox['+no+'][2].value=this.checked? 1 : 0" >
  '<input type=hidden name="chkbox['+no+'][]" value="0" >
  '<input type=checkbox onchange="this.form.chkbox['+no+'][3].value=this.checked? 1 : 0" >


หรือ
Code (JavaScript)
var inp = 
  '<input type="text" name="price['+no+']" >'+
  '<input type="text" name="qty['+no+']" >';
  '<div><input type=hidden name="chkbox['+no+'][]" value="0" >
  '<input type=checkbox onchange="this.parentNode().childNodes[0].value=this.checked? 1 : 0" ></div>
  '<div><input type=hidden name="chkbox['+no+'][]" value="0" >
  '<input type=checkbox onchange="this.parentNode().childNodes[0].value=this.checked? 1 : 0" ></div>
  '<div><input type=hidden name="chkbox['+no+'][]" value="0" >
  '<input type=checkbox onchange="this.parentNode().childNodes[0].value=this.checked? 1 : 0" ></div>
  '<div><input type=hidden name="chkbox['+no+'][]" value="0" >
  '<input type=checkbox onchange="this.form.parentNode().childNodes[0].value=this.checked? 1 : 0" ></div>



ประวัติการแก้ไข
2016-03-14 14:31:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 14:19:18 By : Chaidhanan
 


 

No. 6



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


ผมมองอีกแนวทาง
อีกหน้าที่รับค่า post
ลบ hidden ออกทั้งหมด
print_r($_POST); //ดูค่าเล่นๆ
if($_POST){

for($i=0;$i<count($_POST['chkbox'];$i++){

echo $i; // สั่งเล่นๆดูว่า chkbox มาครบตามจำนวนจริงไหม เริ่มตั้งแต่ 0

if($_POST['chkbox'][$i] == ""){ ถ้าค่าโพสต์ที่ส่งมาเป็นค่าว่าง ก็กำหนดค่า
        $chk_box.$i = 0; // กำหนดตัวแปรใหม่ มีค่าเท่ากับ 0
}else{
//ถ้ามีค่าก็ให้เป็น 1
        $chk_box.$i = 1;
}
}
//อยากทำอะไรก็ทำในลูปเช่นการ insert 
echo  $chk_box.$i ; //ลองสั่งเล่นๆ
}


อาจจะดูเวิ่นเว้อแต่ผมหลีกการใช้ input hidden ไม่งั้นก็หันไปใช้ jquery ดีกว่าครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 15:02:07 By : apisitp
 


 

No. 7



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



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


วิธีแบบ คุณ apisitp ก็โอเคนะครับ แค่ตั้งชื่อให้ชัดเจน
เพราะคุณลักษณะของ checkbox ถ้าไม่เช็ค มันจะไม่ส่งค่าอะไรมาเลย
ลำดับที่ของ element ก็จะเปลี่ยนไป ดังนั้นตัองกำหนด ชื่อ/ค่า ให้สามารถตรวจสอบได้

เช่น
<input type=checkbox name='chkbox[1][]' value='1' >
<input type=checkbox name='chkbox[1][]' value='2' >
<input type=checkbox name='chkbox[1][]' value='3' >

ถ้าตรวจสอบแล้วมีค่า = 1 คือ สีแดงถูกเช็ค
ถ้าตรวจสอบแล้วมีค่า = 2 คือ สีน้ำเงินถูกเช็ค
ถ้าตรวจสอบแล้วมีค่า = 3 คือ สีน้ำตาลถูกเช็ค

เลขกำกับ element ต้องมี เลข 1 จาก chkbox[1] ของตัวอย่าง ไม่มีไม่ได้
หรือจะเป็น chkbox_1[] แบบนี้ก็ได้ แต่วิธีอ้างอิงก็จะต่างออกไป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 15:37:19 By : Chaidhanan
 


 

No. 8



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-14 15:37:19
รายละเอียดของการตอบ ::
ต่อยอดได้สบาย!!

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 15:42:32 By : apisitp
 


 

No. 9



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



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


ทำได้แล้วค่ะ แต่ไม่ได้ทำเองนะคะไปหามาอีกทีค่ะ
ใช้เป็นการทำหนดค่าให้กับ checkbox ไปเลยค่ะ
ลองมาหลายวิธีส่วนมากค่าที่ไม่ถูกติ๊กก็จะไม่ถูกส่งค่าไป ก็เลยใช้ jquery เข้ามาช่วยค่ะ

ขอบคุณทุกท่านที่ช่วยเหลือนะคะ

code ที่ใช้ค่ะ

Code (JavaScript)
$('input[type=checkbox]').live("change",function(){
    var target = $(this).parent().find('input[type=hidden]').val();
    if(target == 0)
    {
        target = 1;
    }
    else
    {
        target = 0;
    }
    $(this).parent().find('input[type=hidden]').val(target);
});


<body>
 
<form method="post">
    <input type="submit" />
<p>
    <input type="checkbox" />
    <input type="hidden" name="test_checkbox[]" value="0" />
</p>
<p>
    <input type="checkbox" />
    <input type="hidden" name="test_checkbox[]" value="0" />
</p>
<p>
    <input type="checkbox" />
    <input type="hidden" name="test_checkbox[]" value="0" />
</p>
</form>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 16:21:08 By : JuNiorWP
 


 

No. 10



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


กลับไปหา jquery
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-14 17:07:25 By : apisitp
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ต้องการจะเก็บค่า Checkbox ที่เป็น array ซึ่งถ้าไม่ถูกติ๊ก ก็จะไม่มีค่า ทำให้ไม่สามารถเชคได้ว่าติ๊กแถวไหนมาบ้าง
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

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