|
|
|
รบกวนสอบถามเรื่อง UPDATE Array แล้วค่าไม่ลงในฐานข้อมูล ครับ |
|
|
|
|
|
|
|
ในคิวรี่เห็นมี AND เยอะๆ แน่ใจนะครับว่าเข้าเงื่อนไข .... AND .... AND .... ครบถ้วน!!
|
|
|
|
|
Date :
2017-08-15 14:24:23 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เปลี่ยน
if($_POST["Cle_ID".$i] != "" && $_POST["CleS_Value".$i] != "" )
เป็น
if(isset($_POST["Cle_ID".$i]) && isset($_POST["CleS_Value".$i]) )
เป็นการตรวจสอบที่ไวกว่า และชัดเจนกว่า
และการใช้ for($i=1;$i<=(int)$Cle_ID;$i++)
แน่ใจแล้วหรือว่าจะต้องให้มัน update ทุก loop
นั้นหมายถึงการ update เป็น อนุกรมก้าวหน้าเลยนะครับ
เริ่มจาก
1
1 2
1 2 3
1 2 3 4 ........
|
|
|
|
|
Date :
2017-08-15 14:43:00 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ คุณ Chaidhanan
และการใช้ for($i=1;$i<=(int)$Cle_ID;$i++)
แน่ใจแล้วหรือว่าจะต้องให้มัน update ทุก loop
ถ้าผมจะแก้ไข ควรเป็นอย่างไรครับ ขอบคุณครับ
|
|
|
|
|
Date :
2017-08-15 15:24:08 |
By :
msookurb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
count array
|
|
|
|
|
Date :
2017-08-15 15:47:11 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
array ที่ส่งมาควรจะมี เลข id สุดท้ายมาด้วย
หรือ กำหนดให้ array เป็นแบบนี้
Array
(
[Cle_ID] => Array( 1, 2, 3, 4, 5, 6, 7, 8)
[Cle_Value] => Array( 1, 2, 3, 4, 5, 6, 7, 8)
[Stu_Code] => 2562
[Yeae_ID] => 2/2560
[Roo_ID] => 2
[Max_ID] => 8
)
Code (PHP)
$conn = mysqli_connect("$hostname","$username","$password","$database");
for($i=0;$i<(int)$_POST['Max_ID;$i++)
{
$sql = "UPDATE cleanstu
SET CleS_Value='".$_POST["Cle_Value"][$i]."'
, CleS_Date='".date("Y-m-d H:i:s")."'
, PerS_ID='".$_SESSION["PerS_ID"]."'
WHERE Stu_Code ='".$_POST["Stu_Code"]."'
AND Yeae_ID ='".$_POST["Yeae_ID"]."'
AND Cle_ID ='".$_POST['Cle_ID'][$i]."'";
$conn->query($sql);
}
ตัวอย่าง html form input
Code (HTML)
<input name="Cle_ID[]" value="1"><input name="Cle_Value[]" value="1">
<input name="Cle_ID[]" value="2"><input name="Cle_Value[]" value="2">
.....
|
|
|
|
|
Date :
2017-08-15 15:56:38 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ คุณ Chaidhanan ครับที่แนะนำ
ฟอร์มที่ใช้ส่งข้อมูลสำหรับการแก้ไขครับ
Code (PHP)
<?php
$linkCleC = mysqli_connect("$hostname","$username","$password","$database");
$queryCleC = "SELECT * FROM cleanstu WHERE Stu_Code = '".$_REQUEST["Stu_Code"]."' and Yeae_ID = '".$_REQUEST["Yeae_ID"]."' and Cla_ID ='".$_REQUEST["Cla_ID"]."' and Cle_ID = '".$objCleS->Cle_ID."' ";
$resultCleC = mysqli_query($linkCleC, $queryCleC);
$rowCleC = mysqli_fetch_array($resultCleC, MYSQLI_ASSOC);
?>
<tr>
<td><?=++$ob;?><input type="hidden" name="Cle_ID<?=$i;?>" value="<?=$objCleS->Cle_ID; ?>"></td>
<td><?=$objCleS->Cle_Name;?> <?=$objCleS->Cle_Detail;?></td>
<td><input name="CleS_Value<?=$i;?>" type="radio" value="1" <? if($rowCleC["CleS_Value"] == '1'){ ?>checked<? } ?>></td>
<td><input name="CleS_Value<?=$i;?>" type="radio" value="2" <? if($rowCleC["CleS_Value"] == '2'){ ?>checked<? } ?>></td>
</tr>
<?
$i++;
}mysqli_free_result($resultCleS); }
mysqli_close($linkCleS);
?>
Code Update
Code (PHP)
$conn = mysqli_connect("$hostname","$username","$password","$database");
for($i=0;$i<(int)$_POST['Max_ID;$i++)
{
// echo $_POST['Cle_ID'][$i]; ตรงนี้ค่าไม่ออกครับ ********
$sql = "UPDATE cleanstu
SET CleS_Value='".$_POST["Cle_Value"][$i]."'
, CleS_Date='".date("Y-m-d H:i:s")."'
, PerS_ID='".$_SESSION["PerS_ID"]."'
WHERE Stu_Code ='".$_POST["Stu_Code"]."'
AND Yeae_ID ='".$_POST["Yeae_ID"]."'
AND Cle_ID ='".$_POST['Cle_ID'][$i]."'";
$conn->query($sql);
}
พอผม echo "<pre>", print_r($_POST, true),"</pre>"; มีค่าออกครับ
แต่ทำไมผม echo $_POST['Cle_ID'][$i]; ตรงนี้ค่าไม่ออกครับ********
|
ประวัติการแก้ไข 2017-08-15 17:24:46 2017-08-15 17:26:39
|
|
|
|
Date :
2017-08-15 17:21:47 |
By :
msookurb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดูตัวอย่าง html ที่ผมทำให้ดูครับ การกำหนดตัวแปร $_POST['Cle_ID'] ให้เป็น array
<input name="Cle_ID[]" value="1"><input name="Cle_Value[]" value="1">
เมื่อนำมาใช้กับ radio ต้องใส่ค่า index ให้กับ element ด้วยเพื่อความชัวร์
Code (PHP)
<td><?=++$ob?><input type="hidden" name="Cle_ID[]" value="<?=$objCleS->Cle_ID?>"></td>
<td><?=$objCleS->Cle_Name?> <?=$objCleS->Cle_Detail?></td>
<td><input name="CleS_Value[<?=$objCleS->Cle_ID?>]" type="radio" value="1" <?=($rowCleC["CleS_Value"] == '1' ? 'checked' : '')?> ></td>
<td><input name="CleS_Value[<?=$objCleS->Cle_ID?>]" type="radio" value="2" <?=($rowCleC["CleS_Value"] == '2' ? 'checked' : '')?> ></td>
เปลี่ยน คำสั่งรับจาก for( $i=.....){
เป็น
Code (PHP)
foreach($_POST['Cle_ID'] as $i=>$Cle_ID){
$sql = "UPDATE cleanstu
SET CleS_Value='".$_POST["CleS_Value"][$Cle_ID]."'
, CleS_Date='".date("Y-m-d H:i:s")."'
, PerS_ID='".$_SESSION["PerS_ID"]."'
WHERE Stu_Code ='".$_POST["Stu_Code"]."'
AND Yeae_ID ='".$_POST["Yeae_ID"]."'
AND Cle_ID ='$Cle_ID' ";
$conn->query($sql);
}
|
ประวัติการแก้ไข 2017-08-15 20:34:42
|
|
|
|
Date :
2017-08-15 20:34:03 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ คุณChaidhanan อย่างยิ่งครับ ผมหาวิธีทำมา 3 วันแล้วครับ ถึงได้โพสต์ถามในวันนี้
ขอบคุณอีกครั้งครับ
|
|
|
|
|
Date :
2017-08-15 20:54:56 |
By :
msookurb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|