สอบถามเรื่องการคำนวนณเงินนะครับ ว่าถ้าเปลี่ยนจำนวนแล้วให้เปลี่ยนจำนวนเงินรวมเลย
ตามรูบนะครับ ถ้าเปลี่ยนจำนวนในช่องจำนวน ราคาในแถวนั้น ก็ต้องเปลี่ยน
แล้วราามรวมทั้งหมดก็ต้องเปลี่ยนด้วย ไม่ทราบว่าผมต้องเขียนเป็นรูปแบบไหนครับผม
นี่เป็นโค้ดที่ผมเขีนยไว้นะครับ ใครพอช่วยผมได้ขอความกรุณาด้วยครับผม
Code (PHP)
<?php
$i=1;
$pay="select * from tblpay where reserveid = '$reid' and list = 'ค่ามัดจำ' ORDER BY payid ASC";
$qpay=mysql_query($pay);
$payrow=mysql_num_rows($qpay);
if ($payrow==0)
{ $list = "ค่าห้องที่เหลือ";
$unit = "คืน";
echo "<tr>";
echo "<td align='center'>1<input type = 'hidden' name = 'txtid1' value ='0' ></td>";
echo "<td><input type = 'text' name = 'txtname1' value = '$list' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtcost1' value =" .number_format($curmoney,2)." readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtamount1' value = '$datecount' readonly='true' size='3' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtunit' size='10' value = '$unit' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtsum1' value = " .number_format($curmoney,2)." size='10' readonly='true' style='text-align:right;'></td>";
echo "</tr>";}
else{
while($data=mysql_fetch_array($qpay))
{ $list=$data['list'];
$cost=$data['cost'];
$amount=$data['amount'];
$unit=$data['payunit'];
$payid=$data['payid'];
echo "<tr>";
echo "<td align='center'>1<input type = 'hidden' name = 'txtid1' value ='" . $payid . "' ></td>";
echo "<td><input type = 'text' name = 'txtname1' value = '$list' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtcost1' value =" .number_format($curmoney,2)." readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtamount1' value = '$datecount' readonly='true' size='3' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtunit' size='10' value = '$unit' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtsum1' value = " .number_format($curmoney,2)." size='10' readonly='true' style='text-align:right;'></td>";
echo "</tr>";}
}
$total=$curmoney;
$i=2;
$pay="select * from tblpay where reserveid = '$reid' and list <> 'ค่ามัดจำ' ORDER BY payid ASC";
$qpay=mysql_query($pay);
while($data=mysql_fetch_array($qpay))
{ $list=$data['list'];
$cost=$data['cost'];
$payid=$data['payid'];
$amount=$data['amount'];
$unit=$data['payunit'];
$sum=$amount*$cost;
$total = $total + $sum;
echo "<tr>";
echo "<td align='center'>$i<input type = 'hidden' name = 'txtid$i' value ='" . $payid . "' ></td>";
echo "<td><input type = 'text' name = 'txtname$i' value = '$list' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtcost$i' value =". number_format($cost,2) ." readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtamount$i' value ='$amount' size='3' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtunit' value = '$unit' size='10' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtsum$i' value =". number_format($sum,2) ." size='10' readonly='true' style='text-align:right;'></td>";
echo "</tr>";
$i++; }
//ยอดรวม
echo "<tr>";
echo "<td align='right' colspan=\"5\"><strong>";
echo "ยอดรวมที่ต้องจ่ายเพิ่ม ";
echo "</strong></td><td><strong>";
echo number_format($total,2);
echo "</strong></td></tr>";
echo "<tr>";
echo "<td align='right' colspan=\"5\"><strong>";
echo "ยอดรวมทั้งสิ้น ";
echo "</strong></td><td><strong>";
echo number_format($total,2);
echo "</strong></td></tr>";
?>
Tag : PHP, MySQL, HTML/CSS
Date :
2012-02-16 15:31:30
By :
nutzaaclub
View :
1796
Reply :
13
อยากให้แก้แล้ว มันคำนวณ เปลี่ยนเลยใช่ป่าวครับ
ถ้าเป็นอย่างนั้น ต้องใช้ javascript ช่วย
Date :
2012-02-16 15:33:47
By :
randOmizE
ยังไง อ่ะครับผม
มีแนวๆๆ ไหมครับผม
พอดีผมไม่ค่อยชำนาญเท่าไร
Date :
2012-02-16 15:48:00
By :
nutzaaclub
ซับซ้อนเหมือนกันนะ เห็นแค่นั้น
เขียนเป็นชั่วโมงเหมือนกัน
Date :
2012-02-16 15:57:29
By :
randOmizE
เดี๋ยวจะทำตัวอย่างให้พรุ่งนี้
Date :
2012-02-16 16:58:28
By :
randOmizE
ตัวอย่าง
http://hmongz.com/bill/checkBill.php
โค๊ด
Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Bill </title>
<meta charset="utf-8" />
<script language="JavaScript" src="jquery1-6.js" type="text/javascript"></script> // เรียก jquery มา
<script>
function caculate(i) // ฟั่งชั่นบวกราคา รับค่าเลข id มา
{
p = "#price"+i; // ตัวแปรเก็บค่า id ของ input ราคา
m = "#amount"+i; // ตัวแปรเก็บค่า id ของ input จำนวน
t = "#total"+i; // // ตัวแปรเก็บค่า id ของ input รวม
$exp = /([a-zA-Z])|(\s)|(\W)/gi; // pattern เช็คห้ามใส่ตัวอักษร และ อักขระพิเศษ
if($(p).val().match($exp)){ // ถ้าใส่ตัวอักษรหรืออักขระพิเศษในช่องราคา
$(p).val(''); // ให้ช่องราคาว่าง
$(p).focus();
}else if($(m).val().match($exp)){ ถ้าใส่ตัวอักษรหรืออักขระพิเศษในช่องจำนวน
$(m).val(''); // ให้ช่องจำนวนว่าง
$(m).focus();
}else{
if($(p).val()>0 && $(m).val()>0){ // ถ้าช่องราคาำและจำนวนมากกว่า 0
$all = $(p).val()*$(m).val(); //ราคา+จำนวน ไว้ใน $all
$(t).val($all);// รวมค่า
totalCalculate(); // คิดยอดรวม
}else if($(p).val()<=0 || $(m).val()<=0){ // ถ้าราคา หรือ จำนวน น้อยกว่า 0
$(t).val(''); // ช่องรวมว่าง
totalCalculate()//คิดยอดรวม
}
}
}
function totalCalculate() // คิดยอดรวม
{
$i = $(".total").length-1; // นับจำนวนรวม
f = $(".total").eq(0).val(); // เก็บค่าช่องรวมตัวแรกไว้
if(f>0){ // ถ้ารวมตัวแรกมีค่ามากกว่า 0
for(x=1;x<=$i;x++){ // วนลูปเก็บค่ารวมแต่ละช่อง
$xx = $(".total").eq(x).val();
if($xx>0){ // ถ้าช่องรวมแต่ละตัวมีค่ามากกว่า 0
f = parseInt(f)+parseInt($xx); // ให้บวกค่าช่องรวมตัวแรก กับ ช่องรวมตัวนั้นๆ
}
}
$("#all").html(f); // แสดงยอดรวมทั้งหมดออกมา
}
}
</script>
</head>
<body>
<table border="1">
<tr>
<th>ลำดับ</th>
<th>รายการ</th>
<th>ราคา</th>
<th>จำนวน</th>
<th>หน่วย</th>
<th>รวม</th>
</tr>
<?php
$order = 1;
while($order<=4){
echo '<tr>';
echo '<td>'.$order.'</td>';
echo '<td>menu'.$order.'</td>';
echo '<td><input type="text" onkeyup="caculate('.$order.')" name="price'.$order.'" id="price'.$order.'" maxlength="7" /></td>';
echo '<td><input type="text" onkeyup="caculate('.$order.')" name="amount'.$order.'" id="amount'.$order.'" maxlength="7" /></td>';
echo '<td>xxx</td>';
echo '<td><input type="text" name="total'.$order.'" id="total'.$order.'" class="total" readonly /></td>';
echo '</tr>';
$order++;
}
?>
<tr>
<td colspan="6" style="text-align: right"><b>ยอดรวม : </b><span id="all">xxxxxx</span></td>
</tr>
</table>
</body>
</html>
ประวัติการแก้ไข 2012-02-17 09:37:58
Date :
2012-02-17 09:27:03
By :
randOmizE
ขอบคุณทุกท่านสำหรับ โค้ดและคำแนะนำครับผม
Date :
2012-02-17 10:42:18
By :
nutzaaclub
มันไม่ไ้นะครับมันขึ้นข้อความแบบนี้นะครับ
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.2; InfoPath.2; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; AskTbPTV/5.14.1.20007)
Timestamp: Mon, 20 Feb 2012 04:20:52 UTC
Message: Invalid character
Line: 13
Char: 46
Code: 0
URI: http://localhost/homestay/Confirm_checkout.php?stat=addchkout&roomnum=101&reserveid=2
Code (PHP)
$total=$curmoney;
$i=2;
$pay="select * from tblpay where reserveid = '$reid' and list <> 'ค่ามัดจำ' ORDER BY payid ASC";
$qpay=mysql_query($pay);
while($data=mysql_fetch_array($qpay))
{ $list=$data['list'];
$cost=$data['cost'];
$payid=$data['payid'];
$amount=$data['amount'];
$unit=$data['payunit'];
$sum=$amount*$cost;
$total = $total + $sum;
echo "<tr>";
echo "<td align='center'>$i<input type = 'hidden' name = 'txtid$i' value ='" . $payid . "' ></td>";
echo "<td><input type = 'text' name = 'txtname$i' value = '$list' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtcost'".$i."' id = 'price'".$i."' value =". number_format($cost,2) ." readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' onkeyup='caculate'".$i."' name = 'amount'".$i."' id = 'txtamount'".$i."' value ='$amount' size='3' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtunit' value = '$unit' size='10' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtsum'".$i."' id = 'total'".$i."' value =". number_format($sum,2) ." size='10' readonly='true' style='text-align:right;'></td>";
echo "</tr>";
$i++; }
//$n=$i-1;
//echo $n;
//ยอดรวม
echo "<tr>";
echo "<td align='right' colspan=\"5\"><strong>";
echo "ยอดรวมที่ต้องจ่ายเพิ่ม ";
echo "</strong></td><td><strong>";
echo "<span id='all'>".number_format($total,2)."</span>";
echo "</strong></td></tr>";
echo "<tr>";
echo "<td align='right' colspan=\"5\"><strong>";
echo "ยอดรวมทั้งสิ้น ";
echo "</strong></td><td><strong>";
echo "<span id='all1'>".number_format($total,2)."</span>";
echo "</strong></td></tr>";
?>
Date :
2012-02-17 11:18:18
By :
nutzaaclub
Code (PHP)
echo "<td align='center'>$i<input type = 'hidden' name = 'txtid$i' value ='" . $payid . "' ></td>";
echo "<td><input type = 'text' name = 'txtname$i' value = '$list' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtcost$i' id = 'price$i' value =". number_format($cost,2) ." readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' onkeyup='caculate($i)' name = 'amount$i' id = 'txtamount$i' value ='$amount' size='3' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtunit' value = '$unit' size='10' readonly='true' style='text-align:right;'></td>";
echo "<td><input type = 'text' name = 'txtsum$i' id = 'total$i' value =". number_format($sum,2) ." size='10' readonly='true' style='text-align:right;'></td>";
แก้ตามบนนี้ครับ
ประวัติการแก้ไข 2012-02-17 11:30:08
Date :
2012-02-17 11:29:16
By :
randOmizE
พี่ครับ ค่่ารวมแต่ละแถวเปลี่ยนแล้วครับ
แต่เวลาผม เปลี่ยนค่า จำนวน มันเด้งไป ช่องราคาแลวช่องนั้นว่าง ต้องกรอกราคาและจจำนวนใหม่แล้วถึงจะเปลี่ยนครับ
แล้วยอดรวมทั้งหมด ไม่คิดใหม่ให้ครับผม
ผมต้องเปลี่ยนตรงไหนครับผม
ประวัติการแก้ไข 2012-02-17 11:46:20
Date :
2012-02-17 11:43:21
By :
nutzaaclub
$exp = /([a-zA-Z])|(\s)|(\W)/gi; // pattern เช็คห้ามใส่ตัวอักษร และ อักขระพิเศษ
แก้เป็น
Code (PHP)
$exp = /([a-zA-Z\-\+\*\|\/#@!&%$\?<>()])|(\s)/gi;
Date :
2012-02-17 11:58:17
By :
randOmizE
ใส่ class="total" .ให้ input='textsum'
แบบนี้
Code (PHP)
echo "<td><input type = 'text' name = 'txtsum$i' id = 'total$i' value =". number_format($sum,2) ." class='total' size='10' readonly='true' style='text-align:right;'></td>";
ไม่มี class='total' มันเลยหาค่ามาคำนวณไม่ได้
Date :
2012-02-17 12:39:06
By :
randOmizE
Load balance : Server 02