Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] zmiana języka
Forum PHP.pl > Forum > Przedszkole
marian84
Witam! na wstępie przepraszam ze zawracam glowe i wiem że w sieci jest wiele art zwiazanych z jezykiem ale te ktore zalazlem niestety nie dzialaly lub nie potrafilem ich dodac do swojego kodu.

a teraz wytlumacze co i jak

baza

id | temat_pl | temat_en | tresc_pl | tresc_en

Jak przy takies strukturze zrobić by po wyborze linku pl czytalo z _pl a po wyborze en z _en??

dobrze by bylo jakby po kliknieciu raz w jezyk ciagle czytalo tylko z _en lub _pl
ArekJ
Przekazuj metodą GEt language=pl/en a potem sprawdzaj IF'em jaki jest wybrany język.

EDIT: Jak ma ciągle czytać w tym samym języku to zrób to na sesjach.
isso
no tak... i to chyba niezbyt duzy problem... przy generowaniu zapytania robisz wcześniej awrunek... i wtedy albo zapytanie jest np.

Kod
"SELECT id, temat".$zmienna_jezyka.", tresc".$zmienna_jezyka." FROM bla bla ..."
mls
Zapisz wybrany kod języka do zmiennej i przy wyświetlaniu użyj np.:
  1. <?php
  2. $tytul = $artykul['temat_' . $kod_jezyka];
  3. $tresc = $artykul['tresc_' . $kod_jezyka];
  4. ?>

gdzie $artykul to wiersz z bazy danych.
Lub w zapytaniu SQL:
  1. <?php
  2. $sql = "SELECT *, temat_" . $kod_jezyka . " AS temat, tresc_" . $kod_jezyka . " AS tresc FROM (...)";
  3. ?>
marian84
Cytat(ArekJ @ 11.02.2009, 21:38:42 ) *
...
EDIT: Jak ma ciągle czytać w tym samym języku to zrób to na sesjach.


Kod
session_start();
   if(isset($_GET['lang'])){
       if($_GET['lang']=='en'){
           $_SESSION['lang']='en';
       }elseif($_GET['lang']=='pl'){
           $_SESSION['lang']='pl';
       }
      
   }else{
       $_SESSION['lang']='pl';
   }


później odwołuję sie w funkcjach do wartosci sesji np.

Kod
$lang=$_SESSION['lang'];
  
   if($lang=='pl'){
       echo'polski';
   }else{
       echo'angielski';
   }


Wszystko działa na ff, IE7 i operze ale na IE6 wyswietla pustą stronę, a dopiero po odświeżeniu wyswietla stronę.

W czym może być problem?

//////////////////////////////////////////////////

Naprawdę nikt nie spotkał sie z takim problem?


Błąd pojawia sie tylko w jednym miejscu.

Więc jeszcze raz...

Na poczatku indeksu:
Kod
session_start();
   session_name('lang');
   global $lang;
  
   if($_GET['lang']=='en'){
       $_SESSION['lang']='en';
   }elseif($_GET['lang']=='pl'){
       $_SESSION['lang']='pl';
   }


W zawartości pliku sprawdzam co ma być wyświetlone

Kod
...
  
   if($_GET['id']){
        strony($_GET['id']);
   }elseif(isset($_GET['aktualnosci'])){
        include('akcje/news.php');
   }elseif($_GET['ida']){
       include('akcje/akt.php');
   }
  
   ....


zmiana stron działa ok, zmiana języka tez

Błąd pojawia sie w aktualnosciach.

Ładduje się plik news.php

Kod
(...) // pobieranie danych itd
  
   $lang=$_SESSION['lang'];
  
   while($row = mysql_fetch_assoc($zapytanie)) {
  
                   if($lang=='en'){
                       $temat=$row['temat_en'];
                       $zajawka=$row['zajawka_en'];
                       $wiecej='more &raquo;';
                   }else{
                       $temat=$row['temat'];
                       $zajawka=$row['zajawka'];
                       $wiecej='więcej &raquo;';
                   }
                   echo'<table border="0" width="503px">';
                       echo'<tr><td class="temat"><a href="index.php?ida='.$row['id'].'">'.$temat.'</a></td></tr>';
                       echo'<tr><td class="zajawka">'.$zajawka.'</td></tr>';
                       echo'<tr><td class="wiecej" align="right"><a href="index.php?ida='.$row['id'].'">'.$wiecej.'</a></td></tr>';
                   echo'</table>';
   }


Teraz chcąc wybrać którąś z aktualnosci klikam w link i... pod FF jest ok, Opera tez, IE7 również. Problem pojawia sie pod IE 6 (i to tez k...a nie pod każdym)

Wyświetla się NIC, nie zmienia sie nawet adres na pasku adresu. Dopiero po odświeżeniu strony ładuje się jej zawartość.

Flaki pliku akt.php wyglądają następująco:

Kod
<?
       $lang=$_SESSION['lang'];
      
       echo'<div id="aktualnosci">';
       $zap=mysql_query('SELECT * FROM tresci WHERE id="'.$_GET['ida'].'"');
       $row=mysql_fetch_array($zap);
      
       if($lang=='en'){
           $temat=$row['temat_en'];
           $tresc=$row['tresc_en'];
           $wroc='&laquo; back';
       }else{
           $temat=$row['temat'];
           $tresc=$row['tresc'];
           $wroc='&laquo; cofnij';
       }    
          
           echo'<h1>'.$temat.'</h1>';
           echo'<div class="tresc_akt">';
               echo $tresc;
           echo'</div>';
           echo'<div class="back"><a href="index.php?aktualnosci">'.$wroc.'</a></div>';
       echo'</div>';
   ?>


Link do strony:

http://zambi.org/nowa_strona/index.php?aktualnosci

Proszę o pomoc.
erix
  1. <?php
  2.   session_name('lang');
  3. ?>

Cytat
session_name() for every request (and before session_start() or session_register() are called).

to swoją drogą.

Ale czemu zmieniasz nazwę sesji...?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.