Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > พี่ๆครับ ช่วยแก้ code ให้ผมด้วย เกี่ยวกับ ระบบ shopping cart แบบ Ajax ครับ ^_^



 

พี่ๆครับ ช่วยแก้ code ให้ผมด้วย เกี่ยวกับ ระบบ shopping cart แบบ Ajax ครับ ^_^

 



Topic : 105607



โพสกระทู้ ( 4 )
บทความ ( 0 )



สถานะออฟไลน์




คือผมทำเว็บขายของออนไลน์ โดยใช้ โค้ดจากเว็บนี้น่ะครับ

http://php-for-ecommerce.blogspot.com/2011/12/add-to-cart-ajax-jquery.html#comment-form

ทุกอย่าง ok หมดเลยครับ แต่ติดปัญหาอยู่นิดเดียว คือ พอแก้จำนวนสินค้าในหน้าตะกร้า ราคารวมของแต่ละชนิด มันไม่อัพเดททันทีครับ ต้องปิดหน้านี้ก่อนแล้วเปิดใหม่ ราคารวมของแต่ละชนิดถึงจะอัพเดท ผิดกับ จำนวนรวม กับ ราคารวม ซึงพอมีการแกไขจำนวน ตัวเลขก็จะเปลี่ยนทันที อันนี้จะแก้ใค้ดยังไงครับ ให้ราคารวมสินค้าแต่ละชนิดมันอัพเดททันที

จากรูปนี้นะครับ

รูปที่มีปัญหาครับ

โค้ดครับ
mycart.php

Code (PHP)
<?php
session_start();
include "function.php";
include "dbconfig.php";
include "config.php";
conndb();


?>



<script type="text/javascript">
function deleteProduct(ele){
	var CartEle=$(ele).parent().parent().attr('id');
	var CartId=$(ele).parent().parent().attr('id').split("-");
		$.ajax({
  		url:"chkcart.php?cartdel="+CartId[1],
		dataType: 'json',
  		success: function(data) {
			$('.cart_num').html(data.num);
			$('.cart_quantity').html(data.quantity);
			$('.cart_price').html(data.price);
			$('.productTable tr#'+CartEle+'').remove();
		}
	});	
}
function updateProduct(ele){
	var Pd=$(ele).parent().parent().attr('id').split("-");
	var quantity=$(ele).val();
	$.ajax({
  		url:"chkcart.php",
		type: 'POST',
		data: {product_id:Pd[0],updatecart:Pd[1], quantity:quantity},
		dataType: 'json',
  		success: function(data) {
			$('.cart_num').html(data.num);
			$('.cart_quantity').html(data.quantity);
			$('.cart_price').html(data.price);
		}
	});	
}
</script>





<script Language="Javascript">
<!--
function Conf(object)
{
     if (confirm("กรุณายืนยันการสั่งซื้อ ?") == true) {
          parent.location='confirm_order.php';
          return false;
     }
     return false;
}
//-->
</script>





<link href="css/style_demo.css" rel="stylesheet" type="text/css">

<table width="750" border="0" align="left" cellpadding="2" cellspacing="2">
  <tr>
    <td align="center" bgcolor="#FFFFFF"><img src="images/shopping_cart_header.png" width="750" height="102" />
      <table width="750" class="productTable" border="0" cellpadding="5" cellspacing="0" style="border-bottom:#DADADA solid 2px;background:#9C0;">
      <tr bgcolor="#FFFF99">
        <td width="8%" align="center" bgcolor="#34ccff"><span class="text_14_black_bold">ลำดับ</span></td>
        <td width="54%" align="center" bgcolor="#34ccff"><span class="text_14_black_bold"><b>ชื่อสินค้า</b></span></td>
        <td width="13%" align="center" bgcolor="#34ccff"><span class="text_14_black_bold"><b>ราคาต่อหน่วย</b></span></td>
        <td width="8%" align="center" bgcolor="#34ccff"><span class="text_14_black_bold"><b>จำนวน</b></span></td>
        <td width="10%" align="center" bgcolor="#34ccff"><span class="text_14_black_bold"><b>ราคารวม</b></span></td>
        <td width="7%" align="center" bgcolor="#34ccff"><span class="text_14_black_bold"><strong>ลบš</strong></span></td>
      </tr>
      <?
