php_实现一个简易的购物车
来源:互联网 发布:艺术与视知觉知乎 编辑:程序博客网 时间:2024/05/01 08:19
通过提交数据,使用php来出里购物车商品的价钱计算。实现方式:php数组遍历。
总的过程就是:
1)表单基本功能(数据可加减);
2)表单数据的处理,遍历三个数据,获取字符串;
3)在php中将字符串转化成数组,才能计算,
/************************************第一步:前台数据的处理
在<body>中创建一个商品基本信息:
<form method="post" action="?act=going" id="forms"> <p> <input type="text" name="commidity" value="com_1" class="commidity"> <!--商品id编号--> <input type="text" value="399.0" name="prices" readonly> <!--商品价格--> <a href="javascript:void(0);" class="adds">+</a> <input type="text" name="numbers" value="1" readonly> <!--商品数量:在js里实现+—....--> <a href="javascript:void(0);" class="subs">-</a> </p> <pre name="code" class="html"> <p> <input type="text" name="commidity" value="com_2" class="commidity"> <input type="text" value="499.0" name="prices" readonly> <a href="javascript:void(0);" class="adds">+</a> <input type="text" name="numbers" value="1" readonly> <a href="javascript:void(0);" class="subs">-</a> </p>
<p> <input type="text" name="commidity" value="com_3" class="commidity"> <input type="text" value="599.0" name="prices" readonly> <a href="javascript:void(0);" class="adds">+</a> <input type="text" name="numbers" value="1" readonly> <a href="javascript:void(0);" class="subs">-</a> </p><p>
<a href="javascript:void(0);" id="subbtn">商品总价</a> //这里一定要设置一个提交的按钮,也可以设置成button的形式
</p>
</form>
针对数量部分,在jq对象里实现加减:
<scrtipt> $(function(){ //实现数量可加可减 $("a[class='adds']").click(function(){ var val_1 = $(this).next("input").val(); $(this).next("input").val(parseInt(val_1)+1); }); $("a[class='subs']").click(function(){ var val_2 = $(this).prev("input").val(); //加一个判断,避免数量出现负数 if(val_2 > 1){ $(this).prev("input").val(pareseInt(val_2)-1); } }); //提交表单处理数据步骤 $("#subbtn").click(function(){ var price_val = ""; //设置一个空的变量,用于存放字符串 var num_val = ""; var com_val = ""; //分别遍历每个商品的单价,数量和id,将这些数据转化成字符串的形式 $("input[name='prices']").each(function(){ if(price_val == "") price_val = $(this).val(); else price_val += "," +$(this).val(); }); $("input[name='numbers']").each(function(){ if(num_val == "") num_val = $(this).val(); else num_val += "," +$(this).val(); }); $("input[name='commidity']").each(function(){ if(com_val == "") com_val = $(this).val(); else com_val += "," +$(this).val(); }); }); });</script>
获得的三组字符串要传给php来处理,这里就需要一个桥接:
在form表单里添加三个隐藏的Input来存储这些值,这样当表单提交后,就可以在php中获取这些字符串,再做相应的处理。
在刚才的<form>中添加隐藏的input,这样数据就不会呈现给用户,只有后台知道啦:
<input type="hidden" name="price_val"> <!--这里的name命名要同上面jq中的三个字符串var的名字相同,才能成功读取到他们的值--><input type="hidden" name="num_val"><input type="hidden" name="com_val">
要使这些隐藏的input有值,必须接着刚才的Jq在后面添加:
$("input[name='price_val']").val(price_val);
$("input[name='num_val']").val(num_val);
$("input[name='com_val']").val(com_val);
前台值的处理就差不多了,最后一定要记得将整个表单提交:
$("#forms").submit();
/**********************************************第二部:后台数据的处理
接下来就是php的工作啦,要记得get 是获取表单数据,post是传送数据:
$($_GET['act']=="going"){ //这里建议不要有空格,反正我空格的时候出错了 //首先就是获取之前处理好的值,然后将其转化成数组,才能一次运算 $price_val = explode("," ,$_POST['price_val']); $num_val = explode("," ,$_POST['num_val']); $com_val = explode("," ,$_POST['com_val']); //这三组数组的长度要相等,不然无法计算: if(count($price_val)!=count($num_val) || count($num_val)!=count($com_val)){ die("<script>alert('暂时无法操作');</script>"); } $sum =0; if($i=0; $i<count($com_val); $i++){ $com_num = intval($num_val[$i]); if($com_num <= 0 || empty($com_num)) $com_num = 1; //如果有非法数据,则统一转化为1; $sum += floatval($price_val[$i] * $com_num); //注意类型的转化,因为价格有小数,所以是浮点型 } var_dump($sum); die();}
然后就可以运行了,总的代码如下:
<?php/** * Created by PhpStorm. * User: hp * Date: 2016/9/1 * Time: 10:50 * 购物车 */if($_GET['act']=="going"){ $price_val = explode(",",$_POST['price_val']); //转化为数组 $number_val = explode(",",$_POST['number_val']); $com_val = explode(",",$_POST['com_val']); if(count($price_val)!=count($number_val) || count($number_val)!=count($com_val)){ die("<script>alert('提示:暂时无法操作!');</script>"); //如果其中若有为0,则不能计算 } $sum = 0; for($i=0;$i<count($com_val);$i++){ //从商品Id开始遍历 $com_num=intval($number_val[$i]);//统计商品数量,数量转化为整型 if($com_num <=0 || empty($com_num)) $com_num=1; //设置有非法数量则统一转化为1 $sum += floatval($price_val[$i]) * $com_num; } var_dump($sum); die();}?><!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js" type="text/javascript"></script> <script>$(function(){ $("a[class='adds']").click(function(){ var ss = $(this).next("input").val(); //next()的用法 $(this).next("input").val(parseInt(ss) + 1); }); $("a[class='subs']").click(function(){ var yy = $(this).prev("input").val(); //prev上一级 if(yy > 1){ $(this).prev("input").val(parseInt(yy) - 1); } }); $("#subbtn").click(function(){ //获取数量组合成一个字符串 var price_val = ""; //价格 var number_val = "";//数量 var com_val = ""; //商品id $("input[name='prices']").each(function(){ if(price_val == "") price_val = $(this).val(); //判断是否为0,若为0则返回本身 else price_val += ","+$(this).val(); }); $("input[name='numbers']").each(function(){ if(number_val == "") number_val = $(this).val(); else number_val += ","+$(this).val(); }); $("input[name='commidity']").each(function(){ if(com_val == "") com_val = $(this).val(); else com_val += "," + $(this).val(); }); $("input[name='price_val']").val(price_val); $("input[name='number_val']").val(number_val); $("input[name='com_val']").val(com_val); $("#forms").submit(); //如果没有提交按钮而是a标签一定要有这句 });}); </script> <style>a{text-decoration: none;} </style></head><body><form method="post" action="?act=going" id="forms"> <input type="hidden" name="price_val"> <!--这里也必须要有隐藏参数的设置--> <input type="hidden" name="number_val"> <input type="hidden" name="com_val"> <p> <input type="hidden" name="commidity" value="1" class="commidity"> //商品的id 要隐藏 <input type="text" value="399.0" name="prices" readonly> <a href="javascript:void(0);" class="adds">+</a> <input type="text" value="1" name="numbers" readonly> <a href="javascript:void(0);" class="subs">-</a> </p> <p> <input type="hidden" name="commidity" value="2" class="commidity"> <input type="text" value="499.0" name="prices" readonly> <a href="javascript:void(0);" class="adds">+</a> <input type="text" value="1" name="numbers" readonly> <a href="javascript:void(0);" class="subs">-</a> </p> <p> <input type="hidden" name="commidity" value="3" class="commidity"> <input type="text" value="599.0" name="prices" readonly> <a href="javascript:void(0);" class="adds">+</a> <input type="text" value="1" name="numbers" readonly> <a href="javascript:void(0);" class="subs">-</a> </p> <p> <a href="javascript:void(0);" id="subbtn">商品总价</a> </p><!-- <input type="text" name="sum" readonly value="--><?php //var_dump($sum);?><!--">--></form></body></html>
运行方式是在虚拟目录上运行的:localhost/.......
0 0
- php_实现一个简易的购物车
- 简易购物车---购物车的实现
- 简易购物车的实现
- 如何使用vue实现一个简易的购物车
- PHP_分析购物车
- 简易购物车实现
- JavaWeb_Session实现简易购物车
- 一个购物车的实现
- 简易购物车业务逻辑类的实现
- 06-session实现简易购物车1
- JavaWeb_利用Session实现简易购物车
- 简易购物车Servlet类实现
- 一个购物车的实现源代码
- 基于Session的简易网上购物车
- 使用session对象的简易购物车
- iOS 简易购物车页面的搭建
- angular+bootstrap写的简易购物车
- js制作的简易购物车
- 微软面试100题系列---判断两个链表是否相交
- JAVA基础(005_static关键字)
- jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表
- Ubiquitous Religions
- 腾讯云服务器的使用
- php_实现一个简易的购物车
- java多态&&内部类
- RHEL5/6 系统提权
- Java中Properties类的操作
- FcPermissions:也许是目前最好的动态权限请求库
- 关于iOS9的APP瘦身
- 检测字符串包含emoji表情
- C语言项目
- 斯坦福公开课Machine Learning笔记(六)--Learning Theory