比如这个例子
http://www.360buy.com/products/737-752-753-0-0-0-0-0-0-0-1-1-1.html
电饭煲 - 商品筛选
关键在于对不同的商品类别,有不同筛选条件,筛选内容又是多样变化的,从数据库设计到程序实现,要怎么做种呢。
请提供经验和思路,谢谢。
http://www.360buy.com/products/737-752-753-0-0-0-0-0-0-0-1-1-1.html
电饭煲 - 商品筛选
关键在于对不同的商品类别,有不同筛选条件,筛选内容又是多样变化的,从数据库设计到程序实现,要怎么做种呢。
请提供经验和思路,谢谢。
也就是说737-752-753-0-0-0-0-0-0-0-1-1-1.html表示的参数格式为:
分别应该是:737 -752 -753 -0 -0 -0 -0 -0-0-0-1 -1 -1.html
一级类(如:家用电器)-二级类(如:厨房电器)-三级类(如:电饭煲)-品牌-价格-类别-容量-0-0-0-1-排序方式 -1其中:容量与排序方式之间有3个0,和1个1,应该扩展用的,比如这个页面:http://www.360buy.com/products/737-794-888-0-0-0-0-0-0-0-1-1-1.html,燃气热水器的参数就多一些:气源,品牌,款式,排烟方式,价格,最大容积L。
最后一个1,可能是表示是否在页面里显示推荐产品,你改成2试试,改3,4,5,都行,说明是此网站做了伪静态处理,应该用URL重写(UrlRewriter 是微软封装好了的一个URL重写组件)实现de.
对啊!用url重写把参数转化成querystring
机械版
电脑版
筛选时,在DB里如何读取数据呢,因为商品表没有直接关于这个什么 机械版, 电脑版 字段,这要如何从DB读取数据进行筛选呢?
你的意思是如:电视有尺寸、分辨率属性,冷柜类可能有款式、容积的属性,也就是说不同的商品有不同的属性这样是吧?首先要分析一点,同分类的属性值应该是相同,如加湿器他的容积是1.0L以下、1.0L-2.0L、2.1L-3.0L3.1L这样的,也就是说凡是加湿器,管他哪个品牌的他都是这样的。但是冷柜则不同,他的容积是这样分的,100L以下、101-150L、151-200L、201-300L。
我的建表方式:
Brand_List(品牌列表)
id name
1 海尔
2 TCL
3 星星Product_Category(商品分类)
id parent_id name BrandID_List(这里存放品牌的ID集合)
1 0 家电
2 1 电视 1,2
3 1 冷柜 1,3
4 1 加湿器 1,2,3Category_attribute(商品分类属性)
id category_id name values
1 2 尺寸 19英寸,20英寸,21英寸
2 2 分辨率 1366*768,166*768
3 3 冷柜容积 100L以下,01-150L
4 4 加湿器容积 1.0L以下,1.0L-2.0LProducts_list (商品信息表)
id Category_Id(分类ID) Brand_Id(品牌ID) Name
1 2 1 海尔电视
2 3 3 星星冷柜Products_attribute (商品属性)
id product_id(商品ID) cat_att_id(商品分类属性的ID) att_value(属性值)
1 1 1 19英寸
2 1 2 1366*768
3 2 3 100L以下后台录入商品时:1、选择商品分类;2、选择品牌(选择品牌的时候只读取与所选分类关联的品牌);3、属性的选择(将此分类关联的属性读出来,再读出每个属性的选项),除属性的数据写入到独立的表(products_attribute)外,其他信息均写入products_list表。
前台筛选:选择分类后--》读出与此分类相关的品牌、读出与此分类相关的属性以及每个属性的选项值,执行查询时如果只根据分类和品牌去查,则直接的products_list表,如果要根据属性查,比如电视尺寸为19寸的,则此时需要去检索Products_attribute(商品属性)表,将检索出的结果与PRODUCTS——LIST关联就行。今天工作不算忙,就写了这么多,看似乎有些复杂,或许是我的思路不够好吧,如果有好的方式也希望别人能贴出来。你先看下对你是否有用,对了如果觉得还行,请记得给点辛苦分啊。
但如果根据多属性查询呢?比如,电视,用户要查询 19寸,彩色,平板,how to do it?!
尺寸:19英寸,20英寸,21英寸
分辨率:1366*768,166*768
你可以看下Category_attribute(商品分类属性) 这个表。
产品表里面还有很多其他字段如价格、容量、规格、产品名称、产品描述、产品图片等京东商城采用的是伪静态,搜索方式还是GET参数传递,很容易理解http://www.360buy.com/products/737-752-753-0-0-0-0-0-0-0-1-1-1.html这个红色部分就是参数,你仔细看,有个规律,就是13个参数,但我搜索美的的产品时候,变成:
http://www.360buy.com/products/737-752-753-3212-0-0-0-0-0-0-1-1-1.html第四个参数代表品牌,你的要求“关键在于对不同的商品类别,有不同筛选条件”,只要多个搜索条件以GET参数传递给后台,用程序去构造相关的查询SQL语句,即可
多属性只是对关联查询到的“电视”数据集起到一个过滤的作用罢了还要考虑到以后的升级扩充维护等等
没弄过还真让人头疼滴
你这种方法不行的,因为你最终的项写到一个表中的一个字段中的,所以肯定不行,如果多条件查询时肯定没戏,如:where att_value='19寸' and where att_value='彩电'这种肯定查询不到任何结果
http://sports.8t8x.com/product/lunhuahuabang.htm