if(count($_SESSION["cartNumber"])>0){#จำนวนข้อมูลที่มีอยู่หากมากกว่า0
foreach($_SESSION["cartNumber"] as $RowCount){#วนลูปดึงข้อมูลสินค้าออกมาให้ครบตามจำนวนข้อมูลที่มีอยู่
$rs_showpd=mysql_fetch_array(mysql_query("SELECT* FROM product_tb WHERE id=".$_SESSION[$RowCount][0].""));
/*if($rs_showpd["unit_have"]<1){#ตรวจสอบจำนวนสินค้า หากจำนวนสินค้าเท่ากับ0
echo "<script>";
echo "alert('ขออภัยสินค้า \"".$rs_showpd["product_name"]."\" หมดแล้ว');window.location='chkcart.php?del=".$RowCount."';";
        echo "</script>";
exit();
}else if($_SESSION[$RowCount][1]>$rs_showpd["unit_have"]){#จำนวนสินค้ามากกว่าจำนวนสินค้าในร้าน
echo "<script>";
echo "alert('จำนวนสินค้าของ \"".$rs_showpd["product_name"]."\" มีมากกว่าจำนวนสินค้าในร้าน');";
        echo "</script>";
$_SESSION[$RowCount][1]=$rs_showpd["unit_have"];#เซตจำนวนสินค้าใหม่ให้มีค่่าเท่ากับจำนวนสินค้าในร้าน
}*/
?>
      <tr id="<?=$rs_showpd["id"]?>-<?=$RowCount?>">
    <td bgcolor="#FFFFFF"><?=$rs_showpd["id"]#รหัสสินค้า?></td>
    <td height="23" bgcolor="#FFFFFF">
      <?=$rs_showpd["product_name"]#ชื่อสินค้า?></td>
    <td align="center" bgcolor="#FFFFFF"><?=$rs_showpd["priceperunit"]#ชื่อสินค้า?></td>
    <td align="center" bgcolor="#FFFFFF"><input style="text-align:center;" name="unit_have" type="text" id="unit_have" size="5" value="<?=$_SESSION[$RowCount][1]#จำนวนสินค้า?>" onkeyup="updateProduct(this);"/></td>
    <td align="center" bgcolor="#FFFFFF"><?=$TotalPriceAmount=$_SESSION[$RowCount][2]*$_SESSION[$RowCount][1]#ราคาสินค้า?></td>
    <td align="center" bgcolor="#FFFFFF"><a href="#" onclick="deleteProduct(this); return false;"><img src="images/delete.png" width="20" height="20" border="0"/></a></td>
  </tr>
  <?
$TotalAmount+=$_SESSION[$RowCount][1];#คำนวณหาจำนวนสินค้าทั้งหมด
$TotalPrice+=$TotalPriceAmount;#คำนวณหาราคาสินค้าทั้งหมด
}
?>
      <tr style="border-bottom:#DADADA 1px solid;">
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
        <td height="23" align="right" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;"><b><span class="text_14_black_bold">ราคารวม</span></b></td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;"><strong> <span class="cart_quantity">
          <?= $TotalAmount?>
        </span> </strong></td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;"><strong> <span class="cart_price">
          <?= $TotalPrice?>
        </span> </strong></td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
      </tr>
      <?
if($use_vat == 1)
{
?>
      <tr style="border-bottom:#DADADA 1px solid;">
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
        <td height="23" align="right" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;"><b>&nbsp;&nbsp;<span class="text_14_black_bold">ภาษีมูลค่าเพิ่ม (7%)</span></b></td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;"><strong><span class="cart_price">
          <?= $TotalPrice*0.07?>
        </span></strong></td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
      </tr>
      <tr style="border-bottom:#DADADA 1px solid;">
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
        <td height="23" align="right" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;"><b class="text_14_black_bold">&nbsp;&nbsp;ราคารวมภาษีมูลค่าเพิ่ม (7%)</b></td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;"><strong><span class="cart_price">
          <?= $TotalPrice+$TotalPrice*0.07?>
        </span></strong></td>
        <td align="center" bgcolor="#34ccff" style="border-bottom:#DADADA solid 1px;">&nbsp;</td>
      </tr>
      <?
}
?>
      <? } else { ?>
      <tr>
        <td height="23" colspan="6" align="center" bgcolor="#34ccff"><strong>ไม่พบสินค้าในตระกร้า</strong></td>
      </tr>
      <? } ?>
    </table>
      <br>
    <INPUT TYPE="button" class="btn" onClick="return Conf(this);" VALUE="ยืนยันการสั่งซื้อ"></td>
  </tr>
</table>




chkcart.php

Code (PHP)
<?php
session_start();
include "function.php";
include "dbconfig.php";
include "config.php";
conndb();

