2013-12-11 2 views
-1

Я пытаюсь сделать сайт на разных языках, и я получаю эту информацию из базы данных. Пока у меня есть два языка: английский и голландский.Пока петля в переключатель в PHP?

Что я хотел бы сделать, это получить все возможности языка и поместить это в переключатель. Поэтому, если люди нажмут, например, на эту ссылку: index.php? Page = NL, они получат голландский перевод страницы.

Так что это код, который я использую. Он работает до сих пор, но показывает, что я думаю, что опция языка и опция по умолчанию. Потому что, когда я удаляю по умолчанию, я получаю только код.

<div id="content"> 
    <?php 
    //Retrieve languages 
    $querySwitchLang = "SELECT * FROM languages"; 
    $resultSwitchLang = mysql_query($querySwitchLang); 
    ?> 
    <?php 
    while($rowSwitchLang = mysql_fetch_array($resultSwitchLang)){ 
     switch($page){ 
      case $rowSwitchLang['langCode']:include('page.php');break; 
      default: include('pageDefault.php'); 
      break; 
     } 
    } 
    ?> 
    </div> 

Так на самом деле я хотел, чтобы это так, потому что теперь он работает заявления переключателя столько раз, сколько есть языки, я думаю:

<div id="content"> 
    <?php 
    //Retrieve languages 
    $querySwitchLang = "SELECT * FROM languages"; 
    $resultSwitchLang = mysql_query($querySwitchLang); 
    ?> 
    <?php 
    include('functions.php'); 

     switch($page){ 
         while($rowSwitchLang = mysql_fetch_array($resultSwitchLang)){ 
      case $rowSwitchLang['langCode']:include('page.php');break; 
         } 
      default: include('pageDefault.php'); 
      break; 

    } 
    ?> 
    </div> 

Но это не работает, потому что тогда я буду получите эту ошибку:

Parse error: syntax error, unexpected 'while' (T_WHILE), expecting case (T_CASE) or default (T_DEFAULT) or '}' in C:\wamp\www\glimpler\index.php on line 6 

Я не могу понять, как решить эту проблему.

+0

Невозможно. Одна работа вокруг была бы поставить ваш цикл в функцию, а затем вызвать это для вашего дела. –

+0

Почему вам нужен цикл для каждого языка, когда вы включаете одну и ту же страницу каждый раз? – Novocaine

+0

Любые причины не использовать 'WHERE' для проверки этого внутри вашего SQL-запроса? –

ответ

0

я думаю, что вы подход немного неаккуратно, чтобы использовать файл для перевода вместо дб, как это:

NL.php

<?php 
     return [ 
     'welcome' =>'welkom', 
     'goodbye' =>'afscheid' 
     ]; 

затем в индексе

$translationFile =$_GET['page'].'.php'; 
if(file_exists(translationFile)){ 
    $language = include(translationFile); 
} 
else{ 
die("Couldn't find translation file. Page Terminated!"); 
} 

а затем просто эхо ваш перевод.

echo $language['welcome'] . ' USER'; 

Преимущество не имеет нескольких страниц для каждого языка и облегчает их обновление. По умолчанию вы можете просто установить $ _GET ['page'] в 'EN', если он не установлен.

Смежные вопросы