2013-12-11 4 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

SQL 쿼리에서 이것을 확인하기 위해'WHERE'를 사용하지 않은 이유는 무엇입니까? –

답변

0

는 난 당신이 접근 방식은 지저분한 조금 이렇게, 대신 DB의 번역 파일을 사용하는 것입니다 것 같아요 :

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'; 

장점은 모든 언어에 대해 여러 페이지가 필요하지 않으며 업데이트하기가 쉽습니다. 기본값을 reguarding 설정하지 않으면 $ _GET [ 'page']를 'EN'으로 설정할 수 있습니다.

관련 문제