『壹』 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"]--;
}