单击国家标志更改数据库中的语言

时间:2014-06-05 20:13:43

标签: javascript php mysqli

Litte有点长的解释。我为访问我的网站(双语)的人保存了一个数据库名称“visitor”:

  1. id = 1

  2. session = fdslup7nsop20ctlkbcf2f7016

  3. country = singapore

  4. language = en

  5. 基于该数据库,我可以使用语言(en)作为会话以英文版本呈现我的网站。

    在我的index.php中,我使用这个脚本并且它可以工作:

    $locallang=$pages->SelectLocalLanguage(); // pointed to $page class
    $_SESSION['mylang'] =$locallang;
    
    if ($_SESSION['mylang']=='en' {
       // show in english
      }else{
       // show in other language
     }
    
    $ page class中的

    public function SelectLocalLanguage() {
        $ses_id = session_id();
        $query  = $this->db->prepare("SELECT * FROM `visitors` WHERE session=? ");
        $query->bindValue(1, $ses_id);
           try {   $query->execute();
                     $result = $query->fetch();
        return $result ['language'];
        } catch(PDOException $e){
            die($e->getMessage());
        } 
        }
    

    在我的topheader.php中,我有几个标志图像代表每种语言(id,en,fr,ru),其中一个是:

    <li><a href="#" ><img src="/images/flags/id.png"></a></li>
    

    问题:

    点击旗帜图片,我需要:

    1. 更改数据库中的“语言”记录,同时
    2. 刷新页面以查看结果。
    3. 我使用了很多方法,但仍然很愚蠢。

          <li><a href="#"  onClick="ChangeLang('id'); window.location.reload();return false;"><img src="/images/flags/id.png"></a></li>
      
      <script type="text/javascript">
      function ChangeLangauge(lg) {
          alert("Change Language? Page will be Refresed..!!");
          url = "/includes/change-lang.php?newlang=" + lg;
      
      }
      </script>
      

      通过这种方式仍然没有改变..

      change-lang.php:

      <?php
      $lg=$_GET['newlang'];
      $pages->ChangeLang($lg);
      ?>
      

      在#pages类中:

      public function ChangeLang($lg) {
      
          $ses_id = session_id();
      
          $query  = $this->db->prepare("UPDATE `visitors` SET select_lang=? WHERE session=? ");
          $query->bindValue(1, $lg);
      
          try {
              $query->execute();
      
      
          } catch(PDOException $e){
              die($e->getMessage());
          } 
          }
      

2 个答案:

答案 0 :(得分:0)

也许您可以将链接转到同一页面,最后使用GET变量,例如?lang=en。然后,创建一个在页面加载时检查该GET变量的函数,在其存在时更改数据库。

function changeLanguage() {
if(!isset($_GET['lang'])) return;
else {
    $query = $this->db->prepare("UPDATE visitors SET language = ? WHERE session = ?");
    $query->bindValue($_GET['lang'], session_id());
    try {   
        $query->execute();
    }
}

假设在您上面发布的示例代码之前发生,您已经创建的函数应该在页面完全加载之前获取新的数据库更改,这将以任何新语言加载页面。< / p>

答案 1 :(得分:0)

PHP脚本早期:

if ( isset($_GET['newlang']) ) {
    $pages->ChangeLang($_GET['newlang']);
}

public function ChangeLang($lg) {

    $ses_id = session_id();

    $query  = $this->db->prepare("UPDATE `visitors` SET select_lang=? WHERE session=? ");
    $query->bindValue(1, $lg);
    $query->bindValue(2, $ses_id);

    try {
        $query->execute();


    } catch(PDOException $e){
        die($e->getMessage());
    } 
}

旗帜链接:

<li><a href="?newlang='id'"><img src="/images/flags/id.png"></a></li>