|
|
|
ช่วยด้วยครับ ติดนิดเดียว เรื่อง การ insert หลาย ๆ records |
|
|
|
|
|
|
|
คือผมเอา ตัวอย่าง การ insert multiple record มาจากที่แล้วดัดแปลงดูน่ะครับ
ที่ผมทำคือ เปลี่ยนจากการใส่ค่า เป็นดึงค่ามาจาก database แทนครับ
ปัญหาคือ เมื่อจะทำการ insert มัน insert ให้แค่แถวเดียวเองครับ
เป็นแถวสุดท้าย
ช่วยดู code แล้วช่วยผมแก้ไขหน่อยนะครับ
ขอบคุณมากครับ
code:
phpMySQLAddForm.php
Code (PHP)
<html>
<head>
<title>add form</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
</head>
<body>
<?php
$con =mysql_connect ("localhost","root","1234");
mysql_select_db("dbstationery",$con);
mysql_query("SET NAMES tis620");
$sql = "select jos_vm_order_item.order_id,jos_vm_order_item.order_item_name,jos_vm_order_item.product_quantity,jos_vm_order_item.product_final_price,jos_vm_user_info.vm_departmentid from jos_vm_order_item,jos_vm_user_info where jos_vm_order_item.user_info_id=jos_vm_user_info.user_info_id";
$result = mysql_query($sql);
$num = mysql_num_rows($result);
?>
<form action="phpMySQLAddSave.php" name="frmAdd" method="post">
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">Order ID </div></th>
<th width="160"> <div align="center">Product Name </div></th>
<th width="198"> <div align="center">Quantity </div></th>
<th width="97"> <div align="center">Price </div></th>
<th width="70"> <div align="center">Departmrnt ID </div></th>
</tr>
<?
$line = $num;
if($line == 0){$line=1;}
for($i=1;$i<=$line;$i++)
{
while ($data = mysql_fetch_array($result) ) {
?>
<tr>
<td><input type="text" name="order_id<?=$i;?>" size="5" value="<?php echo $data[order_id]; ?>" readonly="readonly"></td>
<td><input type="text" name="item_name<?=$i;?>" size="30" value="<?php echo $data[order_item_name]; ?>" readonly="readonly"></td>
<td><input type="text" name="quantity<?=$i;?>" size="5" value="<?php echo $data[product_quantity]; ?>" readonly="readonly"></td>
<td><input type="text" name="price<?=$i;?>" size="10" value="<?php echo $data[product_final_price]; ?>" readonly="readonly"></td>
<td><input type="text" name="dep_id<?=$i;?>" size="10" value="<?php echo $data[vm_departmentid]; ?>" readonly="readonly"></td>
</tr>
<?
}//while
}
?>
</table>
<input type="submit" name="submit" value="submit">
<input type="hidden" name="hdnLine" value="<?=$i;?>">
</form>
</body>
</html>
phpMySQLAddSave.php
Code (PHP)
<html>
<head>
<title>Add Save</title>
</head>
<body>
<?
$objConnect = mysql_connect("localhost","root","1234") or die("Error Connect to Database");
$objDB = mysql_select_db("dbstationery");
mysql_query("SET NAMES tis620");
for($i=1;$i<=$_POST["hdnLine"];$i++)
{
if($_POST["order_id$i"] != "")
{
$strSQL = "INSERT INTO jos_approve_list ";
$strSQL .="(order_id,item_name,product_quantity,product_final_price,vm_departmentid) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["order_id$i"]."','".$_POST["item_name$i"]."', ";
$strSQL .="'".$_POST["quantity$i"]."' ";
$strSQL .=",'".$_POST["price$i"]."', ";
$strSQL .="'".$_POST["dep_id$i"]."') ";
$objQuery = mysql_query($strSQL);
}
}
echo "Save Done.";
mysql_close($objConnect);
?>
</body>
</html>
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2012-08-09 10:56:49 |
By :
error 404 |
View :
1339 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รอคำแนะนำอยู่นะครับ
ช่วยทีนะ
|
|
|
|
|
Date :
2012-08-09 11:34:08 |
By :
error 404 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. ผมกลัวว่าค่าตัวแปร $i มันไม่วนชื่อ input name มันเลยซ้ำ ลอง echo ค่า $i ใน code phpMySQLAddForm.php ตรงบรรทัดที่ 36 - 43 ออกมาดูครับ ว่าชื่อมันเป็นเปลียนตามตัวแปรหรือเปล่า
2. ลองดูค่า $i สุดท้ายที่ code phpMySQLAddForm.php ตรงบรรทัดที่ 51 ว่ามีจริงหรือเปล่าด้วยครับ
3. โค้ดก็ใกล้เคียงกับ ตย. https://www.thaicreate.com/php/php-mysql-add-insert-multiple-record.html แตกต่างตรงที่มี while เข้ามาเพิ่ม ไม่แน่ใจว่าเกี่ยวหรือเปล่า
ลองเช็คตามที่บอกหน่อยครับ ถ้าไม่ได้จะได้เอา Code ไปลองทดสอบตาม
ผมลองเช็คมาให้แล้ว ค่า $i ของคุณออกเป็น 1 อย่างเดียวเลย ทำให้ชื่อของ input name มันซ้ำกันหมด....
ลองดู loop for กับ while ว่าควรใช้แบบไหนดี
แนะนำว่าให้เอา for ออกครับแล้วกำหนด $i=1 เท่านั้น
แล้วเพิ่ม $i++; ก่อนออกจาก while ค่า $i จะเพิ่มให้เอง ชื่อก็จะไม่ซ้ำแล้วครับ
|
ประวัติการแก้ไข 2012-08-09 12:24:04 2012-08-09 12:26:39 2012-08-09 12:29:56
|
|
|
|
Date :
2012-08-09 12:10:10 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ คุณ apisitp มาก ๆ นะครับ
ช่วยแนะนำผมตั้งแต่กระทู้ก่อน
ตามที่คุณแนะนำมา ผมก็คิดว่าค่า $i มันแปลก ๆ อยู่เหมือนกัน
ตามตัวอย่างเค้ามีการกำหนด row ก่อนจาก select แต่ผมกำหนด row จาก $num ที่ดึงมา
ปัญหาน่าจะอยู่ตรงนี้มั้งครับ ผมยังมีความรู้เรื่อง code น้อยจึงดูไม่ออก
แต่ถ้าเกิด ว่าตอนดึงค่ามาแล้วให้ insert เลยจะทำได้ไหมครับโดยไม่ต้องผ่้านการ submit น่ะครับ
ผมคิดว่ามัน เวิร์คกว่า แต่จะ เพิ่ม script เข้าไปยังไงอ่ะครับ
ช่วยผมหน่อยนะครับ อีกนิดเดียวเอง
|
|
|
|
|
Date :
2012-08-09 12:20:17 |
By :
error 404 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Edit อธิบายเพิ่มในกระทู้เดิมไปแล้ว ลองดูก่อนครับ
|
|
|
|
|
Date :
2012-08-09 12:34:29 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ คุณ apisitp มาก ๆ นะครับ
ลองทำตามคำแนะนำแล้ว สำเร็จแล้วครับ
ขอบคุณจริง ๆ ครับ
|
|
|
|
|
Date :
2012-08-09 13:50:23 |
By :
error 404 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|