cookie版购物车
#region 添加到购物车AddShoppingCar
/// <summary>
/// 添加到购物车AddShoppingCar
/// </summary>
/// <param name="num">数量 如果存在产品 负数是减少
/// 正数是增加 如果不存在 直接增加</param>
/// <param name="id">货物ID</param>
/// <param name="expires">cookies保存的天数</param>
/// <remarks>这里的方法就是把在原有的Cookie基础上判断是否有
/// 这个产品 如果有 在原有数量上增加 没有 就直接增加 如果是负
/// 数 就是减少 如果负数的数量大于等于
/// 原有数量 设置为0 对应后面的读出操作</remarks>
public static void AddShoppingCar(string num, string id, int expires)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null)
{
System.Web.HttpCookie cookie;
string cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
if (System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id.ToString()] == null)
{
cookievalue = cookievalue + "&" + id + "=" + num;
}
else
{
int num1 = int.Parse(System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id.ToString()].ToString()) + int.Parse(num);
if (num1 > 0)
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id.ToString()] = num1.ToString();
}
else
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id.ToString()] = "0";
}
cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
}
cookie = new System.Web.HttpCookie("Products", cookievalue);
if (expires != 0)
{
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(expires, 0, 0, 20);
cookie.Expires = dt.Add(ts);
}
System.Web.HttpContext.Current.Response.AppendCookie(cookie);
}
else
{
System.Web.HttpCookie newcookie = new HttpCookie("Products");
if (expires != 0)
{
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(expires, 0, 0, 20);
newcookie.Expires = dt.Add(ts);
}
newcookie.Values[id.ToString()] = num;
System.Web.HttpContext.Current.Response.AppendCookie(newcookie);
}
}
#endregion
#region 添加到购物车AddShoppingCar
/// <summary>
/// 添加到购物车AddShoppingCar
/// </summary>
/// <param name="num">数量 如果存在产品 负数是减少
/// 正数是增加 如果不存在 直接增加</param>
/// <param name="dt">
/// 循环读出来的DATATABLE
/// </param>
/// <param name="id">货物ID</param>
/// <param name="expires">cookies保存的天数</param>
/// <remarks>这里的方法就是把在原有的Cookie基础上判断是否有
/// 这个产品 如果有 在原有数量上增加 没有 就直接增加 如果是负
/// 数 就是减少 如果负数的数量大于等于
/// 原有数量 设置为0 对应后面的读出操作</remarks>
public static void AddShoppingCar(DataTable dt, int expires)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null)
{
System.Web.HttpCookie cookie;
string cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"].Values[dt.Rows[i]["id"].ToString().ToString()] == null)
{
cookievalue = cookievalue + "&" + dt.Rows[i]["id"].ToString() + "=" + dt.Rows[i]["num"].ToString();
}
else
{
int num1 = int.Parse(System.Web.HttpContext.Current.Request.Cookies["Products"].Values[dt.Rows[i]["id"].ToString().ToString()].ToString()) + int.Parse(dt.Rows[i]["num"].ToString());
if (num1 > 0)
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[dt.Rows[i]["id"].ToString().ToString()] = num1.ToString();
}
else
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[dt.Rows[i]["id"].ToString().ToString()] = "0";
}
cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
}
}
cookie = new System.Web.HttpCookie("Products", cookievalue);
if (expires != 0)
{
DateTime time1 = DateTime.Now;
TimeSpan ts = new TimeSpan(expires, 0, 0, 20);
cookie.Expires = time1.Add(ts);
}
System.Web.HttpContext.Current.Response.AppendCookie(cookie);
}
else
{
System.Web.HttpCookie newcookie = new HttpCookie("Products");
if (expires != 0)
{
DateTime time1 = DateTime.Now;
TimeSpan ts = new TimeSpan(expires, 0, 0, 20);
newcookie.Expires = time1.Add(ts);
}
for (int i = 0; i < dt.Rows.Count; i++)
{
newcookie.Values[dt.Rows[i]["id"].ToString()] = dt.Rows[i]["num"].ToString();
}
System.Web.HttpContext.Current.Response.AppendCookie(newcookie);
}
}
#endregion
#region 根据ID删除产品RemoveShoppingCar
/// <summary>
/// 根据ID删除产品RemoveShoppingCar
/// </summary>
/// <param name="id">产品ID</param>
/// <remarks>
/// 就是设置商品数量为0
/// 本来增加方法可以实现
/// 但是需要读出来原有数量
/// 所以为了避免繁琐 有此方法
/// </remarks>
public static void RemoveShoppingCar(string id)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null && System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id] != null)
{
System.Web.HttpCookie cookie;
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id] = "0";
string cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
cookie = new System.Web.HttpCookie("Products", cookievalue);
System.Web.HttpContext.Current.Response.AppendCookie(cookie);
}
}
#endregion
#region 删除购物车RemoveShoppingCar
/// <summary>
/// 删除购物车RemoveShoppingCar
/// </summary>
/// <remarks>
/// 使购物车的Cookie为空
/// </remarks>
public static void RemoveShoppingCar()
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null && System.Web.HttpContext.Current.Request.Cookies["Products"].Values.Count != 0)
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Expires = System.DateTime.Now.AddHours(-1);
System.Web.HttpContext.Current.Response.AppendCookie(System.Web.HttpContext.Current.Request.Cookies["Products"]);
}
}
#endregion
#region 根据ID修改产品UpdateShoppingCar
/// <summary>
/// 根据ID修改产品UpdateShoppingCar
/// </summary>
/// <param name="id">产品ID</param>
/// <param name="num">产品数量</param>
/// <remarks>
/// 更新产品的数量
/// </remarks>
public static void UpdateShoppingCar(string id,string num)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null && System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id] != null)
{
System.Web.HttpCookie cookie;
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id] = num;
string cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
cookie = new System.Web.HttpCookie("Products", cookievalue);
System.Web.HttpContext.Current.Response.AppendCookie(cookie);
}
}
#endregion
#region 得到所有的产品列表GetAllChoppingCar
/// <summary>
/// 得到所有的产品列表GetAllChoppingCar
/// </summary>
/// <returns>所有产品的数据集</returns>
/// <remarks>因为对DataTable操作比较方便(个人喜好)
/// 这里是把里面的字符串分割为Datatable</remarks>
public static DataTable GetAllChoppingCar()
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null && System.Web.HttpContext.Current.Request.Cookies["Products"].Value.Trim() != "")
{
DataColumn dcid = new DataColumn("id");
DataColumn dcnum = new DataColumn("num");
DataTable dt = new DataTable();
dt.Columns.Add(dcid);
dt.Columns.Add(dcnum);
string[] str = System.Web.HttpContext.Current.Request.Cookies["Products"].Value.Split('&');
for (int i = 0; i < str.Length; i++)
{
DataRow dr = dt.NewRow();
dr["id"] = (str[i].Split('='))[0].ToString();
dr["num"] = (str[i].Split('='))[1].ToString();
if (int.Parse((str[i].Split('='))[1].ToString()) != 0)
{
dt.Rows.Add(dr);
}
}
return dt;
}
else
{
return null;
}
}
#endregion
#region 关于购物车Cookie里的DataTable的操作GetCookieByDataTable
/// <summary>
/// 关于购物车Cookie里的DataTable的操作GetCookieByDataTable
/// </summary>
/// <param name="dt"></param>
/// <remarks>
/// 把读出来的DataTable转换为字符串
/// 根据的规则是自己定的 &符号是分开产品
/// =号是分开产品ID和产品价格
/// </remarks>
/// <returns></returns>
public static String GetCookieByDataTable(DataTable dt)
{
String datatable = "";
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
datatable = dt.Rows[i]["id"].ToString() + "=" + dt.Rows[i]["num"].ToString() + "&" + datatable;
}
}
return datatable;
}
#endregion
#region 把字符串转换为datatable GetDataTable
/// <summary>
/// 把字符串转换为datatable GetDataTable
/// </summary>
/// <param name="datatable"></param>
/// <remarks>
/// 把Cookie里的字符串转换为DataTable
/// 是GetCookieByDataTable的反操作
/// </remarks>
/// <returns></returns>
public static DataTable GetDataTable(string datatable)
{
DataColumn dcid = new DataColumn("id");
DataColumn dcnum = new DataColumn("num");
DataTable dt = new DataTable();
dt.Columns.Add(dcid);
dt.Columns.Add(dcnum);
if (!datatable.StartsWith("&"))
{
string[] str = datatable.Split('&');
for (int i = 0; i < str.Length; i++)
{
DataRow dr = dt.NewRow();
dr["id"] = (str[i].Split('='))[0].ToString();
dr["num"] = (str[i].Split('='))[1].ToString();
if (int.Parse((str[i].Split('='))[1].ToString()) != 0)
{
dt.Rows.Add(dr);
}
}
}
else
{
DataRow dr = dt.NewRow();
dr["id"] = (datatable.Split('='))[0].ToString();
dr["num"] = (datatable.Split('='))[1].ToString();
if (int.Parse((datatable.Split('='))[1].ToString()) != 0)
{
dt.Rows.Add(dr);
}
}
return dt;
}
#endregion
转贴请注明alon发表在http://www.cnblogs.com/alon1982 与2008年12月3号
转载于:https://www.cnblogs.com/alon1982/archive/2008/11/28/1343206.html
cookie版购物车相关推荐
- [转].net cookie版购物车
本文转自:http://www.sulong.cc/article/program/aspx/110613114249.html #region 添加到购物车AddShoppingCar /// &l ...
- 简易版购物车案例(vue)
简易版购物车案例(vue) <div id="app"><div v-if="books.length"><table>&l ...
- Cookie存储购物车
1.1 需求分析 使用Cookie存储购物车数据,服务层负责业务逻辑,控制器层负责读写cookie. 说明:Cookie的value存储List<Cart> 的json格式字符串数据(中文 ...
- 用session和mysql实现购物车_Session和Cookie实现购物车
使用Session和Cookie实现购物车的比较 购物车相当于现实中超市的购物车,不同的是一个是实体车,一个是虚拟车而已.用户可以在购物网站的不同页面之间跳转,以选购自己喜爱的商品,点击购买时,该商品 ...
- 深夜十点半(三)——我的第三个Python程序“增强版购物车”
项目要求: 1.增强版购物车是利用了文件系统,保存用户的购物列表和当前余额信息,在用户每次购物前先读取用户当前余额后再进行购买,并把购买的物品名称存到列表中: 2.用文件系统保存商品明细,不用每次都进 ...
- lower版购物车模拟
goods = [{"name": "小哥哥", "price": 1999},{"name": "润滑油&q ...
- PHP爬虫之QQ空间自动点赞--更换cookie版
QQ空间自动点赞网上一搜一大把,但是关于php的还是停留在用以前的3Gqq登陆方式获取sid之后再点赞的.而现在貌似3Gqq没法用了, 网上也没有关于最新的.实现QQ空间自动点赞已经很久了,一直没有发 ...
- cookie购物车php简单,php中利用cookie实现购物车实例_PHP教程
– phpMyAdmin SQL Dump – version 2.11.9.2 – – 主机: 127.0.0.1:3306 – 生成日期: 2009 年 12 月 06 日 02:05 – 服务器 ...
- (个人笔记)Django学习笔记整理
'@' 为遗漏点或者难点 '#' 为重点标记 '若有打眼,欢迎自取,错误之处,还请指教 DAY 11.24@ url统一资源定位符限定有2到4kb 因为浏览器地址栏里只能输入这么多东西1,MVT2,观 ...
最新文章
- 代码操作Oracle
- Phone重绘机制drawRect 转
- 朴素贝叶斯法---朴素贝叶斯法的参数估计
- 从Excel读取数据,然后分析相似的数据,多线程处理(多线程比较相似的字符串,统计出相似的数量及字符串)...
- 序列化 与 反序列化 字符串 实例
- 国内人气设计师交流平台集设
- 支持全文搜索的桌面搜索工具
- vm内核参数之缓存回收drop_caches
- CentOS历史版本下载
- 十首最美的诗,醉美了整个秋天
- Python语言程序设计 习题1
- TypeScript散文
- mybatis mysql连接时区_MySQL时区的查看和设置
- 支付宝扫码跳转到跳转页面
- a += a-= a*a
- 脑机接口竞赛( BCI competition)数据集,其他数据集下载链接
- 机器学习(特征选择与稀疏学习)
- 高斯混合模型的终极理解
- 【CANOE】- 基于CAPL的UDS Bootloader刷写设计
- 使用console.time打印代码运行时间
热门文章
- 【软考-软件设计师】计算机安全
- oracle常用函数api,Oracle-API OracleAPI、oracle10G函数大全(常用函数)、 联合开发网 - pudn.com...
- union all动态表_深入窥探动态链接
- 【windows】Qt打开资源管理器并选中指定文件
- 将String转换成Int数组-Java
- 前、中、后缀表达式概述及转换+栈的计算器原理及代码分析(含完整源码)
- list删除某个元素_Redis对象——列表(List)
- 2013NOIP普级组-- 小朋友的数字
- 4.1.3 OS之文件目录目录结构(单级-两级-多级-无环图)、索引节点FCB瘦身
- 该工程中的宏被禁止_建筑工程的发包与承包中有哪些行为是禁止的?