|
|
|
รบกวนดูโค็ต การตัดสต๊อกสินค้าหน่อยครับ ทำไมมันไม่ตัดให้ครับ |
|
|
|
|
|
|
|
Code (PHP)
<?
include('conn_mysql.php');
$product_id = $_POST["product_id"];
$dates = date("Y-m-d");
$customer_id = $_POST["customer_id"];
$sql = "insert into tborder (customer_id,pricetotal,dates) VALUES ('$customer_id','44','$dates')";
$query = mysql_db_query($dbname,$sql)or die(mysql_error());
$sql3="select max(order_no) from order_details";
$result=mysql_query($sql3);
$r=mysql_fetch_array($result);
$order_no=$r[0]+1;
for($i=0;$i<count($product_id);$i++)
{
$num = "num".$product_id[$i];
$num = $_POST["$num"];
$total = "total".$product_id[$i];
$total = $_POST["$total"];
$product_code = $_POST["product_code"];
//บรรทัดนี้อ่าครับ
//$sql5 = mysql_query("update product set product_id = balance - '$num[$i]' where order_no = '$product_id[$i]'");
$query = mysql_db_query($dbname,$sql5)or die(mysql_error());
$sql2 = "insert into order_details (order_no,product_id,product_code,quantity) VALUES ('$order_no','$product_id[$i]','$product_code[$i]','$num')";
$query = mysql_db_query($dbname,$sql2)or die(mysql_error());
echo "<script>alert('บันทึกข้อมูลเรียบร้อย');</script>";
}
echo "<script>window.location='ordercustomer.php';</script>";
mysql_close();
?>
Tag : PHP
|
|
|
|
|
|
Date :
2010-11-25 17:38:36 |
By :
beer656 |
View :
1855 |
Reply :
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
//$sql5 = mysql_query("update product set product_id = balance - '$num[$i]' where order_no = '$product_id[$i]'");
ไป remark ไว้มันจะตัดได้ยังไงครับ
|
|
|
|
|
Date :
2010-11-25 20:05:36 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมทำ remark ไว้ให้พี่ดู ครับ เอาออกมันก็ยังไม่ได้อ่าครับ ในตาราง product ไม่เห็นจะตัดเลยอ่าครับ
|
|
|
|
|
Date :
2010-11-25 20:38:53 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
order_no = '$product_id[$i]'
ดูจาก คิวรี่นะ
order no กับ product id มันน่าจะคนละเรื่องกันนะ
น่าจะเป็น
$sql5 = mysql_query("update product set product_id = balance - '$num[$i]' where product_id = '$product_id[$i]'");
มั้ง
|
|
|
|
|
Date :
2010-11-25 22:01:12 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำตามแล้ว ยังไม่ได้เลยครับ ในตาราง product ยังไม่ตัดเลยอ่าครับ
|
|
|
|
|
Date :
2010-11-25 23:49:35 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mysql_query("update product set product_id = balance - '$num[$i]' where order_no = '$product_id[$i]'");
แปลกใจว่าทำไม ไปตัดสต๊อกที่ฟิว product_id ดูคิวรี่ งง ๆ เนาะ จริง ๆ จะ update ฟิว balance หรือเปล่า
mysql_query("update product set balance = (new balance) where product_id = '$product_id[$i]'");
|
|
|
|
|
Date :
2010-11-26 00:03:16 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$result = mysql_query("update product set balance = balance - '$num[$i]' where product_id = '$product_id[$i]'");
ทำไมตัดแค่ สินค้าแรกอันเดียวละครับ สินค้าอื่นไมไม่ตัดละครับ งง
|
|
|
|
|
Date :
2010-11-26 00:23:43 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เงียบหายไปหมดเลย ยังติดอยู่เลยอ่าครับ T^T
|
|
|
|
|
Date :
2010-11-26 12:42:54 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"update product set balance = balance - '$num[$i]' where product_id = '$product_id[$i]'"
echo มันออกมาดูัครับ ถ้าได้หลายอันก็ต้องตัดหลายอัน ถ้าออกมาอันเดียวก็ตัดอันเดียว
|
|
|
|
|
Date :
2010-11-26 17:05:55 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าทำให้ตัดสต๊อกหลายอัน ทำไงหรอครับ ผมลอง echo ออกมาแล้วครับ มันตัดอันเดียว ถ้าหลายอัน ต้องทำยังไงหรอครับ
|
|
|
|
|
Date :
2010-11-26 23:06:32 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หลายอันก็หลาย Query ครับ
|
|
|
|
|
Date :
2010-11-26 23:49:40 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$result = mysql_query("update product set balance = balance - '$num[$i]' where product_id = '$product_id[$i]'");
$result1 = mysql_query("update product set balance = balance - '$num[$i]' where product_id = '$product_id[$i]'");
$result2 = mysql_query("update product set balance = balance - '$num[$i]' where product_id = '$product_id[$i]'");
ผมทำ query หลายอัน แต่ผลมันออกมา ตัดเฉพาะอันแรก เหมือนเดิมครับ
|
|
|
|
|
Date :
2010-11-27 00:26:42 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ช่วยบอกผมหน่อยครับ เงียบหมดเลย
|
|
|
|
|
Date :
2010-11-27 14:57:29 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$_POST['product_id'] มันถูกส่งค่ามาเป็น Array หรือเปล่า
|
|
|
|
|
Date :
2010-11-27 15:09:26 |
By :
kalamell |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมว่าท่านใช้ SQL ผิดนะครับ อย่างเช่นการ update product set product_id=xxxxxxxxxx ผมว่าไอ้ product_id นั่นมันเป็น primary key ของตาราง product หรือเป่าครับ(โดยทั่วไปนะครับสังเกตจากขื่อ) น่าจะเป็น update product set balance=(balance-used) where product_id='$product_id' ส่วนคำสั่ง for($i=0;$i<count($product_id);$i++) ไอ้ตัวแปร $product_id ท่านส่งมาเป็น array เหรอครับ ถ้าอย่างนั้นคงต้องขอดูหน้าที่ท่านส่งข้อมูลไปตัดสต๊อกด้วยแล้วหล่ะครับ เป็นไปได้ขอดูโครงสร้าง database ที่จำเป็นด้วยก็ดีครับ บางทีอาจจะช่วยดู structure กับ relationship ให้ครับ
|
|
|
|
|
Date :
2010-11-27 16:20:49 |
By :
wad |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อีกอย่างครับท่านผมสังเกตว่า sequence ท่านเป็นการทำงานที่จะต้องมี transaction เข้ามาช่วยนะครับ ไม่อย่างนั้นท่านอาจเจอปัญหาตัดสต๊อกบางรายการ แต่บางรายการไม่ถูกตัด คืออัพเดทไม่หมดอ่ะครับ วิธีที่ผมใช้คือ เขียนโปรแกรมดึงข้อมุลที่จะอัพเดททั้งหมดเก็บไว้ในตัวแปร SQL ที่เป็น array แล้วเรียกฟังก์ชั่นจัดการ transaction โดยส่ง sql array นั่นเข้าไปครับ ลองเอาไปใช้ดูนะครับ
function execute_transactions($arr_sql){
//***** จะใช้ Transactions ได้ Table ต้องใช้ ENGINE แบบ InnoDB ด้วยนะครับ(ไม่ทราบเหมือนกันว่าทำไม่แต่ ENGINE อื่นๆไม่ได้ครับ *****
if(gettype($arr_sql)!="array"){//ต้องส่ง SQL มาเป็นอาเรย์เท่านั้น
echo "<font color=\"red\">Not Array SQL command!</font><br>";
return false;
} else {
global $conn;
$affect = 0;
mysql_query("BEGIN");
for ($i=0;$i<count($arr_sql);$i++){
mysql_query($arr_sql[$i]);
if(mysql_error()){
mysql_query("ROLLBACK"); //ถ้่าำไม่สามารถกระทำได้ต้องคืนค่าเดิมทั้งหมด
return false; //ออกจากฟังก์ชั่นเมื่อคืนค่าเดิมแล้ว
}else{
$affect += mysql_affected_rows($conn);
}
}//for ($i=0;$i<count($arr_sql);$i++){
mysql_query("COMMIT");
return $affect;//คืนค่าเป็นจำนวนเร็คคอร์ดที่ถูกกระทำ
}
}//
|
|
|
|
|
Date :
2010-11-27 16:36:53 |
By :
wad |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
function execute_transactions($arr_sql){
//***** จะใช้ Transactions ได้ Table ต้องใช้ ENGINE แบบ InnoDB ด้วยนะครับ(ไม่ทราบเหมือนกันว่าทำไม่แต่ ENGINE อื่นๆไม่ได้ครับ *****
if(gettype($arr_sql)!="array"){//ต้องส่ง SQL มาเป็นอาเรย์เท่านั้น
echo "<font color=\"red\">Not Array SQL command!</font><br>";
return false;
} else {
global $conn;
$affect = 0;
mysql_query("BEGIN");
for ($i=0;$i<count($arr_sql);$i++){
mysql_query($arr_sql[$i]);
if(mysql_error()){
mysql_query("ROLLBACK"); //ถ้่าำไม่สามารถกระทำได้ต้องคืนค่าเดิมทั้งหมด
return false; //ออกจากฟังก์ชั่นเมื่อคืนค่าเดิมแล้ว
}else{
$affect += mysql_affected_rows($conn);
}
}//for ($i=0;$i<count($arr_sql);$i++){
mysql_query("COMMIT");
return $affect;//คืนค่าเป็นจำนวนเร็คคอร์ดที่ถูกกระทำ
}
}//
โค็ตฟังก์ชันที่พี่ให้มา ผมใช้ไม่เป็นอ่าครับ ไม่ทราบว่า เอามาใส่ส่วนไหนของ โค็ตผมครับ งงมากๆ
|
|
|
|
|
Date :
2010-11-27 19:18:48 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หน้าฟอร์มของผมครับ
<?
include('conn_mysql.php');
$sql = "select * from product ";
$query = mysql_db_query($dbname,$sql)or die(mysql_error());
if(mysql_num_rows($query)>0)
{
?>
<tr>
<td width="5%"><div align="center"><font color="#FF0000">ลำดับ</font></div></td>
<td width="29%"><div align="center"><font color="#FF0000">ชื่อสินค้า</font></div></td>
<td width="16%"><div align="center"><font color="#FF0000">ราคา</font></div></td>
<td width="17%"><div align="center"><font color="#FF0000">จำนวนที่ต้องการซื้อ</font></div></td>
<td width="15%"><div align="center"><font color="#FF0000">รวมเงิน</font></div></td>
</tr>
<?
while($rsst=mysql_fetch_object($query))
{
$product_id = $rsst-> product_id;
$product_name = $rsst-> product_name;
$product_price = $rsst->product_price;
$product_code = $rsst->product_code;
$x++;
?>
<tr>
<td><div align="center">
<?=$x?>
<input type="hidden" name="product_id[<?=$x-1;?>]" id="product_id[<?=$x-1;?>]" value="<?=$product_id?>">
</div></td>
<td><div align="center">
<?=$product_name?>
<input type="hidden" name="product_code[]" id="product_code[]" value="<?=$product_code?>" />
<input type="hidden" name="balance[]" id="balance[]" value="<?=$balance?>" />
</div></td>
<td><div align="center">
<?=$product_price?>
</div></td>
<td><div align="center">
<input type="text" name="num<?=$product_id?>" id="num<?=$product_id?>" autocomplete="off" onKeyDown=" if(this.value==0) this.value = '';" onKeyUp="if(this.value==0) this.value=0;document.all.total<?=$product_id?>.value= parseFloat(document.all.num<?=$product_id?>.value)*<?=$product_price?>;" value="0">
</div></td>
<td><div align="center">
<input type="text" name="total<?=$product_id?>" id="total<?=$product_id?>" value="0">
</div></td>
</tr>
<?
}
}
else
{
echo "<div align=\"center\"><font color=\"#FF0000\" size=\"2\">ไม่มีข้อมูล</font></div>";
}
?>
รับค่าจากฟอร์มเพื่อบันทึกและตัดสต๊อก
<?
include('conn_mysql.php');
$product_id = $_POST["product_id"];
$dates = date("Y-m-d");
$customer_id = $_POST["customer_id"];
$sql = "insert into tborder (customer_id,pricetotal,dates) VALUES ('$customer_id','44','$dates')";
$query = mysql_db_query($dbname,$sql)or die(mysql_error());
$sql3="select max(order_no) from order_details";
$result=mysql_query($sql3);
$r=mysql_fetch_array($result);
$order_no=$r[0]+1;
for($i=0;$i<count($product_id);$i++)
{
$num = "num".$product_id[$i];
$num = $_POST["$num"];
$total = "total".$product_id[$i];
$total = $_POST["$total"];
$product_code = $_POST["product_code"];
$balance = $_POST["balance"];
$sql2 = "insert into order_details (order_no,product_id,product_code,quantity) VALUES ('$order_no','$product_id[$i]','$product_code[$i]','$num')";
$query = mysql_db_query($dbname,$sql2)or die(mysql_error());
$result = mysql_query("update product set balance = balance - '$num[$i]' where product_id = '$product_id[$i]'");
echo "<script>alert('บันทึกข้อมูลเรียบร้อย');</script>";
}
echo "<script>window.location='ordercustomer.php';</script>";
mysql_close();
?>
|
|
|
|
|
Date :
2010-11-27 19:27:14 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เงียบหมดเลย ช่วยผมหน่อยเครียดดดด
|
|
|
|
|
Date :
2010-11-28 02:55:15 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เงียบหายไปหมดเลย อ่า ช่วยบอกกันหน่อยครับ
|
|
|
|
|
Date :
2010-11-28 18:48:51 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|