PHP语言和数据库

时间:2015-09-21 07:39:43

标签: php database

是一个很长的问题,但我希望你能帮助我

我添加了一个系统来切换我的网站上的语言,但现在我想让语言文件成为动态...

我会尽力解释一切:

我有这个文件在我的主页上创建幻灯片:

<?PHP

$sql = "SELECT img_url, caption  FROM cc_homeslide  ORDER BY position asc";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "<div><figure><div class='dark-effect'><img class='lazyOwl' data-src='images/slide_home/fake_img.png' alt='Awesone Food' style='background-image: url(images/slide_home/". $row["img_url"]. ")' /></div><figcaption>". $row["caption"] ."</figcaption></figure></div>";
    }
} else {
    echo "0 results";
}

?>

完美正在发挥作用。但现在我想将$row["caption"]切换为$lang["SLIDE_CAPTION"]

为什么呢?因为在我的文件en.php中我有这个:

<?php
/*
------------------
Language: English
------------------
*/

$lang = array();

 //HEAD

$lang['PAGE_TITLE'] = 'Food Delivery from quality restaurants in Hong Kong';
$lang['PAGE_DESCRIPTION'] = 'Order Food from your favorite restaurant and delivers them to your home or office ● Pay Online or Cash On Delivery';
$lang['PAGE_KEYWORDS'] = 'order food online, food delivery in Hong Kong, quality restaurants delivery';

// MENU

$lang['LANG'] = 'Eng';
$lang['LOC_HK'] = 'Hong Kong';
$lang['LOC_KW'] = 'Kowloon';

//SLIDE
require_once ("connect.php");

$sql = "SELECT img_url, caption  FROM cc_homeslide  ORDER BY position asc";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        $lang['SLIDE_CAPTION'] = $row["caption"];
    }
}

?>

但问题是我无法使标题与数据库中的右行匹配。使用此代码,我为数据库中的所有行获取相同的标题...

所以我需要在每行上制作$ lang ['SLIDE_CAPTION'] =“标题”

有什么想法吗?

我试图以最好的方式解释,但如果你感兴趣并且无法理解,请告诉我,我将再次解释

1 个答案:

答案 0 :(得分:0)

数组中的每个key必须是唯一的。您的循环生成$lang['SLIDE_CAPTION'] = $row["caption"];将每个行值返回到同一个变量中 - 因此$lang['SLIDE_CAPTION']将只是循环中的最后一个值。

使用数据库表中的唯一字段key构建$ slideCaptions数组以保存所有标题:

$slideCaptions = array();

while($row = mysqli_fetch_assoc($result)) {
    $slideCaptions[$row["id"]] = $row["caption"];
}

然后,使用key访问数组中的标题以输出value

while($row = mysqli_fetch_assoc($result)) {
    echo "<div>...</div>
          <figcaption>". $slideCaptions[$row["id"]] ."</figcaption></div>";
}