今天整理了一下利用php和mysql数据库实现简单的购物车功能,主要用到的mysql表有以下几个:
login:
orders:
orderdetails:
fruit:
要制作商城,首先需要一个登陆页面:
代码如下:
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>无标题文档</title> 6 </head> 7 8 <body> 9 <form action="dengluchuli.php" method="post" > 10 <table > 11 <tr> 12 <td>用户名:<input type="text" name="uid"></td> 13 14 </tr> 15 <tr> 16 <td>密码:<input type="text" name="pwd"></td> 17 </tr> 18 </table> 19 <input type="submit" value="登录" id="denglu_div4"> 20 </form> 21 </body> 22 </html>
点击“登录”按钮,跳转到登录页面的处理页面dengluchuli.php处理登录页面的信息:
1 <?php 2 session_start(); //开启session 必须要写到第一行 3 $uid=$_POST["uid"]; //从登录页面获取到用户名和密码 4 $pwd=$_POST["pwd"]; 5 //连接数据库 6 $db=new MySQLi("localhost","root","","z_gwc"); 7 !mysqli_connect_error() or die("连接错误"); 8 $db->query("set names utf8"); 9 //查询密码 10 $sql="select password from login where username=‘{$uid}‘"; 11 $result=$db->Query($sql); 12 $arr=$result->fetch_all(); 13 if($arr[0][0]==$pwd && !empty($pwd)) //判断所填写的密码和取到的密码是一样的,而且密码不能为空 14 { 15 //定义用户uid为超全局变量 16 $_SESSION["uid"]=$uid; 17 //跳转页面 18 header("location:index1.php"); 19 } 20 else 21 { 22 echo"登录失败"; 23 }
登录成功后,登录到商品界面,商品界面代码:
1 <!--这是展示商品的页面--> 2 <?php 3 session_start();//开始 4 //连接数据库 5 $db=new MySQLi("localhost","root","","z_gwc"); 6 !mysqli_connect_error() or die("连接失败"); 7 $db->query("set names utf8"); 8 //获取传值 9 $ids=$_GET["ids"]; 10 $uid=$_SESSION["uid"]; //用户账号 11 //查询商品表 12 $sql="select * from fruit"; 13 $res=$db->query($sql); 14 $attr=$res->fetch_all(); 15 $sql="select Code from orders where UserName =‘$uid‘"; 16 $res=$db->query($sql); 17 $dhattr=$res->fetch_all();//单号数组 18 $dhStr=""; 19 //数组遍历,转为字符串 20 foreach($dhattr as $v){ 21 $dhStr=$dhStr.$v[0]."‘,‘"; 22 } 23 $dhStr=substr($dhStr,0,-3);//截取字符串 24 $sql="select FruitCode,count(Count) from orderDetails where OrderCode in(‘$dhStr‘) group by FruitCode" ; 25 $res=$db->query($sql); 26 $spattr=$res->fetch_all();//购物车水果信息数组 27 $strPice=0; 28 foreach($attr as $v){ 29 foreach($spattr as $v1){ 30 if($v[0]==$v1[0]){ 31 $strPice=$strPice+$v[2]*$v1[1]; 32 } 33 } 34 } 35 ?> 36 <!doctype html> 37 <html> 38 <head> 39 <meta charset="utf-8"> 40 <title>无标题文档</title> 41 </head> 42 43 <body> 44 <a href="Login.php">登录</a> 45 <h1>大苹果购物网</h1> 46 <div> 47 <a href="#">浏览商品</a> 48 <a href="ViewAccount.php">查看账户</a> 49 <!--将商品总价传到购物车页面--> 50 <a href="ViewCart.php?strpice=<?php echo $strPice ?>&ids=<?php echo $ids ?>">查看购物车</a> 51 </div> 52 <div> 53 购物车中有<span id="spnum"><?php echo count($spattr); ?></span>种商品,总价格:<span id="sppice"><?php echo $strPice; ?></span>元。 54 </div> 55 56 <table width="100%" border="1"> 57 <tr> 58 <th>代号</th> 59 <th>水果名称</th> 60 <th>水果价格</th> 61 <th>原产地</th> 62 <th>货架</th> 63 <th>库存量</th> 64 <th>操作</th> 65 </tr> 66 <?php 67 foreach($attr as $k=>$v){?> 68 <tr> 69 <td><?php echo $v[0]; ?></td> 70 <td><?php echo $v[1]; ?></td> 71 <td><?php echo $v[2]; ?></td> 72 <td><?php echo $v[3]; ?></td> 73 <td><?php echo $v[4]; ?></td> 74 <td><?php echo $v[5]; ?></td> 75 <td><form action="add.php?uid=<?php echo $uid; ?>" method="post"> 76 <input type="hidden" name="ids" 77 value="<?php echo $v[0]; ?>"> 78 <button>购买</button> 79 80 </form></td> 81 </tr> 82 <?php } 83 ?> 84 <span><?php echo $_GET["kc"] ?></span> 85 </table> 86 </body> 87 </html>
商品页面展示:
点击“购买”,跳到add.php处理界面,将购买信息填入“购物车”,:
<?php session_start();//开始 //连接数据库 $db=new MySQLi("localhost","root","","z_gwc"); !mysqli_connect_error() or die("连接失败"); $db->query("set names utf8"); //获取传值 $ids=$_POST["ids"]; $uid=$_SESSION["uid"]; $date=date("Y-m-d h:i:s");//获取时间 $sql="select numbers from fruit where ids=‘$ids‘"; $res=$db->query($sql); $att=$res->fetch_row(); foreach($att as $v){ if($v>0){ //条件判断 $sql="insert into orders values(‘$uid"."$date‘,‘$uid‘,‘$date‘)"; $db->query($sql); $sql="insert into orderdetails values(‘‘,‘$uid"."$date‘,‘$ids‘,1)"; $db->query($sql); header("location:index1.php?ids=$ids"); }else{ header("location:index1.php?kc=库存不足"); } } ?>
如点击“桔子”后面的购买,发生如下变化:
此时购物车页面:
购物车代码:
<!--这是购物车页面--> <?php session_start();//开始 //连接数据库 $db=new MySQLi("localhost","root","","z_gwc"); !mysqli_connect_error() or die("连接失败"); $db->query("set names utf8"); $strpice=$_GET["strpice"];//接收从index.php传过来的商品总价 $ids=$_GET["ids"]; $dlStr=$_SESSION["dlStr"];//超全局 //查询数据 $sql="select a.ids,". "a.ordercode,". "b.name,". "b.price,". "count(a.count) ". "from orderdetails as a ". "join fruit as b ". "on a.fruitcode=b.ids group by b.name;"; $res=$db->query($sql); $spattr=$res->fetch_all(); ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>购物车</title> </head> <body> <a href="Login.php">登录</a> <h1>大苹果购物网</h1> <div> <a href="index1.php">浏览商品</a> <a href="ViewAccount.php">查看账户</a> <a href="ViewCart.php">查看购物车</a> </div> <table width="100%" border="1"> <tr> <th>商品名称</th> <th>商品单价</th> <th>购买数量</th> <th>操作</th> </tr> <?php foreach($spattr as $v){ ?> <tr> <td><?php echo $v[2]; ?></td> <td><?php echo $v[3]; ?></td> <td><?php echo $v[4]; ?></td> <td><a href="../gouwuchegai/adf.php?id=<?php echo 1234 ?>"></a> <form action="delchuli.php?name=<?php echo $v[2]; ?>" method="post"> <input type="hidden" name="orderCode" value="<?php echo $v[1]; ?>"> <button>删除</button> </form> </td> </tr> <?php } ?> </table> <a href="dingdanchuli.php?strpice=<?php echo $strpice ?>&ids=<?php echo $ids ?>">提交订单</a> </body> </html>
点击“提交订单”,跳到订单处理页面dingdanchuli.php 将订单提交,删除订单信息,商品库存减少:
<?php session_start(); //连接数据库 $db=new MySQLi("localhost","root","","z_gwc"); !mysqli_connect_error() or die("连接失败"); $db->query("set names utf8"); $uid=$_SESSION["uid"];//获取超全局变量uid $strpice=$_GET["strpice"];//这是商品传过来的总价 $ids=$_GET["ids"]; $dlStr=$_SESSION["dlStr"];//余额 /*sql语句查询订单号*/ $sql="select code from orders where username=‘$uid‘"; $res=$db->query($sql); $codstr=$res->fetch_all(); $jg=""; if($dlStr>=$strpice){ $jg="提交成功"; foreach($codstr as $v){ $sql="update login set account =account-$strpice where username=‘$uid‘"; $db->query($sql); $sql="update fruit set numbers=numbers-1 where ids=‘$ids‘"; $db->query($sql); //删除orders表中内容 $sql="delete from orders where code=‘$v[0]‘"; $db->query($sql); //删除orderdetails表中的内容 $sql="delete from orderdetails where ordercode=‘$v[0]‘"; $db->query($sql); } }else{ $jg="余额不足"; } //跳转页面 header("location:ViewAccount.php?jg=$jg"); ?>
显示余额的页面:
代码:
<!--这个页面显示账户余额--> <?php session_start();//开始 $jg=$_GET["jg"];//获取从dingdanchuli.php接收的结果值 $uid=$_SESSION["uid"];//超全局变量uid /*连接数据库*/ $db=new MySQLi("localhost","root","","z_gwc"); !mysqli_connect_error() or die("连接失败"); $db->query("set names utf8"); /*sql语句查询余额*/ $sql="select * from login where username=‘$uid‘"; $res=$db->query($sql);//执行sql语句 $dlattr=$res->fetch_row();//获取一维数组结果集 $_SESSION["dlStr"]=$dlattr[3];//设置全局变量余额dhStr ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>余额</title> </head> <body> <a href="Login.php">登录</a> <h1>大苹果购物网</h1> <div> <a href="index1.php">浏览商品</a> <a href="ViewAccount.php">查看账户</a> <a href="ViewCart.php">查看购物车</a> </div> <span>您的账户中还剩余<?php echo $dlattr[3]; ?>元。</span><br> <span style="color:red"><?php echo $jg ?></span> </body> </html>
点击“提交订单”后,商品页面变化:
购物车页面清空,变化如下:
余额页面变化: