2016-04-18 82 views
1

我正在构建一个自定义的CMS,并且我试图通过使用MySQL的列方法创建多语言内容。我没有使用任何框架,它是纯PHP。

这里是我的代码:

<?php 
$query = "SELECT * FROM posts"; 
$result = mysqli_query($connection, $query); 

while($row = mysqli_fetch_assoc($result)) { 
    $title = $row['title']; 
} 
echo $title; 
?> 

我成功打印从数据库标题。

现在,如果我加入了新的领域“title_en”和“title_de”更改表的帖子,并添加一个会话

$_SESSION['current_language'] = 'en'; 
$_SESSION['current_language'] = 'de'; 

如何创建一个语言切换器和打印标题取决于哪种语言被激活?

编辑:

下面是我试图

<?php 
session_start(); 

if(isset($_GET['lang']) && in_array($_GET['lang'],['en','de'])) { 
    $lang = $_GET['lang']; 
    $_SESSION['current_language'] = $lang; 

    print_r($_SESSION['current_language']); 
} else { 
    $lang = isset($_SESSION['current_language']) ? $_SESSION['current_language'] : 'en'; 
} 
$query = "SELECT * FROM posts"; 
$result = mysqli_query($connection, $query); 

while($row = mysqli_fetch_assoc($result)) { 
    $title = $row['title_'.$lang]; 
    echo $title; 
} 
?> 

但www.mywebsite.com/lang=de它仍然显示英文名称的代码。

EDIT2

我只是试着www.mywebsite.com/?lang=de和它的正常显示。非常感谢ПавелИванов!

+2

可能的复制网址李名单 - (HTTP [PHP多语言如何切换语言?]://计算器。 com/questions/8004276/php-multilanguage-how-to-switch-languages) – bretterer

回答

3

只需使用保存的语言作为键。 get属性应具有比保存会话更多的优先级(例如,当用户想要切换语言时)。

if(isset($_GET['lang']) && in_array($_GET['lang'],['en','de'])) { 
    $lang = $_GET['lang']; 
    $_SESSION['current_language'] = $lang; 
} else { 
    $lang = isset($_SESSION['current_language']) ? $_SESSION['current_language'] : 'en'; 
} 
$query = "SELECT * FROM posts"; 
$result = mysqli_query($connection, $query); 
while($row = mysqli_fetch_assoc($result)) { 
    $title = $row['title_'.$lang]; 
    echo $title; 
} 

编辑: 语言切换简单UL>与LANG = “你的郎” 的

+0

嗨,Павел。我试过你的代码,但我收到警告:mysqli_fetch_assoc()期望参数1是mysqli_result。我已经删除了“标题”字段,并且只保留了“title_en”和“title_de”值,但我仍然收到该错误。 – user2519032

+0

如果您将select更改为'''从posts'''中选择title_en,title_de,该怎么办? –

+0

另外我错过了$ result = mysqli_query($ connection,$ query); (更新) –