function getjson_cart(){
	if(count($_SESSION["cartNumber"])>0){
		$TotalAmount=0;$TotalPrice=0;
		foreach($_SESSION["cartNumber"] as $RowCount){
		$TotalAmount+=$_SESSION[$RowCount][1];#คำนวณหาจำนวนสินค้าทั้งหมด
		$TotalPrice+=($_SESSION[$RowCount][2]*$_SESSION[$RowCount][1]);#คำนวณหาราคาสินค้าทั้งหมด
		}
		echo '{"num":"'.count($_SESSION["cartNumber"]).'","quantity":"'.$TotalAmount.'","price":"'.$TotalPrice.'"}';
	}else{
		echo '{"num":"0","quantity":"0","price":"0"}';
	}
}
if(isset($_GET["cartid"])){#Add to cart
$cid=$_GET["cartid"];
$_SESSION["cartcount"]++;
$cartcount=$_SESSION["cartcount"];
$CItemCount="cart$cartcount";
$CartStatus="";#เอาไว้เก็บสถานะสินค้าว่าลูกค้าเลือกซ้ำหรือไม่
 $rs_showpd=mysql_query("SELECT * FROM  product_tb WHERE id=".$cid."");
$showpd=mysql_fetch_array($rs_showpd);
	if(count($_SESSION["cartNumber"])!=0 ){
		foreach($_SESSION["cartNumber"] as $RecCart){
			if($_SESSION[$RecCart][0]==$cid){#หากสินค้าซ้ำกับของเดิม(โดยตรวจสอบจาก ID ของสินค้า)
			$_SESSION[$RecCart][1]++;#เพิ่มจำนวนสินค้า
			$CartStatus="double";#เปลี่ยนสถานะ
		}
	}
}
if($CartStatus==""){#สถานะเป็นค่าว่าง แสดงว่าสินค้าไม่ซ้ำกับของเดิม
	$_SESSION[$CItemCount][0]=$cid;//รหัสสินค้า
	$_SESSION[$CItemCount][1]=1;//จำนวนเริ่มต้น
	$_SESSION[$CItemCount][2]=$showpd['priceperunit'];//ราคา
	$_SESSION[$CItemCount][3]='';//ความต้องการเพิ่มเติม เซตให้เป็นค่าว่างก่อน เพราะเป็นค่าเริ่มต้น
	$_SESSION["cartNumber"][$cartcount]=$CItemCount;#ตำแหน่งของแต่ละเรคคอร์ดของสินค้า
} 
getjson_cart();
mysql_free_result($rs_showpd);
mysql_close($conn);
}

if(isset($_GET["cartdel"])){	
$RecDel=$_GET["cartdel"];
foreach($_SESSION["cartNumber"] as $RecCart){#วนไปจนกว่าจะเจอแถวของสินค้าที่เลือกลบ
	if($RecCart==$RecDel){
	$CNum =preg_replace("/[^0-9]/", '', $RecCart); // คัดเอาเฉพาะตัวเลข เช่น cart1 จะได้ ค่า 1 เป็นต้น
    unset($_SESSION['cartNumber'][$CNum]); // unset แถวที่เก็บสินค้าที่ต้องการลบ
	}
unset($_SESSION[$RecDel]);#unset ข้อมูลสินค้าที่เก็บไว้ทั้งหมด
}
getjson_cart();	
}

if(isset($_POST["updatecart"])){#ต้องการแก้ไขจำนวนสินค้า
$pdid=$_POST["product_id"];#รหัสของสินค้าทั้งหมด(จัดเก็บไว้ในรูป Array)
$cartRows =$_POST["updatecart"];#จำนวน Record ของแถวทั้งหมดของสินค้า(จัดเก็บไว้ในรูป Array)
$pamount=$_POST["quantity"];#จำนวน Record ของสินค้า(จัดเก็บไว้ในรูป Array)
/*
	if($pamount>0){#เอาเฉพาะจำนวนสินค้าที่มากกว่า0
	$rs_record=mysql_fetch_array(mysql_query("SELECT unit_have,unit_have FROM product_tb WHERE id=".$pdid.""));
		if($pamount>$rs_record[1]){#หากจำนวนที่ลูกค้าระบุมากกว่าจำนวนที่มีอยู่ในร้าน
		$_SESSION[$cartRows][1] = $rs_record[1];#เซตจำนวนสินค้าใหม่ให้มีค่าเืท่ากับจำนวนสินค้าในร้าน
		}else{#หากจำนวนสินค้าที่ลูกค้าระบุน้อยกว่าหรือเืท่ากับจำนวนสินค้าที่มีอยู่ในร้าน
		$_SESSION[$cartRows][1] = $pamount ; #เซตจำนวนสินค้าใหม่ให้มีค่าเท่ากับจำนวนที่ลูกค้าระบุ
		}
	}
	
	*/
	
	
if($pamount>0){#เอาเฉพาะจำนวนสินค้าที่มากกว่า0
$_SESSION[$cartRows][1] = $pamount ; #เซตจำนวนสินค้าใหม่ให้มีค่าเท่ากับจำนวนที่ลูกค้าระบุ
}
	
	
getjson_cart();
}
?>


