PHP搜索不同语言的表单数据

PHP搜索不同语言的表单数据,php,forms,search,Php,Forms,Search,我有一个三种不同语言的表单,并将信息存储在一个数据库中。我有一个搜索页面,通过选择下拉菜单从数据库中搜索数据。但当用户搜索时,他只会得到他使用的语言的结果。我需要根据用户选择显示所有语言的结果。我怎样才能达到这个目标?任何想法和帮助都将不胜感激 评论中的更多详细信息: 这是一个培训师注册和学生搜索培训师的网站。当培训师注册时,他填写表格,并从下拉菜单中选择扇区。该网站有3个不同语言的版本。当学生搜索培训师时,他选择了一个部门,我想显示与所选部门相关的所有结果,而不考虑注册的语言培训师和用户使用的

我有一个三种不同语言的表单,并将信息存储在一个数据库中。我有一个搜索页面,通过选择下拉菜单从数据库中搜索数据。但当用户搜索时,他只会得到他使用的语言的结果。我需要根据用户选择显示所有语言的结果。我怎样才能达到这个目标?任何想法和帮助都将不胜感激

评论中的更多详细信息: 这是一个培训师注册和学生搜索培训师的网站。当培训师注册时,他填写表格,并从下拉菜单中选择扇区。该网站有3个不同语言的版本。当学生搜索培训师时,他选择了一个部门,我想显示与所选部门相关的所有结果,而不考虑注册的语言培训师和用户使用的语言

我有一个如下的数据表

// Table : data
// --------------------------------------------
// username     | name     | sector_id  | lang
// --------------------------------------------
//   jack       |  Jack    | 1      | en
// --------------------------------------------
//   smith      |  Smith   | 1      | fr
// --------------------------------------------
// Table : sector
// --------------------------------------------
// sector_id | sector_eng| sector_sp    | sector_fr
// --------------------------------------------
//   1       |  Finance  | Financiar    | la finance
// --------------------------------------------
和部门表如下所示

// Table : data
// --------------------------------------------
// username     | name     | sector_id  | lang
// --------------------------------------------
//   jack       |  Jack    | 1      | en
// --------------------------------------------
//   smith      |  Smith   | 1      | fr
// --------------------------------------------
// Table : sector
// --------------------------------------------
// sector_id | sector_eng| sector_sp    | sector_fr
// --------------------------------------------
//   1       |  Finance  | Financiar    | la finance
// --------------------------------------------

例如,当用户搜索部门金融时,我需要获得jack和smith的所有数据,但在结果中显示la Finance For smith和Finance For jack

假设您支持3种语言(英语、西班牙语、法语)&让我们以金融部门为例。无论您为金融部门存储什么数据,请将这些数据的3个版本分别存储在各自的语言中,并存储在您的数据库中

但是,当您的用户将搜索任何数据时-只搜索英文版数据。然后,在得到结果(英语版本)后,也获取其他不同版本(这里是西班牙语、法语)的所有类似数据。然后,根据用户的喜好显示相应的版本数据

希望对你有帮助

下面是一个示例表结构,它与您在问题中共享的用例有关。根据应用程序的复杂程度,可能会有所不同,我不知道。但是,希望它能给你一些基本的理解,让你继续前进

// Table : sector
// ---------------------------------
// sector_id    | sector_name_eng
// ---------------------------------
//  1           | Finance
// ---------------------------------
//  2           | Statistics
// ---------------------------------
//  3           | Biology
// ---------------------------------


// Table : lang_reference
// ------------------------------
// lang_id      | lang_name
// ------------------------------
//  1           | english
// ------------------------------
//  2           | spanish
// ------------------------------
//  3           | french
//  -----------------------------


