รบกวนสอบถาม multiple insert จาก checkBox ครับ ทมีวิธีไหนบ้าง
เขียนโค๊ดไว้แบบไหนล่ะครับ จะได้ช่วยแก้
แต่ถ้าถามว่ามีแบบไหนบ้าง search หาในเวปครับ มีเยอะเลยหลายแบบ
Date :
2019-08-15 16:51:36
By :
Chaidhanan
ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-08-15 16:51:36
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......
โค้ด insert ประมาณนี้ครับ
Code (PHP)
for($i=0;$i<count($_POST["txtindex_plan"]);$i++)
{
$ch1 = $_POST["txtTime_plan1"][$i];
$ch2 = $_POST["txtTime_plan2"][$i];
$ch3 = $_POST["txtTime_plan3"][$i];
$ch4 = $_POST["txtTime_plan4"][$i];
$sql_ac = "INSERT INTO activity(P_id, ac_desc, activity_results, p_of_time1, p_of_time2, p_of_time3, p_of_time4, p_budget, p_per, ac_budget)
VALUES('$P_id', '".$_POST["txtindex_plan"][$i]."', '".$_POST["txtactivity_results"][$i]."', '".$ch1."', '".$ch2."', '".$ch3."', '".$ch4."', '".$_POST["txtbudget_plan"][$i]."', '".$_POST["txtper_plan"][$i]."', '".$_POST["txtac_budget_plan"][$i]."')";
$result5 = mysqli_query($con, $sql_ac) or die ("Error in query: $sql_ac " . mysqli_error());
}
Date :
2019-08-16 09:04:49
By :
Thammarat Phanphai
ตอนนี้ยังไม่ได้เลยครับ
โค้ด form ครับ รบกวนด้วยครับ
Code (PHP)
<div class="row" >
<input type="checkbox" name="txtTime_plan1[]" id="txtTime_plan1" value="1"> 1
<input type="checkbox" name="txtTime_plan2[]" id="txtTime_plan2" value="2"> 2
<input type="checkbox" name="txtTime_plan3[]" id="txtTime_plan3" value="3"> 3
<input type="checkbox" name="txtTime_plan4[]" id="txtTime_plan4" value="4"> 4
</div>
Date :
2019-08-21 08:21:43
By :
1818626091561231
มันก็ต้องอยู่ในแถวเดียวกันครับเพราะ insert อันเดียวกัน
แต่ถ้าเป็น
Code (PHP)
<?php
for($i=0;$i<count($_POST["txtindex_plan"]);$i++)
{
$ch1 = $_POST["txtTime_plan1"][$i];
$ch2 = $_POST["txtTime_plan2"][$i];
$ch3 = $_POST["txtTime_plan3"][$i];
$ch4 = $_POST["txtTime_plan4"][$i];
$sql_ac = "INSERT INTO activity(P_id, ac_desc, activity_results, p_of_time1, p_of_time2, p_budget, p_per, ac_budget)
VALUES('$P_id', '".$_POST["txtindex_plan"][$i]."', '".$_POST["txtactivity_results"][$i]."', '".$ch1."', '".$ch2."', '".$_POST["txtbudget_plan"][$i]."', '".$_POST["txtper_plan"][$i]."', '".$_POST["txtac_budget_plan"][$i]."')";
$result5 = mysqli_query($con, $sql_ac) or die ("Error in query: $sql_ac " . mysqli_error());
if($resutl5 == TRUE)
{
//, '".$ch3."', '".$ch4."'
$sql_ac2 = "INSERT INTO activity(P_id, ac_desc, activity_results, p_of_time3, p_of_time4, p_budget, p_per, ac_budget)
VALUES('$P_id', '".$_POST["txtindex_plan"][$i]."', '".$_POST["txtactivity_results"][$i]."', '".$ch3."', '".$ch4."', '".$_POST["txtbudget_plan"][$i]."', '".$_POST["txtper_plan"][$i]."', '".$_POST["txtac_budget_plan"][$i]."')";
$result2 = mysqli_query($con, $sql_ac2) or die ("Error in query: $sql_ac2 " . mysqli_error());
if($result2 == TRUE)
{
echo 'save';
}else{
echo 'dont save';
}
}
}
?>
อันนี้จะเป็นการทำงาน insert 2 ครั้ง ครั้งแรกมันจะบันทึกตัวที่ติก 12 ก่อน ถ้าบันทึกได้มันจะทำอันที่2 จะติก 3 4
เอาจริงๆที่อย่างที่ พี่ๆ เขาแนะนำครับ Algorithm มันไม่ได้จริง ๆ
ที่จริงน่าจะมีการท้าวความมาสักนิดครับ เช่น หน้านี้ทำงานยังไง บันทึกยังไง เงื่อนไขเป็นแบบไหน ประมาณนี้ครับ
Date :
2019-08-21 09:06:47
By :
nobetaking
แนะนำการใช้ checkbox ใน form
กรณีที่เราไม่ได้เช็ค มันจะไม่ส่งอะไรออกไปเลย ฝั่งเซิฟเวอร์ต้องเขียนเช็คเอาเอง ต้องกำหนดคีย์ให้ชัดเจน
แต่ถ้าเราอยากให้มีการส่งค่ามา ถ้าเช็คเป็นค่า 1 ถ้าไม่เช็คให้เป็นค่า 0
ให้เราสร้าง input type hidden มาทดแทน พอเช็คก็กำหนดค่าลงไปที่ input hidden ตัวนั้นแทน
Code (PHP)
<!-- use jquery -->
<input type="checkbox" id="txtTime_plan1" onclick="$(this).next().val(this.checked? 1: 0)" >
<input type="hidden" name="txtTime_plan1[]" value="1">
ทีนี้เราก็ไม่ต้องสนใจแล้วว่า ตัวแปรของเรา จะไม่มีค่า ส่งมา การกำหนดคีย์ที่วุ่นวายก็จะหายไป
Date :
2019-08-21 12:16:32
By :
Chaidhanan
ที่คุณใส่น่ะ ใส่ยังไงไม่เอามาให้ดู จะได้บอกได้ว่าผิดยังไง
ถ้าให้ผมใส่ให้เลย มันก็เหมือนคุณไม่ได้ลองทำเอง
ซึ่งผมมองดูแล้ว ตัวอย่างที่ผมให้ไป มันก็ชัดเจนอยู่แล้ว
ถ้าวิเคราะห์ โค๊ดซักนิดน่าจะได้นะครับ
Date :
2019-08-21 15:44:18
By :
Chaidhanan
ลองเปลี่ยน this.checked? 1: 0
เป็น $(this).prop('checked')? 1: 0
ลองดู doctype ประกาศไว้เหมือนกันหรือเปล่า ใช้งานจริงกับทดสอบ
Code (PHP)
<div class="row" >
<input type="checkbox" id="txtTime_plan1" checked onclick="$(this).next().val(this.checked? 1: 0)" >
<input type="hidden" name="txtTime_plan1[]" value="1"> 1
<input type="checkbox" id="txtTime_plan2" checked onclick="$(this).next().val(this.checked? 1: 0)" >
<input type="hidden" name="txtTime_plan2[]" value="2"> 2
<input type="checkbox" id="txtTime_plan3" checked onclick="$(this).next().val(this.checked? 1: 0)" >
<input type="hidden" name="txtTime_plan3[]" value="3"> 3
<input type="checkbox" id="txtTime_plan4" checked onclick="$(this).next().val(this.checked? 1: 0)" >
<input type="hidden" name="txtTime_plan4[]" value="4"> 4
</div>
มันต้องเป็นคู่ๆ นะครับ
และก็อย่าลืมใส่ checked ใน checkbox ด้วยเพราะ ค่าใน input text value เป็น 1
ถ้า onclick ใช้ไม่ได้ ซึ่งไม่น่าจะเป็นแบบนั้น
ก็ให้เอา onclick ออก แล้วใช้
Code (JavaScript)
$(wrapper).append(
'<div> ส่วนของ จขกทเขียนไว้ </div>'
).find('input[type="checkbox"]').click(function(){
$(this).next().val(this.checked? 1: 0)
});
หรือจะใส่ class ไว้ให้เลยเพื่อใช้ อ้างอิงแบบ deligate
<input class="MyCheckbox" type="checkbox" id="txtTime_plan4" checked >
Code (JavaScript)
$(document).delegate('.MyCheck', 'click', function(){
var val = this.checked? 1: 0; // pure javascript
// or $(this).prop('checked')? 1: 0; // jquery
$(this).next().val(val);
});
Date :
2019-08-22 13:53:09
By :
Chaidhanan
ก็ default value เป็น 1 คือผมก๊อปมาน่ะครับ เลยไม่ได้เปลี่ยน ก็อยู่ที่ จขกท เองครับ
<input type=hidden value=1 >
ถ้าสีแดงเป็น 1 ก็ต้องใส่ checked ถ้าเป็น 0 ก็ไม่ต้องครับ
ประวัติการแก้ไข 2019-08-22 17:26:17
Date :
2019-08-22 17:25:44
By :
Chaidhanan
Load balance : Server 01