我想知道如何创建一个 PHP 搜索表单来在三个表中执行搜索功能:电话、制造商和操作系统。用户将搜索价格,即键入“350”将搜索手机表中的“价格”字段并显示价值 350 的所有项目,或者搜索“Android”将搜索操作系统表并显示所有运行 Android 的手机。
但是,操作系统表有一个称为 OSID 的主键,而电话表有一个引用 OSID 的外键。当电话表包含 ID 而不是操作系统的名称时,我将如何让它基于对 Android 的搜索来提取结果?
那么创建第四个表来索引所有其他表的内容呢?
您可以将此表设置为具有主键(自动递增)、第二个字段(0,表 1;1,表 2;2,表 3)和第三个字段,其外键引用指定的表。然后最后一个字段将包含一个单词。
可以将搜索查询拆分为单词并针对该第四个表进行查询。
然后 SELECT 和 JOIN 在 3 个原始表中寻找它们的匹配项......
然后在前端,您可以添加一些 css 类以允许用户快速过滤(jquery)并仅保留某种类型的结果,以便您(实际上是她)删除误报,同时仍允许用户更改她头脑。
祝你好运,
希望我理解得很好...
您有一个表:phone
,它具有来自表的引用的 ID operating_system
,并且与 相同manufacturer
,因此,例如,我在操作系统的表条目中像
操作系统
和制造商
所以,在我的桌面电话里,我有类似的东西
ID/名称/操作系统/制造商/价格
1/三星galaxy/android/三星/300usd
所以,如果你想显示搜索 350 美元以下手机的所有详细信息,你需要做这样的事情
select * from operating_system, manufacturer, phones
where phones.operating_system = operating_system.id
and manufacturer.id = phone.manufacturer
and phone.price < 350
然后显示结果..
对于不同的数据,您可以有不同的表单输入。这样,您将知道将哪些数据插入 SQL 查询的哪个部分。
不过,重新发明轮子并不是 2013 年开发人员通常推荐的活动。你可以使用已经存在的东西,比如Sphider。我敢肯定,有很多替代方案,但这是一个开始......
不过有几点建议: