2014-11-24 54 views
0

我的任务是为我的一位朋友创建一个可搜索的列表,我主要是一名前端设计师,所以我只知道极端的基础知识以及通过书籍和教程可以找到的任何内容。将产品存储在MYSQL数据库中,然后搜索并过滤它们?

至于这个问题,有没有办法在MySQL数据库中创建可以容纳一些标签的项目,例如高度,宽度,厚度,颜色,公司,类型,类别和配置文件图像?理论上,我想建立一个我已经拥有的注册页面,我的朋友可以用它自己添加产品。在“product s”中将项目创建为“项目”是否可以成为解决此问题的有效方法?

CREATE TABLE `admin`.`productss` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `type` VARCHAR(30) NOT NULL, 
    `category` VARCHAR(50) NOT NULL, 
    `thickness` CHAR(128) NOT NULL, 
    `height` CHAR(128) NOT NULL, 
    `color` CHAR(128) NOT NULL, 
    `material` CHAR(128) NOT NULL, 
) ENGINE = InnoDB; 

或者语法不允许我这样做?

我现在有使用“”数据库的解决方案,或者类似的被隐藏,直到搜索,但这仅使用做了一个长长的清单HTML,CSS,JS,我找一个更优雅解决这个问题。

===========================

小提琴工作滤波W/HTML/CSS/JS的: http://fiddle.jshell.net/j1by6xn1/10/

骗取钱财的 '假' 数据库列表: http://jsfiddle.net/5ky8gx4L/

===========================

+----+-----+----+ 
|NAME|GREEN|15in| 
+----+-----+----+ 
|NAME| RED |10in| 
+----+-----+----+ 

并在由siz过滤e'15in'它只会显示15in作为尺寸标签的产品。

+----+-----+----+ 
|NAME|GREEN|15in| 
+----+-----+----+ 
+1

向我们展示您使用'fake'列表所做的操作,并且可以帮助您构建查询。 – Pogrindis 2014-11-24 14:14:08

+0

你应该没问题。避免对列名使用[关键字](http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html)。 – 2014-11-24 14:14:16

+0

让我创建一个小提琴,然后编辑我的问题,给我一点时间。 – 2014-11-24 14:16:17

回答

0

你可以插入行表productss你表现,那么你可以用WHERE条款进行筛选。这将走在电线之间的东西:

//This shows all the products with type 'My Type' : 
SELECT * FROM `productss` WHERE `type` = 'My Type' 

//This shows all the products where the category has the text 'abc' in it (so also 12abc34 or 12abc : 
SELECT * FROM `productss` WHERE `category` LIKE '%abc%' 

//This shows all the products where the color is 255: 
SELECT * FROM `productss` WHERE `color` = 255 

这是后端的过滤,整洁的方式做到这一点的前端是使用AJAX从JavaScript调用PHP脚本,它需要的变量过滤。

另一种方法是使用jQuery,打印列表中的所有行并添加数据属性;那么你的li标签看起来像:

<li data-color='255' data-category='Something' data-type='My Type'>Hello</li> 

值数据的颜色,类别等,会从你的数据库,直接来了。然后,您可以像这样过滤它们:

$(function(){ 
    $(".sortButton").click(function(){ 
    var filterByColor = $(this).attr('colorfilter'); //say this value is the color you want to filter by 
    $("li").hide(); //hide all options 
    $("li[data-color="+filterByColor+"]").show(); //show the options that match the filter 
    }); 
}); 
+0

所以,如果我有2个产品,例如:绿色,15英寸,3毫米厚,artsy玻璃片和另一个相同,但与红。子句'WHERE'将根据列出的内容进行过滤?哪里'颜色'=绿色,只会显示绿色的? – 2014-11-24 14:29:39

+0

确实如此。你也可以用AND运算符给出多个WHERE语句,如下所示:'SELECT * FROM productss WHERE color = 255 AND type ='My Type'AND category LIKE'%something%'' – 2014-11-24 14:57:49

+0

这是用于客户端过滤还是仅用于后端?我正在寻找允许客户端基于按钮和下拉列表来过滤列表。 **添加表问题,以便更好地理解** – 2014-11-24 15:00:11

相关问题