|
|
|
Ajax Shopping Cart ช่วยบอกวิธีนำเอาค่าจากตะกร้าส่งไปลงฐานข้อมูลหน่อยครับ |
|
|
|
|
|
|
|
คือผมต้องการทำระบบตะกร้าสินค้าน่ะครับ ผมก็เลยไปเจอกัน Source code ตัวหนึ่งเข้า เป็นระบบตะกร้าสินค้าที่สามารถเพิ่มสินค้าเข้าไปและลบออกได้ในทันที ถือว่าดีเลยทีเดียวตรงตามที่ต้องการ แต่ปัญหาก็คือ ไม่รู้วิธีที่จะนำเอาค่า จากตะกร้าสินค้าเอาไปเก็บไว้ในฐานข้อมูลยังไง ช่วยแนะนำให้หน่อยครับ หากเขียนโค๊ดเพื่อรับค่าให้ได้ด้วยจะดีมากเลย ขอบคุณล่วงหน้าครับ
อันนี้เป็นในส่วนของ Javascript ครับ
Code (JavaScript)
$(document).ready(function() {
var Arrays=new Array();
$('#wrap li').mousemove(function(){
var position = $(this).position();
$('#cart').stop().animate({
left : position.left+'px',
},250,function(){
});
}).mouseout(function(){
});
$('#wrap li').click(function(){
var thisID = $(this).attr('id');
var itemname = $(this).find('div .name').html();
var itemprice = $(this).find('div .price').html();
if(include(Arrays,thisID))
{
var price = $('#each-'+thisID).children(".shopp-price").find('em').html();
var quantity = $('#each-'+thisID).children(".shopp-quantity").html();
quantity = parseInt(quantity)+parseInt(1);
var total = parseInt(itemprice)*parseInt(quantity);
$('#each-'+thisID).children(".shopp-price").find('em').html(total);
$('#each-'+thisID).children(".shopp-quantity").html(quantity);
var prev_charges = $('.cart-total span').html();
prev_charges = parseInt(prev_charges)-parseInt(price);
prev_charges = parseInt(prev_charges)+parseInt(total);
$('.cart-total span').html(prev_charges);
$('#total-hidden-charges').val(prev_charges);
}
else
{
Arrays.push(thisID);
var prev_charges = $('.cart-total span').html();
prev_charges = parseInt(prev_charges)+parseInt(itemprice);
$('.cart-total span').html(prev_charges);
$('#total-hidden-charges').val(prev_charges);
$('#left_bar .cart-info').append('
<div id="each-'+thisID+'" class="shopp">
<div class="label">'+itemname+'</div>
<div class="shopp-price"> $<em>'+itemprice+'</em></div>
<span class="shopp-quantity">1</span><img class="remove" src="remove.png" alt="" /><br class="all" /></div>
');
$('#cart').css({'-webkit-transform' : 'rotate(20deg)','-moz-transform' : 'rotate(20deg)' });
}
setTimeout('angle()',200);
});
$('.remove').livequery('click', function() {
var deduct = $(this).parent().children(".shopp-price").find('em').html();
var prev_charges = $('.cart-total span').html();
var thisID = $(this).parent().attr('id').replace('each-','');
var pos = getpos(Arrays,thisID);
Arrays.splice(pos,1,"0")
prev_charges = parseInt(prev_charges)-parseInt(deduct);
$('.cart-total span').html(prev_charges);
$('#total-hidden-charges').val(prev_charges);
$(this).parent().remove();
});
$('#Submit').livequery('click', function() {
var totalCharge = $('#total-hidden-charges').val();
$('#left_bar').html('Total Charges: $'+totalCharge);
return false;
});
});
function include(arr, obj) {
for(var i=0; i<arr.length; i++) {
if (arr[i] == obj) return true;
}
}
function getpos(arr, obj) {
for(var i=0; i<arr.length; i++) {
if (arr[i] == obj) return i;
}
}
function angle(){$('#cart').css({'-webkit-transform' : 'rotate(0deg)','-moz-transform' : 'rotate(0deg)' });}
});
และก็นี่เป็น HTML ครับ
Code (PHP)
<div id="wrap">
<ul>
<li id="1">
<img class="items" src="a1.png" alt="" height="100" />
<div><span class="name">Mac/OS X: Price</span>: $<span class="price">800</span></div></li>
<li id="2">
<img class="items" src="5.png" alt="" height="100" />
<div><span class="name">IPhone 3GS </span>: $<span class="price">500 </span></div></li>
<li id="3">
<img class="items" src="1.png" alt="" height="100" />
<div><span class="name">Apple IPad </span>: $<span class="price">450</span></div></li>
<li id="4">
<img class="items" src="6.png" alt="" height="100" />
<div><span class="name">Mac NoteBook </span>: $<span class="price">1200 </span></div></li>
<li id="5">
<img class="items" src="7.png" alt="" height="100" />
<div> <span class="name">Bag : Buy Now Price </span>: $<span class="price">65</span></div></li>
<li id="6">
<img class="items" src="5.png" alt="" height="100" />
<div><span class="name">IPhone 4GS </span>: $<span class="price">800</span></div></li>
<li id="7">
<img class="items" src="7.png" alt="" height="100" />
<div><span class="name"> Bag : Buy Now Price </span>: $<span class="price">45</span></div></li>
<li id="8">
<img class="items" src="6.png" alt="" height="100" />
<div><span class="name">Mac NoteBook </span>: $<span class="price">900 </span></div></li>
<li id="9">
<img class="items" src="8.png" alt="" height="100" />
<div><span class="name">Sony Super Ear Phone </span>: $<span class="price">20</span></div></li>
</ul>
<div id="bottomBar"><img id="cart" src="carts.png" alt="" /></div>
</div>
<div id="left_bar">
<form id="cart_form" action="#">
<div class="cart-total">
<strong>Total Charges: </strong> $<span>0</span>
<input id="total-hidden-charges" name="total-hidden-charges" type="hidden" value="0" /></div>
<button id="Submit">CheckOut</button></form></div>
</div>
และก็นี่เป็น CSS ครับ
Code (PHP)
html, body{
margin:0;
padding:0;
border:0;
outline:0;
}
#wrap{ width:600px; height:900px; top:20px; position:relative; bottom:0px;
}
#wrap ul{ margin:0px; padding:0px; text-align:center }
#wrap ul li{
-moz-background-clip: padding; /* Firefox 3.6 */
-webkit-background-clip: padding; /* Safari 4? Chrome 6? */
background-clip: padding-box; /* Firefox 4, Safari 5, Opera 10, IE 9 */
border: 10px solid rgba(0,0,0,0.3);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
/*background:url("bgs.png") repeat-x scroll;*/
list-style-type:none;
height:150px;
width:160px;
margin-left:13px;
margin-bottom:15px;
float:left;
padding:15px 0px 0px 0px;
font-family:"LubalGraphBdBTBold",Tahoma;
font-size:2em;
overflow:hidden;
}
#wrap ul li div{
height:25px;
text-align:center;
width:160px;
margin-top:10px;
position:relative;
bottom:0px;
padding-top:12px;
padding-bottom:4px;
background:#000;
font: 11px Tahoma, Helvetica, Arial, Sans-Serif;
opacity:0.8;
color: #ccc;
text-shadow: 0px 2px 3px #555;
}
img#cart
{
bottom:0px;position:fixed; margin-left:30px; /* keep the bar on top */
}
#wrap ul li { cursor:pointer;}
div#bottomBar {
position: fixed;/* keep the bar on top */
bottom: 0px;
z-index: 9999;
background:url(rail.jpg) bottom center repeat-x;
height: 130px;
}
div#bottomBar {
width:600px;
}
#left_bar
{
top:120px;
left:600px;
height:350px;
width:250px;
position:fixed;
padding:10px;
/*-moz-background-clip: padding;
-webkit-background-clip: padding;
background-clip: padding-box;
border: 10px solid #006699;
-webkit-border-radius: 40px;
-moz-border-radius: 40px;
border-radius: 40px; */
}
em{ font-style:normal; }
button {
background:none repeat scroll 0 0 #AD7B05; color:#FFFFFF;
border:medium none;
font-family:"LubalGraphBdBTBold",Tahoma;
font-size:1.1em;
margin-right:-14px;
padding:10px;
cursor:pointer;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
}
.cart-total{ background:#E8E8E8}
.shopp,.cart-total{
border:solid #ccc 1px; padding:8px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px; font-size:12px;
background:url(remove.png) center right no-repeat 5px;
border-radius: 8px;
font-family:"LubalGraphBdBTBold",Tahoma;
margin-bottom:3px;
width:260px;
}
div.shopp span{ float:left;}
div.shopp div.label{ width:130px; float:left; }
div.shopp div.shopp-price{ width:70px; float:left;}
.quantity{ float:left; margin-top:-3px; width:20px;}
img.remove{float:right;cursor:pointer;}
.cart-total b{width:130px;}
หรือจะเข้าไปดู DEmo ที่นี่เลยครับ http://cart.99points.info/
ถ้าจะโหลดโค๊ดไปทอสอบนี้ครับ http://www.box.com/shared/91op1icmjb
แหล่งอ้างอิงเข้าไปช่วยดูหน่อยครับ http://www.99points.info/2010/12/ajax-shopping-cart-with-jquery-and-php/
ขอบคุณครับ
Tag : PHP, MySQL, HTML/CSS, JavaScript, Ajax, jQuery
|
ประวัติการแก้ไข 2012-04-05 19:19:13
|
|
|
|
|
Date :
2012-04-05 19:16:12 |
By :
jackkichan |
View :
4361 |
Reply :
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดูให้เข้าใจก่อนครับ ก่อนที่จะมาถามครับ
|
|
|
|
|
Date :
2012-04-06 07:53:51 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอา form ครอบในส่วนที่แสดงรายการคับ
ส่วนปุ่ม checkout ก็ทำเป็น ปุ่ม submit แค่นี้ก็ส่งค่าได้แล้วคับ
|
|
|
|
|
Date :
2012-04-06 07:57:54 |
By :
siammbk |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือความจริงแล้วผมทำ จนมันสามารถรับค่ารับอะไรได้แล้วละครับ แต่มันติดปัญหาตรงที่ เมื่อเวลาส่งค่าไป มันจะทำการส่งค่าจากที่เลือกไปทุกตัวทุกครั้ง อาทิเช่น
จากภาพตัวอย่างน่ะครับ หากมีสินค้าที่มากกว่า 1 รายการ มันจะทำการส่ง ซ้ำๆ คลายๆการวนลูบส่งค่า ในตัวอย่าง มันจะส่งค่ามา 5 ครั้ง
ความต้องการก็คือว่า ต้องการให้มันส่งมาครั้งเดียวเหมือนกับฟอร์ม คือตอนนี้ ผมทำการรับข้อมูลจาก Ajax ไม่ได้รับค่าจากฟอร์ม
Question ?
- หากต้องการให้มันส่งค่ามาแบบฟอร์มรับข้อมูลทำอย่างไร
- หากไม่ได้ จะมีวิธีการนำเอาค่าจาก รายการทางด้านขวาส่งมาแบบครั้งเดียวหรือไม่
> ขอความกรุณาด้วยครับ
ปล. ที่ต้องการแบบนั้นเพราะ เมื่อเวลา รับค่าแล้ว บาง เบาว์เชอร์ รายการเข้าฐานข้อมูลบ้างไม่เข้าบ้าง สั่ง 5 รายการ มา 1 รายการ ประมาณนี้ครั้บ
|
ประวัติการแก้ไข 2012-04-06 11:16:27
|
|
|
|
Date :
2012-04-06 11:14:15 |
By :
jackkichan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 4 เขียนโดย : ทองมี เมื่อวันที่ 2012-04-06 11:35:24
รายละเอียดของการตอบ ::
ขอบคุณครับ สำหรับคำแนะนำ
แต่ยังไม่ใช่ที่ต้องการครับ เดี๋ยวอธิบายเพิ่มน่ะครับ
อันดับแรกมาดูการทำงานกันก่อน ผมทำการส่งค่าจาก script ตัวนี้โดยการใช้ post
Code (PHP)
$('#Submit').livequery('click', function() {
$.post("manege.php",{id:thisID, name:itemname,price:itemprice, qty:quantity,time_stap:date_stap});
});
เพื่อส่งค่าไปยัง ไฟล์ manege.php เมื่อส่งค่ามาแล้ว จะนำเอามาเก็บไว้ในตัวแปร session ดังนี้
Code (PHP)
if($id!=""){
$_SESSION[ss_id][]=$id;
$_SESSION[ss_qty][]=$qty;
$_SESSION[ss_name][]=$name;
$_SESSION[ss_price][]=$price;
$_SESSION[ss_stap][]=$time_stap;
}
หลังจากเก็บค่าแล้ว จะนำมาทำการ Insert ลงฐานข้อมูล โดยสร้างเป้นเงื่อนไขดังนี้
Code (PHP)
for($i=0;$i<=count($_SESSION[ss_id]) ;$i++){
$result_s=num_row("get_order","where get_id='".$_SESSION[ss_id][$i]."' and bill_number='".$_SESSION[ss_stap][$i]."' ");
if($result_s>=1){
$result_q=select("get_order","where get_id='".$_SESSION[ss_id][$i]."' and bill_number='".$_SESSION[ss_stap][$i]."' ");
if($result_q[get_qty]<=$_SESSION[ss_qty][$i]){
update("get_order","get_price='".$_SESSION[ss_price][$i]*$_SESSION[ss_qty][$i]."',get_qty='".$_SESSION[ss_qty][$i]."'","where get_id='".$_SESSION[ss_id][$i]."' and bill_number='".$_SESSION[ss_stap][$i]."' ");
}
}else{
if($_SESSION[ss_id][$i]!=""){
$mode_f=select("food_all","where id=".$_SESSION[ss_id][$i]);
insert("get_order","get_id,get_name,get_price,get_qty,bill_number,food_status,mode_f","'".$_SESSION[ss_id][$i]."','".$_SESSION[ss_name][$i]."','".$_SESSION[ss_price][$i]."','".$_SESSION[ss_qty][$i]."','".$_SESSION[ss_stap][$i]."','1','".$mode_f[mode_f]."' ");
}
}
}
ประมาณนี้ครับ....
|
|
|
|
|
Date :
2012-04-06 11:49:43 |
By :
jackkichan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 5 เขียนโดย : jackkichan เมื่อวันที่ 2012-04-06 11:49:43
รายละเอียดของการตอบ ::
ลองดูตัวนี้ครับ
Code (PHP)
<?
session_start();
mysql_connect("localhost","root","root");
mysql_select_db("mydatabase");
$Total = 0;
$SumTotal = 0;
$strSQL = "
INSERT INTO orders (OrderDate,Name,Address,Tel,Email)
VALUES
('".date("Y-m-d H:i:s")."','".$_POST["txtName"]."','".$_POST["txtAddress"]."' ,'".$_POST["txtTel"]."','".$_POST["txtEmail"]."')
";
mysql_query($strSQL) or die(mysql_error());
$strOrderID = mysql_insert_id();
for($i=0;$i<=(int)$_SESSION["intLine"];$i++)
{
if($_SESSION["strProductID"][$i] != "")
{
$strSQL = "
INSERT INTO orders_detail (OrderID,ProductID,Qty)
VALUES
('".$strOrderID."','".$_SESSION["strProductID"][$i]."','".$_SESSION["strQty"][$i]."')
";
mysql_query($strSQL) or die(mysql_error());
}
}
mysql_close();
session_destroy();
header("location:finish_order.php?OrderID=".$strOrderID);
?>
Go to : PHP สร้างระบบตะกร้าสั่งซื้อสินค้า Shopping Cart ด้วย Session และ Array (PHP กับ MySQL)
|
|
|
|
|
Date :
2012-04-06 13:28:23 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|