我的目标是创建一个多语言网站。 起初,我计划只有3种语言(法语,德语和英语)。
欢迎页面将以英文显示,然后将通过php会话传送的变量对下一页进行本地化。
我创建了一个包含以下列的表格page2:
Field_name | English | German | French
表包含:
Name | "Your name" | "Ihre Name" | "Votre nom"
Street | "Streetname" | "Ihre Strasse" | "Votre rue"
...
php代码:
$sql = "SELECT * FROM page2;";
$result = mysql_query($sql);
我想以适当的语言显示表格内容(在页面的几个部分中)。
如果是英文: 你的名字:史密斯(从另一张表中检索的价值 - 这里不是问题!)
如果是德语: Ihre Name:Smith(从另一个表中检索的值 - 这里不是问题!)
我的问题是如何拥有"你的名字"或者" Ihre Name"或" Votre nom"如:
echo $result['Name'][column=$lang];
显示"英语"行的列值"名称"如果英语设置为$ lang
显示"德语"行的列值"名称"如果德语设置为$ lang
答案 0 :(得分:1)
我认为这就是你想要的:
$query = "SELECT `$language` FROM `page2` WHERE `Field_name` = 'Street'";
echo $result[$language];
答案 1 :(得分:0)
你已经拥有它了:
$lang="German";
$sql = "SELECT * FROM page2 where field_name='Name'";
// etc...
echo $result[$lang];
只需根据需要输入field_name
,然后访问数组的结果"英语","德语"或"法语"。
答案 2 :(得分:0)
我不完全理解你描述表格的方式,但这应该让你大致了解一种方法。我们将所有结果添加到名为$ names的数组中。然后,对于每一行,我们都会添加一个带有该语言的密钥,然后在那里我们添加该语言的人名。
$names = array();
for( $i=0; $r=mysql_fetch_assoc( $sql ); $i++ ){
$names[$i][$r['language']] = $r['name'];
}
答案 3 :(得分:0)
你应该试试这个:
$arrResult = array();
$sql = "SELECT * FROM page2";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
$arrResult[$row['field_name']] = $row;
}
echo $arrResult['Name']['English'];
答案 4 :(得分:0)
我将在这里偏离其他答案的模式,并建议您的数据模型不正确,应该更改。
如果要添加更多语言,则需要为每种语言添加列,以修改表的结构。我相信修改表格中的数据会更有意义:
field_name | lang | value
-----------+------+-------------
name | EN | Your name
name | DE | Ihre Name
name | FR | Votre nom
street | EN | Streetname
street | DE | Ihre Strasse
...
这样您可以使用如下查询:
select * from page2 where lang = ?
,然后只需在代码中使用请参阅下面的编辑2. $result['name']
和$result['street']
。
添加新语言就像执行insert
语句一样简单。
<强> 修改 强>
我强烈建议您阅读“Why shouldn't I use mysql_* functions in PHP?”
编辑2
正如ChristopheL所述,需要以下方法来检索值:
while ($row = mysql_fetch_assoc($result)) {
$arrResult[$row['field_name']] = $row;
}
echo $arrResult['name']['value'];
echo $arrResult['street']['value'];