|
|
|
ผมขอแนวทางการ check สินค้าเมื่อกรอกจำนวนสินค้าแล้วให้มันไปเช็ค กับสินค้าคงเหลือในฐานข้อมูลนะครับ |
|
|
|
|
|
|
|
จากรูปภาพด้านบน เมื่อผมกรอกจำนวนสินค้าในช่อง ชิ้น ผมต้องการให้มันไป check กับสินค้าคงเหลือในฐานข้อมูล ว่าพอหรือไหม
ถ้าพอก็สั่งซื้อได้ แต่ถ้าไม่ ก็ให้ alert ว่าไม่ พอกับที่สั่ง ไม่ทราบว่าจะต้องเขียนแบบไหนครับผม
นี้คือโค้ดเต็มๆ ของหน้านี้ครับ
Code (PHP)
<?php
include_once("respons_error.php");
include_once("connectDB.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">
<style type="text/css">
table.coll
{
border-collapse: collapse
}
table.sep
{
border-collapse: separate
}
</style>
<script language="javascript">
function Opensearchcus()
{
window.open('include_admin/searchname.php','myPopup','width=650,height=200,toolbar=0, menubar=0,location=0,status=1,scrollbars=1,resizable=1,left=0,top=0');
}
function Openchoosepro()
{
window.open('include_admin/searchproduct.php','myPopup','width=850,height=500,toolbar=0, menubar=0,location=0,status=1,scrollbars=1,resizable=1,left=0,top=0');
}
function test()
{
alert("test");
}
</script>
<script>
function check_number(a) {
if(window.event){ // IE
keychar = a.keyCode;
}
if ( keychar != 13 && ( keychar < 48) || ( keychar > 57)) {
event.returnValue = false;
}else
{
//alert("Pass");
}
}
</script>
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
function addproductsale(ProductID,Qty,Price,CID){
//Ajax sale
HttPRequest = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
HttPRequest = new XMLHttpRequest();
if (HttPRequest.overrideMimeType) {
HttPRequest.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!HttPRequest) {
alert('Cannot create XMLHTTP instance');
return false;
}
var url = 'include_admin/add_product-sale.php';
var pmeters = "tProductID=" + ProductID+
"&tQty=" + Qty + "&tPrice=" + Price + "&tCID=" + CID;
HttPRequest.open('POST',url,true);
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
HttPRequest.setRequestHeader("Content-length", pmeters.length);
HttPRequest.setRequestHeader("Connection", "close");
HttPRequest.send(pmeters);
HttPRequest.onreadystatechange = function()
{
if(HttPRequest.readyState == 3) // Loading Request
{
document.getElementById("addproduct").innerHTML = "Now is Loading...";
}
if(HttPRequest.readyState == 4) // Return Request
{
document.getElementById('addproduct').innerHTML = HttPRequest.responseText;
}
}
}
</script>
<script type="text/javascript">
function delproductsale(ProductID,Netqty){
//Ajax Del sale
//alert("ID = " +ProductID+"&Netqty = "+Netqty);
HttPRequest = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
HttPRequest = new XMLHttpRequest();
if (HttPRequest.overrideMimeType) {
HttPRequest.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!HttPRequest) {
alert('Cannot create XMLHTTP instance');
return false;
}
var url = 'include_admin/add_product-sale.php';
var pmeters = "ProID=" + ProductID+"&Netqty=" + Netqty+
"&del=del";
HttPRequest.open('POST',url,true);
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
HttPRequest.setRequestHeader("Content-length", pmeters.length);
HttPRequest.setRequestHeader("Connection", "close");
HttPRequest.send(pmeters);
HttPRequest.onreadystatechange = function()
{
if(HttPRequest.readyState == 3) // Loading Request
{
document.getElementById("addproduct").innerHTML = "Now is Loading...";
}
if(HttPRequest.readyState == 4) // Return Request
{
document.getElementById('addproduct').innerHTML = HttPRequest.responseText;
}
}
}
</script>
<body>
<form action="" method="post" id="formsearchname" style="display:none">
<table border="0" align="center">
<tr>
<td>ค้นหาลูกค้า</td>
<td><input name="txtsearch" type="text" id="txtsearch" width="100" value="<?php if(isset($_REQUEST['txtsearch'])){echo $_REQUEST['txtsearch'];}?>"/></td>
<td><select id="searchcus" name="typename">
<option value="fname" <?php if ($typename=="fname"){echo "selected=\"selected\"";}?>>ชื่อ</option>
<option value="nname" <?php if ($typename=="nname"){echo "selected=\"selected\"";}?>>ชื่อเล่น</option>
</select></td>
<td> </td>
</tr>
</table>
<span>
</span>
</form>
<span>
<table border="0" align="center">
<tr>
<td width="90" height="26"><h3>รหัสลูกค้า</h3></td>
<td width="249"><input name="txtidcus" type="text" disabled="disabled" id="txtidcus" size="20"/>
<input type="hidden" id="hdidcus" name="hdidcus" value="" />
<input type="button" value=" ค้นหา " name="searchname" id="searchname" onclick="Opensearchcus()" style="font-size:medium"/></td>
<td width="101"><h3>รหัสสมาชิก</h3></td>
<td width="181"><input type="text" id="txtidmem" name="txtidmem" disabled="disabled"/><input type="hidden" id="hdidmem" name="hdidmem" value="" /></td>
</tr>
<tr>
<td height="26"><h3>ชื่อ</h3></td>
<td><input type="text" id="txtname" name="txtname" disabled="disabled"/>
<input type="hidden" id="hdname" name="hdname" value="" /></td>
<td><h3>สกุล</h3></td>
<td><input type="text" id="txtlastname" name="txtlastname" disabled="disabled"/>
<input type="hidden" id="hdlastname" name="hdlastname" value="" /></td>
</tr>
<tr>
<td height="31"><h3>ส่วนลด(%)</h3></td>
<td><input name="txtdiscount" type="text" id="txtdisconut" size="10" disabled="disabled" />
<input name="hddiscount" type="hidden" id="hddisconut" size="10" /></td>
</tr>
</table>
</span>
<p> </p>
<p><span> </span><span>
</span></p>
<span>
<hr />
</span>
<span id="selectproduct">
<table width="635" border="0" align="center">
<form action="" id="formproduct" method="post">
<tr>
<td width="121" height="26"><h3>ชื่อสินค้า</h3></td>
<td colspan="6">
<input type="hidden" id="productid" size="15" />
<input name="productname" type="text" id="productname" size="40" disabled="disabled" />
<input name="hdproductname" type="hidden" id="hdproductname" size="40" />
<input type="button" name="choosepro" id="choosepro" value=" เลือกสินค้า " onclick="Openchoosepro();" style="font-size:medium"/></td>
</form>
<tr>
<td height="26"><h3>ราคา/หน่วย</h3></td>
<td width="214"><h3>
<input name="productprice" type="text" id="productprice" value="" size="10" disabled="disabled" />
<input name="hdproductprice" type="hidden" id="hdproductprice" value="" size="20" />
บาท</h3></td>
<td width="61"><h3>จำนวน</h3></td>
<td width="221">
<h3>
<input name="productqty" type="text" onkeypress="check_number(event);" id="productqty" size="10" />
ชิ้น</h3></td>
</tr>
</table>
</span>
<p> </p>
<table width="86" border="0" align="center">
<tr>
<td width="80"><input type="button" name="submitpro" id="submitpro" value=" เพิ่ม " onclick="addproductsale(document.getElementById('productid').value, document.getElementById('productqty').value,document.getElementById('hdproductprice').value,document.getElementById('hdidcus').value);" style="font-size:medium"/></td>
</tr>
</table>
<p> </p>
<span>
<hr />
</span>
<span id=addproduct>
</span>
</body>
</html>
Tag : PHP, MySQL, HTML/CSS, JavaScript, Ajax, jQuery
|
ประวัติการแก้ไข 2013-02-19 19:56:50
|
|
|
|
|
Date :
2013-02-19 15:17:32 |
By :
nutzaaclub |
View :
1538 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบได้แค่หลักการนะครับ เพราะไม่ค่อยเก่งพวกโค้ด
ก็ post ค่า จำนวนที่สั่ง กับ id สินค้าในฟอร์ม ไปตรวจสอบครับ
แล้วก็ select sum(qty)as sum_qty from product where id = '".$_POST["id"]."'
ก็จะได้ sum_qty มา เอามาลบกับ POST["จำนวนที่สั่ง"]
ถ้าไม่มากกว่า ก็ update ตารางได้เลยครับ
อีกวิธีนึง ก็ แสดงค่า สินค้าคงเหลือเลยครับ อาจจะใช้ script หรืออะไรก็แล้วแต่ ไม่ให้สั่งเกิน
แต่หลักๆ ต้องออกแบบตารางดีๆ ด้วยครับ สำคัญมาก
ประมาณนี้ครับ
|
|
|
|
|
Date :
2013-02-19 22:08:36 |
By :
nutsuanplu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204.<input name="productname" type="text" id="productname" size="40" disabled="disabled" />
205.<input name="hdproductname" type="hidden" id="hdproductname" size="40" />
ถ้าอย่างนั้นผมก็จะอ้างถึงชื่อสินค้าเพื่อการดึงข้อมูลน่ะครับ จะเลือก hdproductname แล้วกัน
Code (PHP)
<script>
$("input[name='productqty']").keyup(function(e){
if ( e.keyCode != 13 && ( e.keyCode < 48) || ( e.keyCode > 57)) {
var pname = $("#hdproductname").val();
$.get("checkAvailableqty.php",{prodname:pname,requireqty:$(this).val()},function(data){
if($(data).length>1){ alert(data); return false;}else{return true;}
// ถ้ามีตัวอักษรที่ส่งกลับมาจาก callback function ของ jquery แสดงว่ามีข้อความแจ้งข้อผิดพลาดครับ
});
}else{
$(this).val('');
}
});
</script>
"checkAvailableqty.php"
<?php
if(isset($_GET["prodname"],$_GET["requireqty"])){
// เชื่อมต่อเดต้าเบส และเทเบิ้ล
$sql = "select qty from tb_stock where productname='{$_GET["prodname"]}' limit 1";
$res = mysql_query($sql) or die(mysql_error()."[$sql]");
$data = mysql_fetch_assoc($res);
if($data["qty"] < $_GET["requireqty"]){
echo "มีสินค้าไม่เพียงพอต่อความต้องการ [มีจำนวน:'{$data["qty"]}' ]";
}
// ถ้ามีพอก็ไม่ต้อง echo อะไรออกไป เพราะใน callback function ของ jquery ใช้วิธีเช็คความยาวของสตริง
}
?>
ทดสอบดูน่ะครับ ผมก็ไม่แน่ใจว่าจะรันผ่านมั๊ย แต่แนวความคิดเป็นแบบนี้หล่ะครับ
|
|
|
|
|
Date :
2013-02-20 10:40:48 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับผม เดี๋ยวผมลอง เอาไปใช้แล้วลองรันดูครับผม
|
|
|
|
|
Date :
2013-02-20 11:21:39 |
By :
nutzaaclub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|