รบกวนด้วยนะครับ พอดีผมเป็น web design ที่พอแก้ไข php ได้หน่อยๆเท่านั้นเอง ยิ่ง Ajax ยิ่งมึนเลยครับ T_T



Tag : PHP, MySQL, HTML/CSS, Action Script, Ajax, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-02-08 14:18:08 By : gamboy_123 View : 1024 Reply : 5
 

 

No. 1



โพสกระทู้ ( 3,155 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


Quote:
102.<td align="center" bgcolor="#FFFFFF" class="linetotal"><?=$TotalPriceAmount=$_SESSION[$RowCount][2]*$_SESSION[$RowCount][1]#ราคาสินค้า?></td>


Quote:
028.function updateProduct(ele){
029.var Pd=$(ele).parent().parent().attr('id').split("-");
030.var quantity=$(ele).val();
var linetotal =0;
031.$.ajax({
032.url:"chkcart.php",
033.type: 'POST',
034.data: {product_id:Pd[0],updatecart:Pd[1], quantity:quantity},
035.dataType: 'json',
036.success: function(data) {
037.$('.cart_num').html(data.num);
038.$('.cart_quantity').html(data.quantity);
039.$('.cart_price').html(data.price);
linetotal = parseFloat(data.quantity) * parseFloat(data.price);
$(ele).parents("tr").find("td.linetotal").text(linetotal);

040.}
041.});
042.}


ลองดูครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-08 16:24:38 By : sakuraei
 


 

No. 2



โพสกระทู้ ( 4 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : sakuraei เมื่อวันที่ 2014-02-08 16:24:38
รายละเอียดของการตอบ ::
เดี๋ยวลองดูก่อนนะครับ ขอบคุณครับ^^

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-08 18:33:35 By : gamboy_123
 

 

No. 3



โพสกระทู้ ( 4 )
บทความ ( 0 )



สถานะออฟไลน์


ลองแก้ตามคุณ Unidentifier แล้วครับผลปรากฏว่า

pic ประกอบ


พอเปลี่ยนจำนวนปุ๊บ ราคารวมสินค้าแต่ละชิ้นก็เปลี่ยนครับ แต่เลขมันไม่ตรงอ่าครับ แถมเลขเป็นเหมือนกัน 2 แถวเลย รบกวนอีกนิดนะครับ^_^'
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-08 18:59:31 By : gamboy_123
 


 

No. 4



โพสกระทู้ ( 3,155 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


Quote:
028.function updateProduct(ele){
029.var Pd=$(ele).parent().parent().attr('id').split("-");
030.var quantity=$(ele).val();
var linetotal =0;
var price = $(ele).parent().prev().text();
var qty = $(ele).val();

031.$.ajax({
032.url:"chkcart.php",
033.type: 'POST',
034.data: {product_id:Pd[0],updatecart:Pd[1], quantity:quantity},
035.dataType: 'json',
036.success: function(data) {
037.$('.cart_num').html(data.num);
038.$('.cart_quantity').html(data.quantity);
039.$('.cart_price').html(data.price);
linetotal = parseFloat(price) * parseFloat(qty);
//$(ele).parents("tr").find("td.linetotal").text(linetotal);
$(ele).parent().next().text(linetotal);

040.}
041.});
042.}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-08 22:45:30 By : sakuraei
 


 

No. 5



โพสกระทู้ ( 4 )
บทความ ( 0 )



สถานะออฟไลน์


ดีใจจนอยากจะร้องไห้ ได้แล้วครับพี่ ขอบคุณ Unidentifier มากครับ ที่สละเวลามาแก้โค้ดให้ผม เป็นไปตามที่ผมต้องการเลยครับ ขอบคุณอีกครั้งครับ ^_^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-09 01:24:40 By : gamboy_123
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : พี่ๆครับ ช่วยแก้ code ให้ผมด้วย เกี่ยวกับ ระบบ shopping cart แบบ Ajax ครับ ^_^
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่