『壹』 php 实现 购物车 提交到 订单的数据库
用户登陆后系统应该会分配一个session : id,这个id应该是改用于的用户表id。然内后再做一个购物容车的表,里面可以只考虑存商品id、用户id等关键信息;
当用户提交购买的时候再做相关的操作,具体可以参考淘宝、天猫的购物车已经后续付款效果。
『贰』 关于jsp中session购物车的使用
代码1:null != goodsName
代码2:list.add(goodsName);
session.setAttribute("list",list);
--------
if(list==null){
list=new ArrayList();
list.add(goodsName);
session.setAttribute("list",list);
}else{
此处填代码2
}
这处优化一点可以这样版
ArrayList list = (ArrayList)session.getAttribute("list");
if(list == null){
list = new ArrayList();
}
list.add(goodsName);
session.setAttribute("list",list);
。。权。。
『叁』 求PHP里的TP5的购物车代码
可以参考如下代码
<?php
classCartextendsThink{
//当前购物车名
public$sessionName;
//购物车总价格
public$totalPrice
publicfunction__construct($sessionName)
{
$this->sessionName=$sessionName;
if(!isset($_SESSION[$this->sessionName]))
{
$_SESSION[$this->sessionName]="";
}
}
//获取购物车的信息
publicfunctiongetCart(){
$cur_cart_array=$_SESSION[$this->sessionName];
return$cur_cart_array;
}
//获取购物车商品清单
publicfunctiongetCartList()
{
$cur_cart_array=$_SESSION[$this->sessionName];
if($cur_cart_array!="")
{
$mode_goods_data=M("goods_data");
$len=count($cur_cart_array);
for($i=0;$i<$len;$i++)
{
$goodsid=$cur_cart_array[$i]["id"];
$num=$cur_cart_array[$i]["num"];
$query="select(selectsfilenamefromgoods_picwheregoodsid=a.goodsidorderbysnodesclimit0,1)assfilename,b.clsnameasclsname,a.goodsidasgoodsid,a.goodsnameasgoodsname,a.PriceasPrice,a._dataaleftjoingoods_clsbona.Clsid=b.clsidwherea.goodsid=$goodsid";
$list=$mode_goods_data->query($query);
$list[0]["qty"]=$num;
$list[0]["amount"]=$num*$list[0]["Price"];
$cartList[$i]=$list[0];
$totalPrice+=$list[0]["amount"];
}
//返回商品总价格
$this->totalPrice=$totalPrice;
return$cartList;
}
}
//加入购物车,购物车的商品id和购物车的商品数量
publicfunctionaddcart($goods_id,$goods_num){
$cur_cart_array=$_SESSION[$this->sessionName];
if($cur_cart_array=="")
{
$cart_info[0]["id"]=$goods_id;//商品id保存到二维数组中
$cart_info[0]["num"]=$goods_num;//商品数量保存到二维数组中
$_SESSION[$this->sessionName]=$cart_info;
}
else
{
//返回数组键名倒序取最大
$ar_keys=array_keys($cur_cart_array);
$len=count($ar_keys);
$max_array_keyid=$ar_keys[$len-1]+1;
//遍历当前的购物车数组
//遍历每个商品信息数组的0值,如果键值为0且货号相同则购物车该商品已经添加
$is_exist=$this->isexist($goods_id,$goods_num,$cur_cart_array);
if($is_exist==false)
{
$cur_cart_array[$max_array_keyid]["id"]=$goods_id;
$cur_cart_array[$max_array_keyid]["num"]=$goods_num;
$_SESSION[$this->sessionName]=$cur_cart_array;
}
else
{
$arr_exist=explode("/",$is_exist);
$id=$arr_exist[0];
$num=$arr_exist[1];
$cur_cart_array[$id]["num"]=$num;
$_SESSION[$this->sessionName]=$cur_cart_array;
}
}
}
//判断购物车是否存在相同商品
publicfunctionisexist($id,$num,$array)
{
$isexist=false;
foreach($arrayas$key1=>$value)
{
foreach($valueas$key=>$arrayid)
{
if($key=="id"&&$arrayid==$id)
{
$num=$value["num"]+$num;
$isexist=$key1."/".$num;
}
}
}
return$isexist;
}
thinkphp开发使得我们比较容易的去进行了
//从购物车删除
publicfunctiondelcart($goods_array_id){
//回复序列化的数组
$cur_goods_array=$_SESSION[$this->sessionName];
//删除该商品在数组中的位置
unset($cur_goods_array[$goods_array_id]);
$_SESSION[$this->sessionName]=$cur_cart_array;
//使数组序列化完整的保存到cookie中
}
//清空购物车
publicfunctionemptycart(){
$_SESSION[$this->sessionName]="";
}
//修改购物车货品数量
publicfunctionupdate_cart($up_id,$up_num){
//回复序列化的数组
$cur_goods_array=$_SESSION[$this->sessionName];
$cur_goods_array[$up_id]["num"]=$up_num;
$_SESSION[$this->sessionName]=$cur_cart_array;
}
}
?>
『肆』 请问thinkphp session购物车该怎么做我引用十八哥视频上讲的购物车类总是报错!
这视频我是没看过
不过你的问题应该是操作session不成功是吧
操作session的步骤就是
sesstion_start(); // 开启回session
$_SESSION['key'] = 'val'; // 保存session
echo $_SESSION['key']; // 获取答session
session_destroy(); // 销毁session
至于在TP上面呢 可以省略开启和销毁
$_SESSION['key'] = 'val'; // 保存session
echo $_SESSION['key']; // 获取session
就可以了
正常的操作是这样 如果不行的话 把报错贴出来
纯手动 还差几个采纳升级 谢谢
『伍』 请教一个php购物车的问题,现在我通过session把客户放入购物车的商品拿到了
$id = "1,2,3";
$arr = array();
$arr = explode(",",$id);
『陆』 购物车用session怎么实现的
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=utf-8");
PrintWriterout=response.getWriter();
//获得session
request.getSession();//创建了一个session
//获得所有商品
Map<String,Book>all=DB.getAll();
out.write("本站提供如下商品<br>");
for(Entry<String,Book>e:all.entrySet()){
Bookbook=e.getValue();
//超链接要url重写
//url重写做了两件事情,第一,获得session的id,第二,将id加到地址后面
Stringurl="/javaweb07/servlet/BuyServlet?id="+book.getId();
StringnewUrl=response.encodeURL(url);
out.write(book.getName()+"<ahref='"+newUrl+"'target='_blank'>购买</a><br>");
}
}
BuyServlet.java
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//获得id
Stringid=request.getParameter("id");
//找出书
Bookbook=DB.find(id);
//获得购物车
HttpSessionsession=request.getSession();
Listcart=(List)session.getAttribute("cart");
if(cart==null){
//刚进超市,分配购物车
cart=newArrayList();
}
//加入购物车
cart.add(book);
//将购物车找个地方存起来,方便下次购买
session.setAttribute("cart",cart);
//第一次创建session的时候需要发Cookie,将sessionid带给浏览器
//获得sessionid
Stringsessionid=session.getId();
//发送cookie,Cookie的key是区分大小写
Cookiecookie=newCookie("JSESSIONID",sessionid);
//设置有效时间
cookie.setMaxAge(60*60*5);
response.addCookie(cookie);
//请求重定向到购物车页面
Stringurl="/javaweb07/servlet/ListCartServlet";
//url重写
StringnewUrl=response.encodeRedirectURL(url);
response.sendRedirect(newUrl);
}
ListCarServlet
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=utf-8");
PrintWriterout=response.getWriter();
//获取购物车
//getSession方法会拿着用户的jsessionid去内存找session找不到才创建
HttpSessionsession=request.getSession();
List<Book>cart=(List<Book>)session.getAttribute("cart");
if(cart==null){
out.write("对不起!您还没有购买商品!!!");
return;
}
//遍历购物车中的商品显示
out.write("您购买了如下商品:<br>");
for(Bookbook:cart){
out.write(book.getName()+","+book.getPrice()+"<br>");
}
//让session立即失效
//session.invalidate();
out.write("<inputtype='button'value='进入结算中心'/>");
}
『柒』 怎样用Sesson做一个购物车
一、创建购物车类 CartItem
属性:商品类对象,商品数量
二、创建添加商品至购物内车的Servlet
添加步骤:
1.在servlet中取容出session< HttpSession session=request.getSession(false) >;
2.用取出的session取出保存的购物车对象 CartItem <CartItem cart=(CartItem)session.getAttribute("cart")>;
3.判断购物车对象是否为null,如果为null 则创建购物车对象,将商品对象保存至购物车,数量为1,如果不为null则执行下面的操作
4.再次向购物车中添加商品时,先判断该商品在购物车中是否存在,如果存在则修改该商品在购物车中的数量+1,如果不存
在,则将商品对象保存至购物车,数量为1;
『捌』 ASP.NET中如何用session来实现购物车的功能
Session 对象用于存储用户的信息。存储于 session 对象中的变量持有单一用户的信息,并且对于一个应用程序中的所有页面都是可用的。
Session 对象
当您操作某个应用程序时,您打开它,做些改变,然后将它关闭。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。但是在因特网上有一个问题:由于 HTTP 地址无法存留状态,web 服务器并不知道您是谁以及您做了什么。
ASP 通过为每位用户创建一个唯一的 cookie 的方式解决了这个问题。cookie 被传送至客户端,它含有可识别用户的信息。这种接口被称作 Session 对象。
Session 对象用于存储关于用户的信息,或者为一个用户的 session 更改设置。存储于 session 对象中的变量存有单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于 session 对象中的信息通常是 name、id 以及参数。服务器会为每个新的用户创建一个新的 Session,并在 session 到期时撤销掉这个 Session 对象。
Session 何时开始?
Session 开始于:
•当某个新用户请求了一个 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序时;
•当某个值存储在 Session 变量中时;
•当某个用户请求了一个 ASP 文件,并且 Global.asa 使用 <object> 标签通过 session 的 scope 来例示某个对象时;
Session 何时结束?
假如用户没有在规定的时间内在应用程序中请求或者刷新页面,session 就会结束。默认值为 20 分钟。
如果您希望将超时的时间间隔设置得更长或更短,可以设置 Timeout 属性。
下面的例子设置了 5 分钟的超时时间间隔:
<%
Session.Timeout=5
%>要立即结束 session,可使用 Abandon 方法:
<%
Session.Abandon
%>注意:使用 session 时主要的问题是它们该在何时结束。我们不会知道用户最近的请求是否是最后的请求。因此我们不清楚该让 session“ 存活”多久。为某个空闲的 session 等待太久会耗尽服务器的资源。然而假如 session 被过早地删除,那么用户就不得不一遍又一遍地重新开始,这是因为服务器已经删除了所有的信息。寻找合适的超时间隔时间是很困难的。
提示:如果您正在使用 session 变量,请不要在其中存储大量的数据。
存储和取回 session 变量
Session 对象最大的优点是可在其中存储变量,以供后续的网页读取,其应用范围是很广的。
下面的例子把 "Donald Duck" 赋值给名为 username 的 session 变量,并把 "50" 赋值给名为 age 的 session 变量:
<%
Session("username")="Donald Duck"
Session("age")=50
%>一旦值被存入 session 变量,它就能被 ASP 应用程序中的任何页面使用:
Welcome <%Response.Write(Session("username"))%>上面这行程序返回的结果是: "Welcome Donald Duck"。
也可以在 session 对象中保存用户参数,然后通过访问这些参数来决定向用户返回什么页面。
下面的例子规定,假如用户使用低显示器分辨率,则返回纯文本版本的页面:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>移除 session 变量
contents 集合包含所有的 session 变量。
可通过 remove 方法来移除 session 变量。
在下面的例子中,假如 session 变量 "age" 的值小于 18,则移除 session 变量 "sale":
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>如需移除 session 中的所有变量,请使用 RemoveAll 方法:
<%
Session.Contents.RemoveAll()
%>遍历 contents 集合
contents 集合包含所有的 session 变量。可通过遍历 contents 集合,来查看其中存储的变量:
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br />")
Next
%>结果:
username
age如果需要了解 contents 集合中的项目数量,可使用 count 属性:
<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br />")
Next
%>结果:
Session variables: 2
Donald Duck
50遍历 StaticObjects 集合
可通过循环 StaticObjects 集合,来查看存储在 session 对象中所有对象的值:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br />")
Next
%>
提供一些方法。
『玖』 为什么说用session对象来表示电子商务中的购物车
一般来说购物车信息是存放在Session中的, 因为Session 便于管理. Session 不是在用户的电脑里的, 它是一次会话内, 所以是暂存在服务器上的容.(是否是在JVM中我不敢肯定, 好像实例化出来的对象和数据都是存放在JVM, 仅供参考)
Session 的性能不用担心, 因为是服务器和一个客户端之间的会话, 而且购物车中的内容不会太多, 所以不会影响到服务器的性能.
用Session做购物车有一点不好, 除非你Session有效期设置的很长, 否则的话, 用户在操作过程中, 一旦Session 超时, 购物车中的东西就会全部丢失.
提供者:高山流水
网络空间:http://hi..com/ww715519816/home
如有其它问题可以到空间留言咨询,或者网络知道直接提问。
『拾』 PHP如何用Cookie做购物车
我有制个session的例子你看看吧!!!你把session换成cookie就可以了!!!
//增加购物车物品
if($name==$_SESSION["car"][$name]["name"])
{
$_SESSION["car"][$name]["count"]++;
}
else{
$_SESSION["car"][$name]["name"]=$name;
$_SESSION["car"][$name]["maney"]=$maney;
$_SESSION["car"][$name]["count"]=1;
}
//删除物品
if( $_SESSION["car"][$name]["count"]>1 && $dele=='1')
{
$_SESSION["car"][$a]["count"]--;
}