对于商城类网站,购物车是不可少的功能,方便用户批量购买产品,云建站系统也增加了购物车模块,当然在开发原理与普通网站的购物车是一样的:
功能如下:
1、任意产品详情页可直接购买或加入购物车
2、可清空购物车。册除单个产品。
3、收银台结算。填写收货地址默认调用会员信息。
4、在线支付结算定单,批量修改产品定单信息和财务信息。当然云是多用户系统,还得批量计算各等级会员扣费及价格。
购物车代码:
1、前台下单源码:
<?session_start();require_once("../common/init.php");?><table width="255" border="0" cellspacing="0" cellpadding="0"><tr><td width="130" rowspan="6"><div align="center"><?php if(trim($info['tupian']=="")) { echo "暂无图片"; } else {?><img src="<?php echo $info['tupian'];?>" width="130" height="100" border="0"><?php }?></div></td> <td width="20" height="16"> </td> <td width="113"><font color="EF9C3E">【<?php echo $info['mingcheng'];?>】</font></td> </tr> <tr> <td height="16"> </td> <td><font color="910800">【市场价:<?php echo $info['shichangjia'];?>】</font></td> </tr> <tr> <td height="16"> </td> <td><font color="DD4679">【会员价:<?php echo $info['huiyuanjia'];?>】</font></td> </tr> <tr> <td height="16"> </td> <td>【<a href="lookinfo.php?IDProduct=<?php echo $info['IDProduct'];?>">查看信息</a>】</td> </tr> <tr> <td height="16"> </td> <td>【<a href="addgouwuche.php?IDProduct=167">放入购物车</a>】</td> </tr> <tr> <td height="16"> </td> <td><font color="13589B">【剩余数量: <?php if(($info['shuliang']-$info['cishu'])>0) { echo ($info['shuliang']-$info['cishu']); } else { echo "已售完"; } ?>】</font></td> </tr> </table>
2、加入购物车代码
<?session_start();require_once("../common/init.php");require_once("../user/security.inc.php");$web=get_web(); $IDProduct=strval($_GET['IDProduct']);$sql="select * from products where IDProduct='".$IDProduct."' and user='$web'"; $info=$db->getdata($sql);if(($info['shuliang']-$info['cishu'])<=0) { echo "<script>alert('该商品已经售完!');history.back();</script>"; exit; } $array=explode("@",$_SESSION['producelist']); for($i=0;$i<count($array)-1;$i++) { if($array[$i]==$IDProduct) { echo "<script>alert('该商品已经在您的购物车中!');history.back();</script>"; header("location:gouwu1.php"); exit; } } $_SESSION['producelist']=$_SESSION['producelist'].$IDProduct."@"; $_SESSION['quatity']=$_SESSION['quatity']."1@"; header("location:gouwu1.php");?>
<?session_start();require_once("../common/init.php");require_once("../user/security.inc.php");$web=get_web();?><!DOCTYPE HTML><html><head><style>body,button,input,select,textarea{line-height:150%;font-family:'微软雅黑';font-size:14px; }body{background:#fff}select {height:32px}.red {color:#f00 !important}a{text-decoration:none;color:#3366ff}.csstable {border:1px solid #ccc;margin-bottom:10px;line-height:220%;border-right:1px solid #eee;border-bottom:1px solid #eee;}.csstable td{border-bottom:1px solid #ccc;border-right:1px solid #ccc;padding:6px 5px 3px 5px;}.csstable1 {border:01px solid #ccc;margin-bottom:10px;line-height:220%;border-right:1px solid #eee;border-bottom:1px solid #eee;}.csstable1 td{border-bottom:0px solid #ccc;border-right:0px solid #ccc;padding:3px 5px 3px 5px;}input{border:1px solid #aaa;background:#fff;height:30px;text-align:center}.buttoncss{background:#c00;color:#fff;border:0;padding:3px 30px}</style></head><body><div class="part1 pad bgf yahei" style="padding:0px 20px"> <h3 class="font26" style="padding-bottom:10px;border-bottom:0px solid #ccc;"><span class="l title"></span><span class="r more"></span></h3> <div class="bx-c"> <div class="content"> <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0" class="csstable"> <form name="form1" method="post" action="gouwu1.php"> <?php $_SESSION["total"]; if($_GET['qk']=="yes") { $_SESSION['producelist']=""; $_SESSION['quatity']=""; } $arraygwc=explode("@",$_SESSION['producelist']); $s=0; for($i=0;$i<count($arraygwc);$i++) { $s+=intval($arraygwc[$i]); } if($s==0 ) { echo "<tr>"; echo" <td height='25' colspan='6' bgcolor='#FFFFFF' align='center'>您的购物车为空!</td>"; echo"</tr>"; } else { ?><tr style="font-weight:bold"> <td width="125" height="25" bgcolor="#FFFFFF"><div align="center">商品名称</div></td> <td width="52" bgcolor="#FFFFFF"><div align="center">数量</div></td> <td width="64" bgcolor="#FFFFFF"><div align="center">市场价</div></td> <td width="64" bgcolor="#FFFFFF"><div align="center">会员价</div></td> <td width="51" bgcolor="#FFFFFF"><div align="center">折扣</div></td> <td width="66" bgcolor="#FFFFFF"><div align="center">小计</div></td> <td width="71" bgcolor="#FFFFFF"><div align="center">操作</div></td></tr><?php/** * 购物车 商品数量管理*/$total=0;$array=explode("@",$_SESSION['producelist']);$arrayquatity=explode("@",$_SESSION['quatity']);//var_dump($array); while(list($name,$value)=each($_POST)) { for($i=0;$i<count($array)-1;$i++) { if(($array[$i])==$name) { $arrayquatity[$i]=$value; } } } $_SESSION['quatity']=implode("@",$arrayquatity); for($i=0;$i<count($array)-1;$i++) { $id=$array[$i]; $num=$arrayquatity[$i]; if($id!="") { $sql="select * from products where IDProduct='".$id."' and user='$web'"; $info=$db->getdata($sql);$pics = json_decode($info['pics'], true); if (isset($pics)) { foreach ($pics as $key=>$v) { $product_pic=$pics[0]; }}$PInfo=PInfo($id);$Price=$PInfo['iPrice']; $total1=$num*$Price; $total+=$total1; $_SESSION["total"]=$total; ?><tr> <td height="25" width='150' bgcolor="#FFFFFF"><div align="center"><?php if ($product_pic==""){?><img src="/skin/default/../skin/v7red/http://mb.web2060.com/skin/moban0_idc001/resources/no_pic.png" style="width:60px;height:40px;" /> <?php }else{?><img src="<?=$product_pic?>" style="width:60px;height:40px;" /><?php }?><br><?php echo $info['ProductName'];?></div></td> <td height="25" bgcolor="#FFFFFF"><div align="center"> <input type="text" name="<?php echo $info['IDProduct'];?>" size="2" class="inputcss" value=<?php echo $num;?>> </div></td> <td height="25" bgcolor="#FFFFFF"><div align="center"><?php echo $PInfo['oPrice'];?>元</div></td> <td height="25" bgcolor="#FFFFFF"><div align="center"><?php echo $PInfo['iPrice'];?>元</div></td> <td height="25" bgcolor="#FFFFFF"><div align="center"><?php echo @(ceil(($PInfo['iPrice']/$PInfo['oPrice'])*100))."%";?></div></td> <td height="25" bgcolor="#FFFFFF"><div align="center"><?php echo $PInfo['iPrice']*$num."元";?></div></td> <td height="25" bgcolor="#FFFFFF"><div align="center"><a href="removegwc.php?IDProduct=<?php echo $info['IDProduct']?>">移除</a></div></td></tr><?php } }?><tr> <td height="35" colspan="8" bgcolor="#FFFFFF"><div align="right"> <table width="500" height="25" border="0" align="center" cellpadding="0" cellspacing="0" style="border:0" class="csstable1"> <tr> <td width="125"><div align="center"> <input type="submit" value="更改商品数量" class="buttoncss"> </div></td> <td width="125"><div align="center"><a href="gouwu2.php">去收银台</a></div></td> <td width="125"><div align="center"><a href="gouwu1.php?qk=yes">清空购物车</a></div></td> <td width="195"><div align="left" style="color:red;font-size:24px">总计:<?php echo $total;?></div></td> </tr> </table> <?php } ?> </div> </div> <div class="bx-b"><div class="bx-b2"></div></div></div></div></body></html>
3、清空购物车单个商品
<?session_start();require_once("../common/init.php");$web=get_web();if($_SESSION['User_S']=="") { echo "<script>alert('请先登录,后购物!');history.back();</script>"; exit; } $IDProduct=$_GET['IDProduct'];$array=explode("@",$_SESSION['producelist']);$arrayquatity=explode("@",$_SESSION['quatity']);//var_dump($array); for($i=0;$i<count($array)-1;$i++) { if(($array[$i])==$IDProduct) { unset($arrayquatity[$i]); unset($array[$i]); } } $_SESSION['quatity']=implode("@",$arrayquatity); $_SESSION['producelist']=implode("@",$array); die("<script>history.back()</script>"); ?>
4、填写收货信息。
<?session_start();require_once("../common/init.php");require_once("../user/security.inc.php");$web=get_web();$sql="select * from users where UserName='".$_SESSION['User_S']."' and user='$web'"; $uinfo=$db->getdata($sql);?><!DOCTYPE HTML><html><head><style>a{text-decoration:none;color:#3399ff}body{background:#fff}select {height:32px}.red {color:#f00 !important}body,button,input,select,textarea{line-height:150%;font-family:'微软雅黑';font-size:14px; }.csstable {border:1px solid #ccc;margin-bottom:10px;line-height:220%;border-right:1px solid #eee;border-bottom:1px solid #eee;}.csstable td{border-bottom:1px solid #ccc;border-right:1px solid #ccc;padding:6px 5px 3px 5px;}.csstable .bar{font-weight:bold;background:url(images/bar.png);}.csstable .s{background:#eee;}input{border:1px solid #aaa;background:#fff;height:30px;}.buttoncss{background:#c00;color:#fff;border:0;padding:0px 30px;height:30px;}.buttoncss1{background:#ccc;color:#fff;border:0;padding:0px 10px;height:30px;width:40px;}</style></head><body><div class="part1 pad bgf yahei" style="padding:0px 20px"> <h3 class="font26" style="padding-bottom:2px;border-bottom:0px solid #ccc;"><span class="l title"> 收货人信息</span><span class="r more"></span></h3> <div class="bx-c"> <div class="content"> <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0" class="csstable"> <script language="javascript">/** * 购物车 收货人信息 * Edit www.jb51.net*/function chkinput(form) { if(form.name.value=="") { alert("请输入收货人姓名!"); form.name.select(); return(false); } if(form.dz.value=="") { alert("请输入收货人地址!"); form.dz.select(); return(false); } if(form.yb.value=="") { alert("请输入收货人邮编!"); form.yb.select(); return(false); } if(form.tel.value=="") { alert("请输入收货人联系电话!"); form.tel.select(); return(false); } if(form.email.value=="") { alert("请输入收货人E-mail地址!"); form.email.select(); return(false); } if(form.email.value.indexOf("@")<0) { alert("收货人E-mail地址格式输入错误!"); form.email.select(); return(false); } return(true); } </script> <form name="form1" method="post" action="savedd.php" onSubmit="return chkinput(this)"> <tr> <td width="100" height="25" bgcolor="#FFFFFF"><div align="center">收货人姓名:</div></td> <td width="183" bgcolor="#FFFFFF"><div align="left"><input type="text" name="Contact_GB" size="25" value="<?=$uinfo['Contact_GB']?>" class="inputcss" ></div></td> <td width="86" bgcolor="#FFFFFF"><div align="center">性别:</div></td> <td width="176" bgcolor="#FFFFFF"><div align="left"> <select name="sex"> <option selected value="男">男</option> <option value="女">女</option> </select> </div></td> </tr> <tr> <td height="25" bgcolor="#FFFFFF"><div align="center">详细地址:</div></td> <td height="25" colspan="3" bgcolor="#FFFFFF"><div align="left"><input name="dz" type="text" name="Addr_GB" value="<?=$uinfo['Province_GB']?><?=$uinfo['City_GB']?><?=$uinfo['Addr_GB']?>" class="inputcss" id="dz" size="25"> </div></td> </tr> <tr> <td height="25" bgcolor="#FFFFFF"><div align="center">邮政编码:</div></td> <td height="25" colspan="3" bgcolor="#FFFFFF"><div align="left"><input type="text" name="PostCode" size="25" value="<?=$uinfo['PostCode']?>" class="inputcss" ></div></td> </tr> <tr> <td height="25" bgcolor="#FFFFFF"><div align="center">联系电话:</div></td> <td height="25" colspan="3" bgcolor="#FFFFFF"><div align="left"><input type="text" name="Tel" size="25" class="inputcss" value="<?=$uinfo['Tel']?>"></div></td> </tr> <tr> <td height="25" bgcolor="#FFFFFF"><div align="center">电子邮箱:</div></td> <td height="25" colspan="3" bgcolor="#FFFFFF"><div align="left"><input type="text" name="Email" size="25" class="inputcss" value="<?=$uinfo['Email']?>" ></div></td> </tr> <tr> <td height="25" bgcolor="#FFFFFF"><div align="center">送货方式:</div></td> <td height="25" colspan="3" bgcolor="#FFFFFF"><div align="left"> <select name="shff" id="shff"> <option selected value="虚拟发货">虚拟发货</option> <option value="普通平邮">普通平邮</option> <option value="特快专递">特快专递</option> <option value="送货上门">送货上门</option> <option value="E-mail">E-mail</option> </select></div></td> </tr> <tr> <td height="25" bgcolor="#FFFFFF"><div align="center">支付方式:</div></td> <td height="25" colspan="3" bgcolor="#FFFFFF"><div align="left"> <select name="zfff" id="zfff"> <option selected value="网上支付">网上支付</option> <option value="银行汇款">银行汇款</option> </select> </div></td> </tr> <tr> <td height="100" bgcolor="#FFFFFF"><div align="center">简单留言:</div></td> <td height="100" colspan="3" bgcolor="#FFFFFF"><div align="left"> <textarea name="ly" cols="60" rows="4" class="inputcss" style="background-color:#fff;border:1px solid #ccc " ></textarea></div></td> </tr> <tr style=""> <td height="45" colspan="4" bgcolor="#FFFFFF"><div align="center"><input type="submit" value="提交订单" class="button yahei bg4 buttoncss"> <a href="gouwu1.php" > [Back]</a> </div></td> </tr> </form> </tr></table> </div> </div> <div class="bx-b"><div class="bx-b2"></div></div></div></div></body></html><!--<?php if($_GET['dingdanhao']!="") { $dd=$_GET['dingdanhao']; $array=explode("@",$_SESSION['producelist']); $sum=count($array)*20+260; echo" <script language='javascript'>"; echo" window.open('showdd.php?dd='+'".$dd."','newframe','top=150,left=200,width=600,height=".$sum.",menubar=no,toolbar=no,location=no,scrollbars=no,status=no ')"; echo "</script>"; }?>-->
4、确认定单,并写入数据库,定单表和产品购买表双记录修改。
<?php
session_start();
require_once("../common/init.php");
require_once("../user/security.inc.php");
$web=get_web();
$sqls="select * from users where UserName='$_SESSION[User_S]' and user='$web'";
$info=$db->getdata($sqls);
$fIDProd=$_SESSION['producelist'];
$Num=$_SESSION['quatity'];
$arrayNum=explode("@",$_SESSION['quatity']);
$Num=0;
for($i=0;$i<count($arrayNum);$i++)
{
$Num+=intval($arrayNum[$i]);
}
$Contact_GB=$_POST['Contact_GB'];
$sex=$_POST['sex'];
$Addr_GB=$_POST['Addr_GB'];
$PostCode=$_POST['PostCode'];
$Tel=$_POST['Tel'];
$Email=$_POST['Email'];
$wuliu=$_POST['shff'];
$payment=$_POST['zfff'];
if(trim($_POST['ly'])=="")
{
$About="";
}
else
{
$About=$_POST['ly'];
}
$UserName=$_SESSION['User_S'];
$dtCreate=date("Y-m-j H:i:s");
//$dtExpiry=DATE_ADD(now(),INTERVAL $iYear YEAR)//SQL代码
$iStatus=0;
$Amount=$_SESSION["total"];
$array=explode("@",$_SESSION['producelist']);
$arrayquatity=explode("@",$_SESSION['quatity']);
//var_dump($array);
$IDHost=array();
for($i=0;$i<count($array)-1;$i++)
{
$sql="insert into host set UserName='$_SESSION[User_S]',fIDProd='{$array[$i]}',user='$web',Num={$arrayquatity[$i]},".
"dtCreate=now(),iStatus='0',dtExpiry=DATE_ADD(now(),INTERVAL $arrayquatity[$i] YEAR)";
$db->query($sql);
$IDHost[$i]=$db->insert_id();
}
$IDHosts=implode("|",$IDHost);
$IDProduct=implode("|",explode("@",$_SESSION['producelist']));
$IDProduct=substr( $IDProduct, 0, -1);
$oOrder = Order::AddOrderPL($IDProduct,$IDHosts,0,$About,1,$Num,"",1,$Amount,$Contact_GB,$sex,$Addr_GB,$PostCode,$Tel,$Email,$wuliu,$payment);
$display=($_CFG[PayOnline]==1)?"":"none";
$OrderID=$oOrder['OrderID'];
header("location:/user/onlinepay.php?Amount={$Amount}&OrderID=$OrderID");
?>
5、后台定单管理。