// Table : sector_lang_details
// --------------------------------------------
// sector_id    | lang_id   | sector_name
// --------------------------------------------
//   1          |  1        | Finance
// --------------------------------------------
//   1          |  2        | Financiar
// --------------------------------------------
//   1          |  3        | Finance_in_french
// --------------------------------------------
//   2          |  1        | Statistics
// --------------------------------------------
//   2          |  2        | Statistics_in_spanish
// --------------------------------------------
//   2          |  3        | Statistics_in_french
// --------------------------------------------
//   3          |  1        | Biology
// --------------------------------------------
//   3          |  2        | Biology_in_spanish
// --------------------------------------------
//   3          |  3        | Biology_in_french
// ---------------------------------------------------



// Table : trainer_details
// --------------------------------
// trainer_id   | trainer_name
// ---------------------------------
//  1           | Tariner A
// ---------------------------------
//  2           | Tariner B
// ---------------------------------
//  3           | Tariner C
// ---------------------------------


// Table : trainer_teches_sectors
// ---------------------------------
// trainer_id   |   sector_id
// ---------------------------------
//  1           |   1
// ---------------------------------
//  1           |   2
// ---------------------------------
//  2           |   1
// ---------------------------------
//  3           |   3
// ---------------------------------

您可以使用父子结构,这将允许您使用多种语言

比如说 所有系统中的语言都定义为两个字符(ar、en、de、fr等)

所以你的桌子是这样的

select * from sector where language="en" and (id=$id or parent_id=$id );
扇区表

id - sector_name       - parent_id - language
1  - Sector in English - null -       en 
2  - Sector in French  - 1    -       fr 
3  - Sector in Spain   - 1    -       sp
  • parent_id是一个外键,当记录为父项时,该外键将为null,当当前记录为子项时,该外键将具有父项id
您的select语句如下所示

select * from sector where language="en" and (id=$id or parent_id=$id );
参考文献


那么数据是如何存储的呢?您是否使用了任何框架?你已经试过什么了?@DestinatioN,我不知道该怎么办。首先,我尝试用不同的语言在下拉菜单中显示数据,并仅用一种语言存储数据。但在搜索中它是problem@DestinatioN,以不同语言存储的数据,当用户注册时,他从下拉菜单中选择(例如:扇区->IT)并按表单所示存储数据。我不使用任何框架,如果你想显示所有的结果只是不考虑你的内部部门query@DestinatioN,例如,如果用户搜索金融部门,我希望以所有语言显示有关金融部门的结果。有很多扇区,我想显示用户选择的结果谢谢你的回答。让我更详细地解释我的表格,也许你会有更相关的解决方案。这是一个培训师注册和学生搜索培训师的网站。当培训师注册时,他填写表格,并从下拉菜单中选择扇区。该网站有3个不同语言的版本。当学生搜索培训师时,他选择了一个部门,我想显示与所选部门相关的所有结果,而不考虑注册的语言培训师和用户使用的语言。Ok。那么,你在实现这一点时面临的问题是什么?如果它们是完全不同的词,我如何比较它们?例如,如果用户从下拉列表中选择Finance,php将如何获得financiar(西班牙语)的结果?完全不同的词!!!你能举个例子吗?我对你们的要求有点困惑。例如,数据库中有两个培训师。其中一个以英文版注册,并被选为金融行业。其他培训师以西班牙语版本注册,并选择行业作为Financiar。学生使用英文版本进行搜索,并在“部门”下拉菜单中选择“金融”。我需要显示金融(金融)部门所有培训师的培训结果,无论他们注册时使用何种语言(我的意思是在本例中显示这两名培训师),为什么在西班牙的课程中家长id也是1?因为法语和西班牙都是从原始名称翻译过来的,即英语-id=1,如果这是一个愚蠢的问题,我很抱歉,但我将如何提供部门名称的翻译版本?我的意思是php将如何理解西班牙语版本的Finance是Financial?通过语言参数,您将其存储在每个记录中。从language=“sp”和(id=$id或parent_id=$id)所在的课程中选择*;您必须通过cookie或会话等存储用户语言