我正在为社区周围的一些农民建立一个数据驱动的网站(使用PHP和MySQL)(好吧,你会在一秒钟内看到)。他们希望能够列出他们的产品,并让人们搜索这些产品,并且他们的名字会出现,并附上详细描述所有产品的页面链接。
虽然我知道这将是一个长长的清单,我想,“因为每个搜索到mysql数据库是挑剔的 - 包括大小写敏感的 - 我只是做一个列表按字母顺序排列,人们可以从下拉框中选择什么他们想要搜索。没问题。“
嗯,现在这是一个问题。他扩展了网站的参数。他现在想要包括手工制作和自制产品。毋庸置疑,我们从几十种到数百种潜在产品,现在下拉列表已不再可行。但是,如果使用了触手可及的文本字段搜索网站,除非他们键入它没有拼写错误,并使用相同的情况下,他们不会从搜索准确的结果。
有人可以推荐另一种方法吗?我知道“LIKE”搜索,但它并没有真正解决我的问题 - 特别是因为它可能会在搜索中产生误报。任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
嗯,问题有些模糊,因为你在谈论多个搜索参数。
这更像是一种设计选择。例如,请考虑以下事项:
因此,sql查询可能是这样的:
SELECT * FROM products WHERE farmername LIKE '%$search%' AND handmade = 'handmade'
或者,在输入数据时,如果选中手工制作,请在手工制作中插入一个整数,其中1表示手工制作,0手工制作未经检查
因此,您的查询将进入AND手工制作= 1(或0),而不是手工制作
这些只是让你前进的一些想法,但这更像是一个设计决策,而不是数据库的决定,你如何创建表来使用标志
答案 1 :(得分:0)
我会使用两个表:
在文本框中输入字符时,使用AJAX搜索第一个表中的值。使用以下命令返回可能的术语列表:
从search_table中选择术语,其中术语如'%< input string>%'
只有少于10次点击时才开始返回值。 (当IE输入2个字母时,IE不会填充)。然后,当输入特定术语时,在第二个表中搜索同义词并包括搜索结果。在结果页面中,指明您包含了同义词,并且每个都可以设置一个“X”来选择重新搜索那些被排除的人。
请注意,“like”不区分大小写。